Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming IT

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."
This discussion has been archived. No new comments can be posted.

Ask Slashdot: What Language Should a Former Coder Dig Into?

Comments Filter:
  • Python (Score:5, Insightful)

    by protactin ( 206817 ) on Sunday May 06, 2012 @06:52PM (#39910851) Homepage

    n/t

  • Your answer (Score:5, Insightful)

    by Anonymous Coward on Sunday May 06, 2012 @06:55PM (#39910873)

    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.

  • C or Java (Score:5, Insightful)

    by phantomfive ( 622387 ) on Sunday May 06, 2012 @07:01PM (#39910905) Journal
    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.
  • Re:Ruby (Score:4, Insightful)

    by BitterOak ( 537666 ) on Sunday May 06, 2012 @07:11PM (#39910981)
    I second that. If you want to learn a new language now, Ruby is the way to go. It just makes it so easy to do object oriented programming properly. (In that sense it's the polar opposite of C++). So, Ruby is a great all purpose language, and for speed critical work, just use C.
  • by Anonymous Coward on Sunday May 06, 2012 @07:16PM (#39911013)

    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#, or C++.

    Some people (especially Rubyists) will claim that these kind of bugs won't happen. They will, and they can be costly. This cost increases significantly as the program size increases, and as the team size increases.

    Automated unit tests aren't the answer, either. You'll soon find that 90% or more of your unit tests are merely implementing checks that the Java compiler, for example, would've taken care of automatically. Again, like the debugging problem, this isn't an effective use of time.

    You and your team may see some initial time savings when switching to a dynamic language, but there's a significant long-term cost that you need to consider, too. Something that would've taken an hour in Java may only take 15 minutes in Ruby, and another 15 minutes writing unit tests. But you'll find yourself spending well over 30 minutes debugging a problem involving this code at some points, usually due to a completely unrelated change. Meanwhile, a similar issue with equivalent Java code would've been caught by the Java compiler on the developer's system, well before the code ever was committed to whatever source control system the team is using.

    And like I warned earlier, there will be people who claim that such problems "won't happen in practice". Chances are that these people have only worked on some small Ruby on Rails websites alone, or maybe with one other person. Had they worked even for a week with a 300 developer team, or even with a 10 developer team, all working on the same code base, they'd soon realize that such problems happen much more frequently when using dynamic languages than when using more static languages.

  • C# (Score:4, Insightful)

    by Kittenman ( 971447 ) on Sunday May 06, 2012 @07:16PM (#39911025)
    Wealth of books out there, it's fairly easy, and the "Express Edition" is free (and comes with a free Visual Studio). It looks good on a CV, makes you more attractive to the opposite sex, guaranteed to put hair on a billiard ball ... sorry, but you get the idea. Python's fine, but most fun is had in C#. YMMV, of course.
  • by Ken_g6 ( 775014 ) on Sunday May 06, 2012 @07:22PM (#39911063) Homepage

    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)

    by Ralph Spoilsport ( 673134 ) on Sunday May 06, 2012 @07:25PM (#39911085) Journal
    Programming isn't important. You "pay people to do that" - usually some minimal fee in the Philippines or Malaysia or India. The language to learn is chinese because this century belongs to them.
  • by Kjella ( 173770 ) on Sunday May 06, 2012 @07:47PM (#39911245) Homepage

    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.

  • Re:C# (Score:5, Insightful)

    by aaronb1138 ( 2035478 ) on Sunday May 06, 2012 @08:44PM (#39911537)

    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:Javascript (Score:4, Insightful)

    by shutdown -p now ( 807394 ) on Sunday May 06, 2012 @09:34PM (#39911811) Journal

    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.

  • by strombrg ( 62192 ) on Sunday May 06, 2012 @09:35PM (#39911813) Homepage

    C: Overcomplicated, but fast, and useful for extending most other languages

    Java: Reasonable, but a bit wordy. Pretty marketable. Performs quite reasonably really, though slow to exec

    C++:Probably best avoided unless you have libraries in C++ you must use (in which case you could use Cython)

    Objective-C: Useless, except on an iPhone

    C#: Another lockin trojan horse from Microsoft. Avoid.

    PHP: Awful design. Avoid.

    BASIC: Those whom the gods would destroy, first they teach BASIC.

    Python: Very nice language to work in. Sacrifices performance a bit in the reference implementation, but pretty fast if you use Pypy. Can be extended using C or Cython. Sometimes off-putting to people who feel that programming "should be complicated".

    JavaScript: The assembly language of the web. It's a bit of a mess, but many, many web applications use it. There have been many projects attempting to translate other languages to JavaScript, to make web development less painful. One of them is Python, another is Java. I'd be surprised if there aren't others.

    Perl:What a mess! It's much too kitchen-sink. For people whose problem domains aren't complicated enough to keep them entertained, so they need a messy language to make things more interesting.

    Ruby:Popular among Java programmers who don't want to use anything but Java. Kinda perlish, but not quite as bad.

  • by mooingyak ( 720677 ) on Sunday May 06, 2012 @10:02PM (#39911955)

    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#, or C++.

    That's got to be one of the dumber things I've ever read.

    Compilers catch syntax errors. Logical errors are still free to roam about. perl and ruby both have a -c option that will perform a syntax check for you, it should catch more or less the same things that a compiler will. If you're reliant on the compiler to find your bugs, you'll have debugging problems no matter what language you choose.

  • Re:Python (Score:5, Insightful)

    by styrotech ( 136124 ) on Sunday May 06, 2012 @10:22PM (#39912071)

    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.

  • by cforciea ( 1926392 ) on Monday May 07, 2012 @12:41AM (#39912699)
    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.
  • by mwvdlee ( 775178 ) on Monday May 07, 2012 @05:56AM (#39913783) Homepage

    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.

  • by cerberusss ( 660701 ) on Monday May 07, 2012 @06:46AM (#39913895) Journal

    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.

    Really, you think that's respectable? I think that's fairly substandard, actually.
    - You're a teenager, and you learn BASIC
    - You get computer classes at high school and learn Pascal
    - You do college, and learn Java, C, C++, PHP, and Javascript (and of course HTML and CSS)
    - You have a job during college, and learn Perl/CGI and Visual Basic (and some more HTML/CSS)
    - Your land your first job, you do PL/SQL, XML, Java and lots of shell scripting. The secretary asks you to automate something and you learn vbscript.
    - You buy an iPhone, so you learn Objective-C
    - Your second job, you learn to apply XSLT on your XML datagrams
    - Your third job, you learn Python besides C and C++
    Totalling, depending on how you count: 10-15 languages

    This is all totally standard, unless you're one of those people who actually studied business administration, and is in IT for the money.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...