Go | New | Find | Notify | Tools | Reply |
Baroque Bloke |
I use SPITBOL to write my programs. That’s not going to change. SPITBOL is an ancient, but wonderful, language that few know of today, and it fits my way of thinking. But it has limited facilities for interaction with the OS (macOS in my case). So I also use scripting languages. I’ve used ‘bash’ as my terminal shell for 30 years, so no surprise that my scripting language is bash. Very direct. But bash isn’t a great language, to put it politely, so I’m looking for something better. Years ago I was reasonably proficient with ‘perl’, so reacquainting myself with perl is one possibility. But I’d like to know of other options. One option that I wonder about is ‘python’. I’ve never written a single program in python, but I know that it’s immensely popular nowadays. I have experience with many programming languages, including some obscure ones, so I’m sure that I could learn python. So, two questions: Question #1: Is python a viable option as a scripting language? Question #2: Suggestions for a scripting language other than perl or python? BTW – I suppose that ‘zsh’ scripting might be better than bash scripting (I don’t know). But even if it is I’d likely stick with bash for my terminal shell. Serious about crackers | ||
|
Optimistic Cynic |
Yes Lots of programmers sing the praises of Ruby. Not really a scripting language, but interpretive JIT compiled. I'm a little surprised that you haven't felt the siren song of JavaScript. And, of course, there is also the formidable Lisp/Scheme world. I'm a csh/tcsh guy myself, but nothing wrong with bash once you get used to the syntax. For utility working with various assemblages of data I usually turn first to awk, sed, and their friends before tackling an actual procedural script. WRT to Python, I first got acquainted with hands-on Python by having to maintain a Mailman mailing list manager instance. This, to my mind, was a far more gracious introduction than manuals/tutorials, etc. Look for a substantial piece of software written in the language that interests you, and start hacking on the code base. | |||
|
Member |
Python is definitely a viable option. | |||
|
member |
The current default shell on MacOS is zsh (since Catalina). You can, of course, change it back to bash. I do not program, other than extensive shell scripts, but I understand python is an excellent choice. I have occasionally dabbled with editing existing python scripts for my needs, and the language appears fairly straightforward. As of Monterey 12.3, python is no longer included in macOS, but you can easily install the latest version. When in doubt, mumble | |||
|
Member |
Read architect's response to your OP post, he's exactly right on everything. I started out with Perl, wrote a large Deverlopers' code compilation and dev/test/prod deployment tool using it, and it works, but later went in to maintain it, and found it a little painful because though the syntax is extremely powerful, it can be confusing unless you use it all the time. After that I tried Python on another software engineer's recommendation, and I've been hooked on in since. It's just as powerful and flexible as Perl, and has LOTS of support and free downloadable plug-ins, but is orders of magnitude easier to read and code, my guess is you'll love it. And it talks to the OS using multiple techniques, and all those techniques are pretty elegant, and not frustrating or confusing at all, you won't need to write your own wrapper to do so, unless you want to. I didn't need to and my scripts talk to the opsys and other systems and utilities a LOT, since I'm a server side guy. I've never known anyone to abandon Python for something easier unless their use case needed a different language. So for all kinds of general and special use cases, you should give it a try. I've heard good stuff about Ruby as well, but I've been so tickled w/Python I never bothered to try it. Lover of the US Constitution Wile E. Coyote School of DIY Disaster | |||
|
Serenity now! |
I'm a software engineer by day, university instructor by night. I recently started teaching a beginning programming course using python, and I have to say, I am VERY impressed with what python can do, and how dead-nuts easy it is to use. In python, I can have a semi-complicated app running in a fraction of the time it would take to do in C#. It's a great language! Ladies and gentlemen, take my advice - pull down your pants and slide on the ice. ʘ ͜ʖ ʘ | |||
|
Caught in a loop |
I work in cyber security. All of our daily/weekly scripts are written in Python. I'd say that makes it pretty viable. "In order to understand recursion, you must first learn the principle of recursion." | |||
|
Baroque Bloke |
Thanks for the informative and thoughtful replies. I'm thinking that python is in my future. But just to be clear, I present a simple bash scrip, 'find_includes', below. In this case bash is perfectly adequate, doing the job simply and cleanly. Would a python script do this easily too? == the script ====================================== #! /bin/bash # $Id: find_includes,v 1.23 2022/11/23 23:06:05 doug Exp $ #################################################### # This script lists paths to all files in and below # ~/Documents that "INCLUDE" the arguement function. # Paths that have '/RCS/' are excluded. # Paths that have '/Funcs/' are excluded. # Example: bash> find_instance commafy >.hits #################################################### pushd ~/Documents >/dev/null egrep -I -R \ --exclude-dir 'RCS' \ --exclude-dir 'Funcs' \ . -e"^-INCLUDE 'Funcs/$1.fun'" 2>/dev/null \ | grep -v 'Functions/functions' popd >/dev/null =============================================== == An example invocation =========================== bash{5}> find_includes dollarfy ./Stuff/BWM/weekday.sbl:-INCLUDE 'Funcs/dollarfy.fun' ./Stuff/Spitbol/Lib/Functions/Tests/dollarfy.sbl:-INCLUDE 'Funcs/dollarfy.fun' bash{6}> =============================================== Serious about crackers | |||
|
Member |
IMHO, probably not, in this example. I started with Bourne shell and went to ksh, bash, tcl, perl, python, ruby, and even PHP for system scripting. Yep, PHP can be run as a local script without web things. No, it's not the greatest at that. That's another story. I say probably not because egrep is already pretty optimized for reading and string matching, so it will be pretty fast. At least, until it starts making sense to multi-thread/process to quickly chew through a large number of files. I guess we'd need to code golf it all to find out for sure. -- I always prefer reality when I can figure out what it is. JALLEN 10/18/18 https://sigforum.com/eve/forum...610094844#7610094844 | |||
|
Member |
Interesting observation. The development team I manage / code (we basically write APIs that do tons of db reads-writes) has twice evaluated Python and rejected it in favor of C#. To be fair, our apps do fall into the complicated range. Maybe we should take a 3rd look at Python? | |||
|
Nullus Anxietas |
Not really. I write all my scripts in sh, bash, or Perl. I haven't tried Python for one simple reason: I find the idea of scope being determined by leading whitespace to be about as brain-dead an idea as ever I've heard. By "not tried" what I mean is one time I wrote a simple "Hello, World!" type Python script, just to see, and thought "Just as I thought. Nope." For clarification: C# is not a scripting language. It's more an alternative to Java, C++, or Objective-C. "America is at that awkward stage. It's too late to work within the system,,,, but too early to shoot the bastards." -- Claire Wolfe "If we let things terrify us, life will not be worth living." -- Seneca the Younger, Roman Stoic philosopher | |||
|
Member |
Just for giggles, some unoptimized python. Pipe Smoker can speed test it. And, re-format it, since the site will eat all the leading whitespaces. ================================== #!/usr/bin/env python3 import re import sys import os searchd = os.path.expanduser("~") + "/Documents" for dir, subdirs, files in os.walk(searchd): for file in files: if not file.startswith('.'): tgt = os.path.join(dir,file) for line in open(tgt, 'r'): if re.search(sys.argv[1], line): print(tgt + ": " + line) if 'RCS' in subdirs: subdirs.remove('RCS') if 'Funcs' in subdirs: subdirs.remove('Funcs') -- I always prefer reality when I can figure out what it is. JALLEN 10/18/18 https://sigforum.com/eve/forum...610094844#7610094844 | |||
|
Nullus Anxietas |
Doesn't SF's web forum software support code tags? Testing... #!/usr/bin/perl for($x = 1; $x <= 10; ++$x) { print "Hello, World! ($x)\n"; } It does. Thought so. ETA: As far as speed-testing the code goes: Wouldn't matter what he wrote it in. The time is all going to be in disk operations. "America is at that awkward stage. It's too late to work within the system,,,, but too early to shoot the bastards." -- Claire Wolfe "If we let things terrify us, life will not be worth living." -- Seneca the Younger, Roman Stoic philosopher | |||
|
Member |
Re-formatted by post, thanks for this! -- I always prefer reality when I can figure out what it is. JALLEN 10/18/18 https://sigforum.com/eve/forum...610094844#7610094844 | |||
|
Serenity now! |
For just playing around, I think python does a great job of insulating the programmer from needing to understand too much about the date structures etc. It's a great first language to learn. It's also great for whipping up a quick program to test an idea etc. But for enterprise-level applications, I don't think python would be my first or second choice. Ladies and gentlemen, take my advice - pull down your pants and slide on the ice. ʘ ͜ʖ ʘ | |||
|
Baroque Bloke |
Thanks much SigJacket. I’ll try that and report the result. But it might be a while because my new MacBook, running Big Sur, doesn’t have python. (Tim Cook is one lazy bastard.) I’ll swear, SIGforum is a better resource for questions such as this one than Stack Overflow! Serious about crackers | |||
|
Member |
I get my python3 (and other things, like Bash5) from Homebrew. -- I always prefer reality when I can figure out what it is. JALLEN 10/18/18 https://sigforum.com/eve/forum...610094844#7610094844 | |||
|
member |
I use Homebrew for things that have a lot of dependencies, like unbound and rsyslog. But if python is all you need, the Python project has a 64bit universal binary installer for macOS (Intel and/or Mac silicon), latest version, of course. When in doubt, mumble | |||
|
Baroque Bloke |
About half way through this thread I had become nearly certain that I ought to learn python. But now I’ve toggled back, thinking that I’ll stick with bash for my scripting language. Possibly renewing my former acquaintance with perl. Here’s what toggled me back… First, ensigmatic’s post: “I write all my scripts in sh, bash, or Perl. …… I haven't tried Python for one simple reason: I find the idea of scope being determined by leading whitespace to be about as brain-dead an idea as ever I've heard. …” So ensigmatic had also considered python but continues to use “sh, bash, or Perl” for scripting. He’s already trod the path I was treading, and I respect his judgment and experience. And “scope being determined by leading whitespace” seems bizarre to me too. Second, SigJacket did a wonderful thing for me: he wrote a python script that was a transcription of my bash script example. That provided a direct python vs. bash comparison. Perfect! I thank you so much SigJacket! Then, looking at the python and bash versions of that script, I’m thinking that the bash looks significantly better: not only more concise, but also more direct. In my OP of this thread I rather maligned bash. Sorry for that bash. I apologize. Serious about crackers | |||
|
Powered by Social Strata |
Please Wait. Your request is being processed... |