

Ask Slashdot: What Language Should a Former Coder Dig Into? 530
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."
Python (Score:5, Insightful)
n/t
I agree - Python (Score:2)
Python and ActiveState's Komodo Edit (Score:3)
I agree with Python, and be sure to check out ActiveStates's Komodo Edit [activestate.com] as your development environment.
Re: (Score:2)
Comment removed (Score:4, Interesting)
Re: (Score:3)
Disagree. Python is a great language, but it's unlike the vast majority of other languages out there.
In what sense? It doesn't use curly braces based syntax, but who cares about syntax? Semantically, though, it's a pretty nice OOP language with all the usual bells and whistles you see elsewhere, so moving from it to something else later will not be a problem.
Re: (Score:3)
It may have been the original intent (make something like Perl, but with saner syntax), but today syntax is not really the most attractive part of Python.
Re: (Score:3)
Not in the conventional sense of 'copy.' In python, as opposed to C, there is no copy made of the contents of the variable at a new memory location. Instead var0 = var1 merely binds the name var1 to the same location (or object) as var0.
Not really, no. Every Python variable is bound to its own separate location, and assignment copies the value of one location to another. A location, in turn, always holds a reference to an object, but that is another different level of indirection. This becomes evident once you use closures (nested functions) and "nonlocal" (in Python 3). If every assignment were rebinding the name to a different object, then the variable captured by a closure would always retain the original object, having captured the ori
Re: (Score:3)
Correct me if I'm wrong, but I was under the impression that it (ie optimising by caching/reusing int objects below some arbitrary value) was an implementation detail that shouldn't be relied on to behave consistently between different imple
Re:Python (Score:5, Insightful)
Not flaming, but how exactly do you reckon that Javascript is closer to Java than Python is? I'm curious...
Apart from completely superficial stuff like having braces and semicolons that is.
Python and Java have classical OO rather than the prototypical OO Javascript uses. And although Python is not statically typed like Java is, it is strongly typed like Java is. Javascript is neither. Python has an extensive standard library and set of builtin objects/functionality (like Java), and Javascript doesn't.
This isn't a criticism of Javascript - but it is further away from most other common languages than Python is and requires a very different mindset than C# or Java. Javascript is a sort of hybrid functional language all by itself with an unusual OO design and unusual scoping rules.
Personally I'd probably put Python somewhere between Java and Javascript on most arbitrary sets of language style continuums. In fact I reckon Javascript and Java seem almost like polar opposites in a lot of ways.
Re: (Score:3, Informative)
Re: (Score:3)
Beware of dynamic languages for large projects. (Score:3, Insightful)
Python, Ruby, Perl and their ilk are very useful for throw-away scripts, and even small applications. But beware if you're thinking of using any dynamic language for anything beyond a small application, especially if there'll be more than one or two developers working on it at any given time.
When working on larger projects, especially involving many developers, any time saved due to the capabilities of dynamic languages will be lost debugging problems that the compiler would've caught when using Java, C#, o
Re:Beware of dynamic languages for large projects. (Score:5, Informative)
Re:Beware of dynamic languages for large projects. (Score:5, Funny)
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.
Re: (Score:3)
With some creativity and possibly a psychological condition, you should be able to come up with a CICS layer that renders to GTK. :-)
Re:Beware of dynamic languages for large projects. (Score:5, Funny)
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".
Re: (Score:2)
Well; the remark was about Python. Python's real weakness is that it's unsuitable for real multi-threading. And that's entirely Guido's fault.
Imagine yourself on a modern server with 2x8=16 total cores, and finding out to your crushing disappointment what the phrase "Python is not re-entrant" actually means.
C//
Re: (Score:3, Interesting)
I disagree.
I've done large multi-threaded systems with python. It works great.
The only problem with "python is not reentrant" is if you are calling a module or extension written in some other language AND that extension needs to call back into python.
That may be a problem in some applications, but has not been for me.
Re:Beware of dynamic languages for large projects. (Score:5, Funny)
There are no Java projects that weren't huge. Even the trivial ones.
Re:Beware of dynamic languages for large projects. (Score:5, Interesting)
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.
Re:Beware of dynamic languages for large projects. (Score:5, Interesting)
Re: (Score:3)
Re: (Score:3)
1 and or 20 million records is absolute child's play. I recently banged out a php project on codeigniter hitting a db with 20 billion rows. This while having sub second response on the web front end. It is all about designing a system to handle those requirements not the language. I could have just as easily used python, ruby, java, perl and the results would have been the same.
Re: (Score:3)
Sure, tell that to twitter or YouTube. or many, many other large web sites. Hint: they're not using java. Or C. or Go.
A substantial chunk [google.com] of the Youtube backend is written in Go.
Re: (Score:3)
Do you have any idea how a compiler actually works? Have you ever actually used a statically typed language? I think it's unlikely, otherwise you'd realize that he's talking straight.
Change an interface in Java, and the compiler mandates you change all the objects that implement it. You don't end up with a missing method down the hierarchy. That's just one frustration of many with dynamic languages.
The number of times the type system has caught a syntax error that occurred _because_ of a logical error i
Re:Why I Hate All Programming Languages (Score:5, Insightful)
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.
Re: (Score:3)
in addition to being inherently sequential, timing is not an inherent part of the model
"inherently sequential" solves the timing problem. There are no concurrent operations in a Turing machine, and hence, no concurrency problem. The Turing model wasn't intended nor is it used to model parallel computing. Nor was it intended to be a viable computational language. It is merely a theoretical approach for putting bounds on how long it takes programs to do tasks.
The computer industry is facing a major problem known as the parallel programming crisis.
Nonsense. The problems of parallel computing have been solved in a number of ways and those ways work just fine.
The real difference be
Re: (Score:3)
Maybe it's time for them to gracefully retire and let a new generation have a turn at reinventing the wheel.
There, Fixed That For You
Re:Why I Hate All Programming Languages (Score:4, Insightful)
Your COSA thing seems to be describing exactly what every DSP language has already been doing since the dawn of time (take a look at SynthEdit, Max/MSP, SynthMaker for some very visual examples).
DSP languages are fantastic for parallel execution tasks such as... well... DSP. They absolutely suck at procedural tasks or complex flow control.
Re: (Score:3)
I've used Anjuta, Eclipse, MonoDevelop and Netbeans. I definitely like Visual Studios the best. I've also used a couple non/semi-IDE editors (Emacs, Gedit, nano)...
The C++ compiler has had some interesting (read, aggravating/unpleasant) quirks, but the IDE itself is great. I also tend to stick with vanilla C, and avoid the C compiler issue...
Regarding the question in TFS...
I would recommend looking at C, C# and Python. I find for almost any problem, one of the three tends to be the best solution, or close t
Brainf*ck (Score:4, Informative)
en.wikipedia.org/wiki/Brainfuck
Re: (Score:2)
I like the way you censored yourself in the subject and then were forced not to in the URL.
Re: (Score:2)
Yep. I thought that was funny too.
Re:Brainf*ck (Score:5, Interesting)
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.
Forced? (Score:3)
Re: (Score:2)
en.wikipedia.org/wiki/Brainfuck
Oh man. And I thought Markov Algorithms [wikipedia.org] were hell to read.
re (Score:5, Funny)
"...help me Slashdot, you're my only hope."
You're screwed.
Re: (Score:2)
It's Princess Leia. OP thought to gain our most sincere recommendations by first forming a nerdish bond.
Instead, I just feel silly for knowing the reference :(
Re: (Score:2)
No, the purpose of the reference is A) to mock the epic futility of his quest in his advanced state of neurological senescence, and B) to sufficiently date himself that half the Facebook generation goes "huh" with the effect of doubling the signal to noise ratio on answers he can seriously consider pursuing.
Re: (Score:3)
Friggin Nerf Herders...
Re:Why do people ask questions like these? (Score:5, Funny)
in a completely different sector
OP said he [she?] has been in a completely different sector [wikipedia.org]. Who knows what the technology is like there?
Re:Why do people ask questions like these? (Score:5, Informative)
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.
Re:Why do people ask questions like these? (Score:5, Informative)
Re: (Score:3)
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.
It will come back. Start with some of the languages you worked with already. Which brings me to the rest of your post:
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.
That's actually a pretty respectable list, although I don't know how deep your experience goes with each. In any case, if I were you, I'd start with a project in mind, and then choose one of your past languages that fits it best. From there, your experience will grow.
Re: (Score:3)
Tell us what you want, and maybe someone will tell you how to get there. If you just want to hack together utilities, BASH is the way to go. But on the other hand, if you want to hack a graphics engine onto a neural network, you might want to hack in C++. But if you want to make simple GUI utilities, try C# (on Windows, QT anywhere else).
See? The answer changes drastically based on the question. If you didn't ask a good question, you won't get a go
Re: (Score:3)
Decide exactly what you want to do first, then decide on the most appropriate language to do it.
Having a problem to solve will help with two things - motivation when learning gets tough, and deciding on a language. There is no one true language which is best for everything. If you want to produce utilities for Linux or mac os, ruby, python, or even bash would be your best bet, though it does depend what for - for processing excel data I'd use csv export and ruby, for scripting adobe programs JavaScript, etc
Re:Why do people ask questions like these? (Score:4, Informative)
If you're looking to learn something new and general purpose, Python has a combination of decent docs (you can start with http://www.python.org/doc/ [python.org] , http://pleac.sourceforge.net/pleac_python/ [sourceforge.net] , and http://www.lightbird.net/py-by-example/ [lightbird.net] ), good libraries (see http://pypi.python.org/pypi [python.org] and https://github.com/languages/Python/most_watched [github.com] ) and all-around flexibility (all the regular system stuff, lots of microframeworks for web, scientific computing tools, 2d+3d graphics).
You may want to take a look at IPython ( http://ipython.org/ [ipython.org] ), Reinteract ( http://fishsoup.net/software/reinteract/ [fishsoup.net] ), and DreamPie ( http://dreampie.sourceforge.net/ [sourceforge.net] ) for some interactive shells/interpreters to play around with. I use vim for programming, but there are a number of IDEs. Of the ones I've tried, I thought IEP offered the most interesting tools: http://code.google.com/p/iep/ [google.com]
Probably the fastest/easiest way to learn (and learn if you like) Python is to go through Zed Shaw's book/exercises: http://learnpythonthehardway.org/ [learnpytho...ardway.org]
There's a lot of other stuff on the Python wiki: http://wiki.python.org/moin/BeginnersGuide/Programmers [python.org]
Slashdot definitely isn't what it used to be. For programming questions you may want to look at Stack Overflow or Quora. For general nerdly news, I find Hacker News, Techmeme, and The Verge tends to cover my bases better these days.
Development environment (Score:3)
Don't worry, I can't think of many languages that for which you need to 'buy' a development environment.
Want to do frontend stuff? JavaScript, etc... Your dev environment is a good JS debugger in a browser.
C/C++: Do those in Linux for best ease of use (compiler and debugger come with the OS)
Java: Eclipse, or IntelliJ's open source edition?
I think even C# can be developed with a free editor...
Re:Development environment (Score:5, Informative)
Your answer (Score:5, Insightful)
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.
Let me attempt a clearer question (Score:2)
Re: (Score:2)
As it was, so it is. I am aware of this, and I thought most would catch when I say 'hobby' and understand me to mean that I am interested in plain general purpose coding. Nothing too fancy or too buried in any particular vein like drivers/hardware, or mathematics etc.
I knew I should have said a little on that but, being my first post here, I wanted to keep it brief u know..
The GP alludes to the importance of a project as a starting point. (So did I, in another thread.) It sounds like you're not thinking about that just yet. You just want to get your feet wet, to see what programming can let you do, before deciding specifically what you want to do with it.
In that case, you could do worse than follow the advice many people are suggesting here: learn Python. It's flexible, popular, light on syntax, and useful for almost anything. A good choice for a programming student's fi
PHP (Score:5, Funny)
What do you want to hack? (Score:2)
What do you want to hack or work on? If you want to write Mac or iPhone apps, you should learn objective-c. If you want to do the web, then javascript. If you want something nice and general purpose and useful in various scenarios, Java's a good choice. If you want to dazzle yourself with interesting algorithms and programming techniques, try one of the computer science type favourites like Lisp, Scheme, ML or such.
For personal reasons? (Score:3)
If this is for your own, personal use, I can only recommend that you take a week or two (or a month, if you like) and try out as many new and interesting languages as you can, then decide for yourself which of them you liked best. There's literally dozens of languages people will recommend, and very few of them are going to be "wrong".
Some half-truths and prejudices (Score:5, Interesting)
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
Re: (Score:3)
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
Although Perl gives me a splitting headache, I think it deserves an honourable mention somewhere in this list (bioinformatics and web dev?) or maybe in a category of its own.
Also, some missing categories:
Best for numerical analysis and simulation: C/C++ (nowadays), Fortran (once upon a time, still has some holdouts)
Best for scientific visualization: Matlab (not free) or Octave (free), IDL (not free)
Best for mathematics: Mathematica (not free), Maple (not free), various freeware options
That's all I can think
Re:Some half-truths and prejudices (Score:5, Informative)
Best for numerical analysis and simulation: C/C++ (nowadays), Fortran (once upon a time, still has some holdouts)
Best for scientific visualization: Matlab (not free) or Octave (free), IDL (not free)
Python deserves some mention in both of these categories as well. Numpy/Scipy are outstanding tools which can easily replace Matlab and Octave. Namespace hierarchies and OO implementation aren't necessarily the highest priorities for simulation, but when they are, Python kicks the pants off Matlab. Pylab has also fit all of my needs for plotting, though I have never really used it for anything too serious and it still isn't Python3 compatible.
For numerical analysis and simulation, you can always write Python wrappers for your low-level C and Fortran libraries.
Another consideration to keep in mind for these types of projects is that if you're gonna run them on a supercomputer, you can damn near guarantee that Python will be available on it while Matlab probably will be, but will require a bitch of dealing with license matters.
C or Java (Score:5, Insightful)
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.
Re: (Score:2)
Free, cross platform, and awesome:
http://qt-project.org/ [qt-project.org]
Or Object Pascal (Score:2)
General programming for personal uses or your own company: Object Pascal with Free Pascal (and Lazarus).
http://freepascal.org/ [freepascal.org]
http://lazarus.freepascal.org/ [freepascal.org]
Ruby (Score:4, Interesting)
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.
Re:Ruby (Score:4, Insightful)
Don't ask what language (Score:2)
Ask, "What do I want to accomplish?" Then figure out what tools are best to do so.
Python? (Score:2)
It's easy, high-level, quick to write practical programmes in, platform-neutral and has an active community. Generally speaking, a lot of people who are handy with computers and do a bit of programming for fun or personal reasons like it.
anything 'lower-level' than C
OK, so that rules out assembly... and, em... Fortran? Pascal?
Not great as pretty much the only specifics you've given. I took it that you don't like low-level languages.
Try Scratch.... or perhaps the DCPU-16 (Score:2)
If you really want to try something cutting edge but still want to stay high level with your programming, I'd strongly suggest Scratch:
http://scratch.mit.edu/ [mit.edu]
In spite of all of the junior high kids that make apps in the language, there is a strong adult community there as well... usually talking about educational applications of the language but sometimes getting into more serious programming discussions too. Some modding goes on, but if you have been out of the loop for 20 years from doing much programmin
Re: (Score:2)
That's so high level I got a nose bleed, so hip you must have trouble seeing over your own pelvis.
Seriously, if I wanted Scratch for Adults, I'd look at Powerpoint / Keynote / Open Office Presentation or whatever they call it.
C# (Score:4, Insightful)
Re:C# (Score:5, Insightful)
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.
Re: (Score:3)
It's not (just) the language - it's the API (Score:5, Insightful)
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.
Chinese (Score:3, Insightful)
Re: (Score:3)
The Chinese economy has peaked. Jobs are beginning to leave China for cheaper locations. Their economy may double in size one more time, which will still leave it smaller than the US economy.
Clojure (Score:3)
Does your program need to be graphical or text (Score:2)
I think that is a big decision point. You may find that if you choose gui, that it will strongly affect which language you choose to go with.
Or maybe not.
A Book You May Like (Score:5, Interesting)
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.
What are you writing? (Score:2)
If you don't work for a company that forces you to develop in language xyz then you should pick the language that fits your needs...not pick a language and then start writing away. Yes...most languages can be bent upside down and backwards to do almost anything. That's ignoring the point though.
You're completely free to choose. Most of us don't have that luxury. Study carefully what you want to do and pick the best language for that task. Do not ask a large group of tech heads what language they love best.
what do you want to do? (Score:2, Informative)
I'd use the preferred language for the kind of project you want to work on. If you just want to be employable, learn java.
Java + Eclipse (Score:2)
Mature language and environment, vast number of open source third party libraries, runs literally anywhere. (Well... except iOS ...)
Re: (Score:2)
Mature language and environment, vast number of open source third party libraries, runs literally anywhere. (Well... except iOS ...)
Wow, that's just masochistic. Well, at least the Eclipse/Nios C++ environment I run is.
My favorite: C++/Qt (Score:4, Insightful)
I've found that Qt wraps most for the craziness that is C++, it's a very nice toolkit for for "personal project" size. Don't know what the commercial market is and don't care, but for hobbyist work I find it great. Of course if you want to be part of the "cool kids" you'd probably go with Java so you can program for Android, mobile is all the rage these days but I don't feel I need it for my projects. And that's really the question, what kind of apps are you looking to make? Desktop apps? Mobile apps? Web apps? Scripting? Simulations? There's still no one language to rule them all because they all do better at certain things.
Do whatever monster.com says. (Score:2)
If there are more jobs for C++, do that. If there are more for C# or Java, do that. Coding is either about money or it's masturbation (not that there's anything wrong with that...), but if you're doing it for money, then put yourself in the biggest money stream.
And sorry guys, if you're looking for money, that's probably not python, ruby, coffee, php or web language of the week. Much as I delight in all of them, there are just fewer high-paying jobs there last I looked. Feel free to prove me wrong. I'd be h
the web is tomorrow (Score:2)
Python or Lua (Score:2)
Python for complete, modern scripting with good OO.
If you like to look at something minimalistic though, have a look at Lua. That language is really fascinating.
Processing (Score:2)
It is very satisfying for personal/hobbyist applications. Lots of libraries for graphics, sound, serial port, remote control, etc.
www.processing.org
It totally depends what you want to do. (Score:2)
Ruby is porn for programmers, but it's unsuitable when performance matters.
Python has a niche carved out handling mail, and is good for many other things.
Lua is a solid embedded language for games.
Java is (used to be?) the language of business software. Maybe it's C# these days?
R is fantastic for statistics mostly due to the available libraries.
Fortran is the language for physics, again due to the libraries.
PHP is kind of a watered-down, nothing-exceptional language, but it's nonetheless quite popular for
"Dynamic"? (Score:2)
Personal Reasons (Score:2)
There are thousands of languages out there and your asking which one you should learn? Without information as to what type of programming you want to do or why you want to learn, it's a total crap shoot. If you just want to learn a language easily, python is a good starting language. If you want to do "real" programming than C/C++ is probably the best way to go. If you want to just do programming for entertainment, pick a project off sourceforge or github and use whatever language it uses. If you wan
Programming for fun? Lisp and Smalltalk (Score:3)
You say you want to "code for personal reasons", which I take to mean because you find programming enjoyable and want to write programs for fun.
Then I would absolutely recommend Lisp and Smalltalk. For Lisp, you can get started with Lisp In A Box [common-lisp.net] and Peter Siebels' "Practical Common Lisp" [gigamonkeys.com]. For Smalltalk, try Squeak [squeak.org] accompanied by Squeak by Example [squeakbyexample.org]. It's all free.
No, you are probably not going to get a job writing in either of these languages, but learning them may indeed help you get a job, as they are both conceptually deep, and their influences are broader than many realize: JavaScript borrows heavily from Lisp, and Ruby and Objective C from Smalltalk. Even Python and Perl have some Lisp concepts in them. In fact it seems that every new dynamic language to come out in the last twenty years owes something to these two languages. They are like the Greek and Latin of programming languages.
Learn an HDL - vrey challenging. (Score:4, Interesting)
If this is for a hobby, and you want to keep challenged, buy an FPGA development board (e.g. a Digilent Basys2 or a Papilio One) and learn a HDL. It will cost a little bit of money ($60) but you will get months of play time out of it.
Once you've programmed in 10 or so languages they are pretty generic, but the jump from programming to Hardware Designing is a complete mindfsck, but one you grok it it is very satisfying. Everything happening in parallel in hard real time....
Build your own 'soft' CPUs, invent the next big thing!
Re: (Score:3)
Looping is generally a bad idea (unless if it's a generation loop), recursion shouldn't even be considered, etc... . But VHDL is one of the better languages out there actually. I've written large snippets of VHDL that worked instantly. Simply cause of the fact that it's very hard to make a mistake in VHDL. But the learning curve might be a bit steep without a good tool chain (Xilinx I
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
When my wife go out now, one of her comments is "it's better at home." We only go out to eat when she wants to give me a break or when the cook is awesome.
Yeah. I used to have the same feeling and comments. But then we ate at some Michelin-starred restaurants. Pricey, sometimes $100s per person, but if you're a good cook, you will appreciate why chefery is a profession.
There's this Thai place that I have not (yet) been able to do better.
Thai cuisine is super easy. It's 90% about the ingredients. Everyone knows lemongrass, ginger, basil, chilis, coconut. Most home chefs forget the kaffir and galangal, and often use the wrong basil.
Re:Javascript (Score:4, Insightful)
By leveraging Node.js you can write web services and client-side presentation with standard html and javascript. Can't think of another language that allows you to write a server and client with the same language with as much ease
You'd be surprised at how many languages allow you to write both client and server with the same language in a very convenient fashion, provided that you don't stick to the notion that the client must run in a browser.
Re: (Score:3)
there's stuff like http://www.webtoolkit.eu/wt [webtoolkit.eu] if you want to write both server and clients in one go.