Ask Slashdot: What Language Should a Former Coder Dig Into?
An anonymous reader writes "I was a consultant for nearly 20 years and I got into projects where I had to work with a huge variety of software, operating systems, hardware, programming languages, and other assorted technologies. After retiring from that I have spent the last 10 years in a completely different sector. Now I find myself wanting to really focus on coding for personal reasons. You can imagine how out-of-touch I am since I never really was more than a hack to begin with. I can learn syntax and basics in a weekend, question is, what Language should I become native to? Never liked anything 'lower-level' than C, and I don't have the funds to 'buy' my development environment....help me Slashdot, you're my only hope."
n/t
"...help me Slashdot, you're my only hope."
You're screwed.
Forgive me for sounding rude, but to give you advice about what languages to get into, without giving even a hint what you're trying to create, is ridiculous.
Languages have evolved around their purpose. No purpose, no advice.
It's clean, elegant. Has consistent, well thought out syntax, is easy to debug (PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM) and is secure by default.
Best all-around: Python
Best for enterprise work: Java
Best for OS dev, e.g. device drivers: C
Best for system programming above OS, e.g. database internals: C++
Best for game programming: C++
Best for financial apps: C#
Best social networking startup interview: Ruby
Best for web dev: JavaScript
Best for bioinformatics: R, SAS
C and Java are the leading languages by a lot of measures right now. C will easily get you a job, you'll get back into it easily because you already know it, but you'll have to learn how to write code without leaking. Java is a fine language, but the number of enterprise libraries you have to learn can feel overwhelming. C# can get you a job if you want live in Microsoft world, and it's designed to be easy to pick up.
Really I'd say focus on what you want to do, then learn what language is popular in that area. Embedded? Learn C. Enterprise code? Learn Java. Games? C++. If you want to do general scripting, learn Python. If you want to write web apps, focus on Javascript, and learn a bit of Java/Python/PHP/Ruby (choose your favorite, Ruby is fun) to figure out the server side. Choose one database (oracle/MySQL/Postresql) to start out with, the knowledge will transfer to the others. Figure out what you want first, then choose a language that will support it.
"First they came for the slanderers and i said nothing."
I'm pretty much in the same boat as you, trying to revive a career that I once had but spent the last 15 years removed from coding. I looked around a lot and asked a bunch of people stuff. I have chosen Ruby because it looks like it's strong, gaining popularity, and has a big demand in jobs right now. It seems everybody and their brother already knows Python and the PHP framework, so you'll get a lot of 'be one of us' posts, but I recommend you figure out your goal, besides just personal hobby stuff which you can do in any language. Looking for employ-ability? You might find what I did, that Ruby, then Ruby on Rails will be a good fit.
in a completely different sector
OP said he [she?] has been in a completely different sector. Who knows what the technology is like there?
--
Yes. C# (VB.NET and C++ as well) has the free Visual Studio Express from Microsoft. While it doesn't officially support Python, it does become a very good Python IDE by using the equally free (and unimaginatively named) Python Tools for Visual Studio.
You say you can learn the syntax and basics of a language in a weekend. You're probably right. What you can't learn in a weekend is the standard API that comes with each language, defining all the standard objects and methods you'll want to use. That's probably the biggest change in the last 10 years. What you want to look for in a language is one that makes it easy to do stuff. What you want to look for in an API is good, usable documentation.
Javascript, for one, is a pretty bad language with hardly any standard API (aside from the browser's DOM). Fortunately, there are free add-ons, like jQuery, that add both language features and an API.
Java was one of the first languages with a large standard API. It has nice documentation, but the language is barely better than C/C++. An ecosystem has developed around Java bytecode, however: languages like JRuby and JPython can run like Java and interface with Java code. There's also "groovy", a "modern" language built entirely around Java bytecode.
The major competing bytecode standard is .NET, from Microsoft. They offer free-with-certain-restrictions .NET compilers for C/C++, C#, Visual Basic, and more. All of them can use the .NET API which is documented on the MSDN site. I never found the documentation quite as nice as Java's; but it's usable. Again, other languages have been made to run .NET bytecode: IronRuby and IronPython.
Python and Ruby outside the bytecode versions have their own APIs. If you liked Perl and like object-oriented programming you'll love Ruby.
Finally, if you find you can't stand all this object-oriented programming, try PHP. It's used widely for making dynamic web sites, and has a nice, large API with documentation; but it rarely uses user-defined objects.
(T>t && O(n)--) == sqrt(666)
Pragmatic Programmers published "Seven Languages in Seven Weeks" last year. I liked the book and would recommend it for any one who wanted a taste of today's interesting languages. Over the past year, I've seen that some readers were disappointed at the language choices and some didn't like the way the author, Bruce A. Tate, selected a movie characters as shorthand descriptions for the languages' feels.
The languages: Ruby, IO, Prolog, Scala, Erlang, Clojure, and Haskell. As for development and runtime environments, these can be had and installed at no cost.
If I was asked to name the one language that is widely used, has immediate practicality, and the runtime is already installed on your computer, I'd pick javascript, which runs in the browser. Get a browser that has a console for reviewing javascript errors. The java part of its name is deceptive. It is quite different than java, but the 90s Netscape folks figured that that imprecision would help adoption. I'm not one to rue days, but that one could a candidate.
You didn't mention what languages you were familiar with from your consulting days. One question to be asked is whether you want to look at a language that is familiar but advanced the the ones you did work with or would you prefer to explore the other streams of language design. If you wish to write personal application and utilities, there is likely to be a language tied to your platform. For Windows, it's C#. For OS X, Objective-C. For Linux, you will have to pick a gui framework and its language.
Because they don't want to say "I'm a noobie, what should I code in?"
If he was a seasoned programmer, he would have included little tidbits like what he intended to do, and what his experience was.
Web page? PHP.
High load gaming? a flavor of C.
3d gaming without reinventing the engine? Whatever that engine needs.
Phone apps? Java.
Simplify how his Linux machine boots? Bash.
Some new hardware that he just invented? Probably assembly.
"Hello World"? Any language he'd like.
I started real development with Perl. I've mostly moved away from it, but there are still a few things that I need the Perl modules to do, that are difficult to find good interfaces anywhere else.
Serious? Seriousness is well above my pay grade.
Nonsense, you are talking out of your ass. huge projects have been done in all the languages you name. there are web pages devoted to list huge projects in each one
As I noted in my post I never was a seasoned programmer, I was a total hack, aw hell you guys prolly don't even know what a hack is, you probably think I had an area of expertise too. I HACKED SHIT TOGETHER and got PAID! I learned whatever I needed to know to accomplish what others couldn't. I probably forgot more about the languages I've used than most 'experts' know of any single language. I couldn't possibly have listed all the languages and technologies I have done work with. But here's a sample.... BASIC, C, Pascal, Ada, COBOL, Perl, CGI, vbscript/asp, scripting (*ux shells mostly), VB, most recently PHP. I am only interested in general purpose work, utilities, hell I don't even know yet exactly where I will go with this. I was hoping for some informed guidance and expert advice but maybe slashdot isn't what it used to be...
"Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.."
I'm genuinely sorry. Reminds me of school days, where some idiot would take my joke, make it louder and worse, and everyone would laugh.
Now that's me.
--
Right on! You are totally correct about all languages being equal. That's why all our largest projects are done in COBOL. Since that's the only language we're comfortable with, it just makes sense to use it for everything from throwaway scripts to enterprise software and shrink-wrapped products.
You must be one of the Ruby nuts that the GP warned about. I've had to interview a bunch of them recently. Apparently they can't find any work using Ruby, so they've been applying for the C++ jobs that I have open at the moment. I seriously can't believe how some of them behave. One of the first guys I interviewed wouldn't take off his fedora, wouldn't shake hands with anyone, and openly admitted that he wouldn't work with any of our female developers and testers for some reason. Another guy refused to use C++, while interviewing for a C++ programmer position! During his interview, we asked him to write some small sample programs in C++, but he turned in some Ruby code, and told us it was "more efficient" or some bullshit like that. The rest usually don't even get that far. Some of them don't even know what the STL or Boost are! I could easily see these guys considering a 4,000-5,000 line web app as being a "huge project".
Definitely agreed here. There is plenty of movement away from Java towards C#. Microsoft is working hard to be fair to the community and let the language become a real standard without severe restriction.
Also, C# lets you develop on a wide array of platforms, Windows, WP7/8, iOS (Mono), OSX (Mono), Android (Mono), Linux (Mono again).
Versus Java, C# affords a better opportunity to stay within one language for the entirety of a program. Higher performance doesn't mix with Java, video games for example, frequently need modules coded in C/C++ in order to achieve reasonable performance levels. Some of the Java -> C# porting has shown massive performance gains.
Unless Oracle changes their policies regarding Java, the language is likely to languish as it has for the past several years.
I'm not a fan of Python like others. I've always felt the language doesn't encourage the best coding practices because of the ease and lax style. I will give it credit as probably one of the faster to implement languages for one-off rapid application development. C# strikes me a better language to continue your existing knowledge while modernizing and have a path forward.
There are no Java projects that weren't huge. Even the trivial ones.
I disagree about the time spent debugging - usually it is pretty straightforward. However, the problem is that users wind up hitting code paths that your tests missed and compilers could have warned you about. Either that, or you actually spend 10x writing tests than writing code, which means that using the language is no longer a help but a waste of time.
I've found that Objective C is one of the best languages that has an intermediate between the dynamicism of Ruby and the type-checking of Java. It allows you to go uber-meta when you want to, but it does a lot of the static checking that is left out elsewhere.
Engineering and the Ultimate
But what has any of that got to do with coding for 'personal reasons', eg: a retirement hobby? - My 78yo dad has just discovered Python and PyGame and loves it, he is a game development team of one and the only cost involved is his time. Commercial development processes are meaningless.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Okay, I almost feel like you are some evil pointy-haired-boss pretending to be an engineer so that you can try to speak as "one of us" and convince us to commoditize ourselves out of existence. Like somehow you think that programming is hard only because engineers are stupid and haven't bothered to make it easy, and you think that posing as a coder on Slashdot and whining about it will get us off our asses.
I'll skip the long drawn-out explanation for how ridiculous you are and just state that what you are asking for is not possible, the Turing Machine isn't just some paradigm that we can toss out the window because you don't like it, and that the industry is already churning out too many retards that only know how to do their job by screwing together buzzword frameworks without you helping us along.