Slashdot Mirror


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."

530 comments

  1. Python by protactin · · Score: 5, Insightful

    n/t

    1. Re:Python by Anonymous Coward · · Score: 0

      Agreed, great language and libraries.

    2. Re:Python by Faisal+Rehman · · Score: 0

      Agree - python is every where

    3. Re:Python by Anonymous Coward · · Score: 1

      I've just been looking at a language to use for new applications. We've also concluded that python makes sense unless you really need to low-level control of the hardware that you can get from C. We had been using Java. I'm pretty convinced that Java greatly increases the amount of time needed to code. Most groups around my university seem to be using Python as well, though most of the long-lived projects in the "glass house" (one of which I'm involved in) will stay in Java at least for now.

      Python has been around a long time, has a good user community and thus a good "ecosystem", is vendor-neutral, and has no obvious problems that would make it take more work coding or maintaining the other languages.

    4. Re:Python by Anonymous Coward · · Score: 0

      Yup. I code professionally with C and C++, because it's a bunch of embedded systems programming, but whenever I'm working on something other than my job I use Python. It constantly amazes me how much bullshit I don't need to deal with with Python, and how it never seems to bite me in the ass the way C++ does.

    5. Re:Python by Anonymous Coward · · Score: 0

      The nice (and impressive) thing about Python is that it is like typing in pseudocode which just works.

    6. Re:Python by Ogi_UnixNut · · Score: 1

      Agreed whole-heartedly! First language I learnt when I came to Linux, and the one that I always come back to if I want to program for fun, or need a quick script/mockup (it is however also good for proper, large software projects). Hugely flexible and fast to develop in, with nice C bindings if you need to do some specialist stuff.

    7. Re:Python by squiggleslash · · Score: 4, Interesting

      Disagree. Python is a great language, but it's unlike the vast majority of other languages out there. It wouldn't establish you with a base of "How things currently work". You can easily learn Python after learning one of a list of other languages, but other languages are going to come across as a tad confusing if you learn just this one.

      I'd go with Javascript. STOP. READ THE FOLLOWING BEFORE FLAMING.

      Javascript exactly at the intersection of everything right now. It's a scripting language that's close enough in concept to C# or Java for a jump to be relatively easy. It's enormously powerful, and has 95% of modern programming language features.

      Now, TO BE CLEAR (shouting again, because I know you're going to flame me if I don't!) it's NOT that I'd recommend programming in Javascript in anger, it's more that if you jump from JS to Java, C#, Python, or PHP, you're going to find it an easier jump. Jumping from Python to, say, Java is rather more of a leap.

      For learning purposes, JS is a great language. Python is also a great language, but don't allow your enthusiasm to get the better of you when promoting it. For learning how the world works today, recommending Python would be as sensible as arguing that a Chinaman who wants to talk to Westerners should learn Italian first.

      (Yes, Italian's my favorite spoken language, I'd still recommend English to said Chinese person. Good combination of Romance and Germanic languages that'll get you understanding "us", even if it sucks!)

      --
      You are not alone. This is not normal. None of this is normal.
    8. Re:Python by Kurofuneparry · · Score: 1

      Forget the arguments against dynamic languages because you said you're doing this as your own project.
      Forget the arguments for javascript because you're asking for a language to 'become native to'.
      The Python language is great and community is awesome.
      Then again... I'm and idiot.....

      --
      ...... and idiots rule the world....
    9. Re:Python by sylvandb · · Score: 0, Flamebait

      I think javascript is just about the worst possible choice in popular languages. (php would be worse)

      Javascript is strict about things that do not matter (e.g. trailing comma in a list) and not at all strict about things that could make a real mess (e.g. trailing semi-colons, or not, at the end of each line).

      Javascript is a huge hack and it shows.

      Which javascript environment would you learn? firefox? chrome? internet explorer? Something else? Why would you want to incur the complexity of the world that is javascript when you aren't forced to?

    10. Re:Python by jamej · · Score: 1

      I don't know what you'll be coding but, Python is a great rapid prototyping language. It can interpreted, compiled, and OOP depending on your needs. I'm also a big fan of SAGE. It's a computational environment using many types of open sources great stuff all tied together by Python.

    11. Re:Python by shutdown+-p+now · · Score: 2

      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.

    12. Re:Python by jmerlin · · Score: 2, Informative

      You're overstating minor issues and making no major complaints. There are plenty of issues with Javascript, most of which we mitigate with standard practices (read: not being an idiot). These arguments are simply QQ for QQ's sake.

    13. Re:Python by tixxit · · Score: 1

      Huh? I don't understand this. Going from JS to another language would not be easy. It's got an OO system that no other language uses. It's dynamically typed (so going to Java or C# would not be simple). If you are doing it right, you are probably passing a lot of functions around, which will be quite different from Java, C#, and PHP. If you are coding Java, C#, PHP, or Python in JS, then you are probably not doing a good job of coding JS. Moreover, JS has an incredibly small standard library and a wide array of different environments.

      Python is simple. It has a very gradual learning curve. You don't need to know anything about objects or functional programming to start using it to solve real problems. Moreover, its object system is very similar to Java's, C#'s, PHP's, etc. Going from Python to ANY of these languages would be very easy. Moreover, writing "Python" (ie. pythonic) code in any of these languages (Java, C#, PHP) would mean you are still writing good code. Lastly, Python has (for all intents and purposes) a single environment (CPython) with a great standard library with tons of 3rd party support for pretty much anything you want to do.

      Javascript is OK for what it is. It's an incredibly "simple" language, which made it amenable to most browser makers and got it adopted quickly. Its scope has expanded a lot since then, but its still a quirky language at best.

    14. Re:Python by marcosdumay · · Score: 1

      Python is a great rapid prototyping language

      One doesn't make rapid prototypes. Really, nobody does. Some people expect to do, even write documents saying they'll do, but they never stay prototypes. So, let's be realists, and forget that concept for once. (I tought everybody did already move to non-functional prototypes by now.)

      Now, with that said, Python is a great choice everywhere you won't need performance. I'd enforce the GP's option.

    15. Re:Python by tixxit · · Score: 2

      Lastly, I would say JS is a lot of people's first foray into functional programming. I think a lot of the love for JS is just misplaced love for functional programming and that these types would be better served by learning Haskell, Clojure, Scala, etc. Basically, any other current functional programming language.

    16. Re:Python by joetainment · · Score: 2

      I agree that Python is a great choice.

      Python is perfect for someone in your situation because it is very easy to get into, and you have room to grow with it, since it can be made to work as fast as you need it to.

      Keep in mind that there is a good chance that you will find you never need to code anything in C or C++ for speed reasons. Python could turn out to be "fast enough" for everything you want to do. You'll probably use libraries to do the heavy lifting, and they are probably already C or C++ based.

      However, when Python isn't fast enough, it's pretty easy to write 95% of code in Python, profile your code, find the slow parts, and then write the really CPU heavy stuff in C or C++. Getting C and C++ code working with Python is pretty automated these days. In fact, Python even has "cython" available which is essentially C coding with a more python-like syntax. (It can compile to C).

      For an IDE, you can use Eclipse and PyDev. Both are entirely free and excellent. There are plenty of other free tools as well.

      For GUI development, you have easy access to the best GUI toolkit on Earth, QT. The Pyside project provides the official binding to QT, and the bindings are excellent. QT is used in incredibly complicated software such as Autodesk Maya, so it's not just for small stuff. At the same time, it takes about 5 minutes to write a fairly simple but useful application using QT and Pyside. (As an example, a GUI for wrapping the functionality of a command line program.)

      Another great thing about Python as a language is that you pretty much never run up against a wall. "No, you can't do that" is something you almost never hear when people ask questions about Python. It's more often, "no, you *shouldn't do that.... but you can if you want".

      You'll save so much time writing apps in Python that you'll have hours and hours of free time to spare optimizing the slow parts or adding new features. As a personal example, I'm comfortable in other languages as well, but I can make working apps about 5 times faster in Python than in C# or Java, just because there's less code to write. Assertions and test driven development can make the code just as robust as other languages with compile time type checking.

    17. Re:Python by styrotech · · 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.

    18. Re:Python by johanatan · · Score: 1

      That would be true if C# and C++ (as multi-paradigm languages) didn't have quite good support for functional features.

    19. Re:Python by cayenne8 · · Score: 1
      And set up a Linux box.

      That will take care of having a development environment for free....

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    20. Re:Python by Anonymous Coward · · Score: 0

      Javascript is great for new & hobbyist developers because they can make cool things happen in an environment they relate to (web browser). Commandline is fine for engineers, but the average person doesn't work in that world and doesn't necessarily see past the ugly.

      Also javascript requires very little environment setup (text editor & browser only). A lot of the installation/setup stuff throws newbies off before they start.

      Unfortunately, you are right and JS is really brain-damaged in certain respects, but it is what the web uses.

    21. Re:Python by smellotron · · Score: 1

      It's got an OO system that no other language uses.

      Lua's OO system is pretty similar. Not that I view this as a good thing in general, but there is a certain beauty in keeping a language as simple as possible and foisting the boilerplate onto library designers.

    22. Re:Python by Capsaicin · · Score: 1

      In what sense?

      In the sense that something as fundamental as variables behave radically differently in python from say C. For instance consider the effect of the assignment var0 = var1 in python as opposed to C or indeed "the vast majority of other languages out there." [OK, personally I'd drop the "vast"] In fact, it perhaps better to insist that python has no variables, but names (or bindings if you prefer). In the same vein, consider the core concept of passing values: Is Python a pass-by-value or a pass-by-reference language? And how does this play with mutability --a vital concept to grok in python, but hardly in the majority of languages out there.

      At least in this regard there are very basic differences between how python and them others languages do stuff, that transcend mere differences in syntax. Now you could probably make out a case for basic differences between X and them others for almost any language X, so this is perhaps not the soundest argument against using python (or X for that matter).

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    23. Re:Python by Anonymous Coward · · Score: 0

      Also, Dude, chinaman is not the preferred nomenclature. Asian-American, please.

    24. Re:Python by cheaphomemadeacid · · Score: 1

      Stay away from js, it won't help you learn jack shit except weird, nitpicky syntax ;P Go for python, focus on the programming concepts and try to learn a few frameworks, as they are integral to modern programming concepts. Once these concepts are solidified, any modern programming language will basically just be about different syntax and api. Python should be chosen for its easy of readability, which is exactly why js should NOT be chosen. By all means, if you find a language that is as concise and easy to read as python, please let me know =)

    25. Re:Python by tixxit · · Score: 1

      Sorry, I didn't mean everyone that programs in JS, but rather the people who really espouse JS as a great language. I've just had a lot of people try to explain "closures" to me over the last few years :)

    26. Re:Python by shutdown+-p+now · · Score: 1

      For instance consider the effect of the assignment var0 = var1 in python as opposed to C or indeed "the vast majority of other languages out there."

      Variable assignment in Python works exactly the same as in C, Java and whatnot - it copies the value of the variable. Said value may be an object reference (which in C would be a pointer), but, nonetheless, it is the value that is copied.

      Note also that most languages actually only allow you to store object references in variables, not objects themselves (Java, C#, JS, Ruby, Obj-C...) - C/C++, with explicit pointers, is an exception rather than a rule here.

      In fact, it perhaps better to insist that python has no variables, but names (or bindings if you prefer).

      Variable is a binding by definition - that's true in any language. The only difference is whether it is a binding directly to some value (e.g. ML, Haskell), or a binding to a memory location that stores a value (e.g. C, Java, Python, Scheme).

      In the same vein, consider the core concept of passing values: Is Python a pass-by-value or a pass-by-reference language?

      Python is strictly pass by value. Again, this is same as in Java - the value you are passing may be an object reference, but that reference is passed by value. It's pretty obvious once you try to assign something to the function parameter.

    27. Re:Python by binarylarry · · Score: 2

      That's very true, if you've never used any other IDE before... ever.

      --
      Mod me down, my New Earth Global Warmingist friends!
    28. Re:Python by Anonymous Coward · · Score: 0

      Protip: He's not referring to Asian-Americans. So Asian would be more appropriate. Secondly: whites are now to be referred to as European-Americans.

    29. Re:Python by Zenin · · Score: 1

      ,but who cares about syntax?

      Huh? The entire reason Python exists at all is because a lot of people care a great deal about syntax.

      --
      My /. uid is better then your /. uid
    30. Re:Python by shutdown+-p+now · · Score: 2

      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.

    31. Re:Python by Anonymous Coward · · Score: 0

      Javascript is a terrible language. Coffeescript, by virtue of compiling to Javascript, has every advantage you listed and it doesn't entirely suck.

      Having worked with Coffeescript for about 6 months now, I see zero reason to program in pure Javascript anymore.

    32. Re:Python by Anonymous Coward · · Score: 0

      And although Python is not statically typed like Java is, it is strongly typed like Java is

      Uh what? No it's not, it's about as loosely typed as you can get.

    33. Re:Python by Max+Romantschuk · · Score: 1

      Python and Javascript are both good choices.

      Python is fun, intuitive, and shares most concepts with a lot of popular languages.

      Javascript on the other hand is much more powerful than a lot of people realize. It lends itself to both functional and event driven programming, and has an object model which will let you do a lot of interesting things. It also runs anywhere you have a modern browser, and with the way HTML5 is developing will let you develop full applications better and better every day.

      I don't see how you could go wrong with any of those. I'd go with learning both.

      --
      .: Max Romantschuk :: http://max.romantschuk.fi/
    34. Re:Python by Capsaicin · · Score: 1

      Variable assignment in Python works exactly the same as in C ... it copies the value of the variable.

      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.

      Said value may be an object reference (which in C would be a pointer)

      Naively, we are contrasting the difference in behaviour between var0 = var1 where both are, eg. of type 'int' in their respective universes. Since we are concerned about learners being mislead, not those with your sophisticated understanding. The need to understand that a python "variable" is like a C pointer actually foregrounds the difference. However even where our variables are pointers in C, the operation var0 = var1 relies on their being two distinct variables (memory locations) in C, each holding an equivalent pointer. Again in python there is only one object (memory location) with separate names bound to that single instance.

      Variable is a binding by definition

      A variable name is a binding, a variable is a location in memory to which that name is bound, or loosely the contents of that location, no? We're both veering close to argument by definition here. ;)

      Look, I actually agree with almost everything you wrote. However it is correct from the conceptual viewpoint (I'm tempted to call it a narrative) you have developed implicitly to harmonise the very differences between python and a "real" language like C. Which kind of begs the question really. Now this kind of narrative is invaluable, precisely because it corrects misunderstandings that might be drawn because of the difference between python names and C variables. The danger is that newbs may not have you around to help them to this higher understanding.

      Python is strictly pass by value ... the value you are passing may be an object reference, but that reference is passed by value.

      I won't even go there! Again I refer the interested reader to a number of these discussion from about 5 to 10 years ago on comp.lang.python. Highly educational for anyone wishing to develop their own harmonising narrative.

      ... C/C++, with explicit pointers, is an exception ...

      OT, but I thought Obj-C would be in that group too?!

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    35. Re:Python by davester666 · · Score: 1

      Engrish!

      --
      Sleep your way to a whiter smile...date a dentist!
    36. Re:Python by shutdown+-p+now · · Score: 2

      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 original name-value binding. But this is not how it works in practice - after you assign to a captured variable, the closure will see the new value. This is because it captured the name-location binding (which never changes once the variable comes into being), and the bound location has had its stored value changed.

      Naively, we are contrasting the difference in behaviour between var0 = var1 where both are, eg. of type 'int' in their respective universes. Since we are concerned about learners being mislead, not those with your sophisticated understanding. The need to understand that a python "variable" is like a C pointer actually foregrounds the difference. However even where our variables are pointers in C, the operation var0 = var1 relies on their being two distinct variables (memory locations) in C, each holding an equivalent pointer. Again in python there is only one object (memory location) with separate names bound to that single instance.

      It doesn't really change anything if you look at integers alone. Sure, in Python they are objects, but they don't have an intrinsic object identity (i.e. any int 1 is identical - in terms of operator "is" - to any other int 1, no matter how you have produced that value). Furthermore, they are also immutable. In practice, this means that two object references to the same int object stored in two variables in Python are indistinguishable in terms of behavior from two equal int values stored in two variables in C. So one doesn't actually need to understand objects and references to deal with ints in Python - the same level of understanding as in C is fully sufficient.

      A variable name is a binding, a variable is a location in memory to which that name is bound, or loosely the contents of that location, no? We're both veering close to argument by definition here. ;)

      It would sound very strange to me to refer to arbitrary locations in memory as variables. If that were so, then an object referenced by a pointer in C would be a variable, as well - certainly quite alien to a C programmer. At least in C/C++ world, the conventional terminology is "location" for a chunk of memory that is used to store a value, and "variable" for a name bound to such a chunk of memory. Elsewhere this terminology seems to be followed, too, e.g. in Scheme. In Haskell, a variable is a name bound directly to a value, no locations involved.

      Look, I actually agree with almost everything you wrote. However it is correct from the conceptual viewpoint (I'm tempted to call it a narrative) you have developed implicitly to harmonise the very differences between python and a "real" language like C. Which kind of begs the question really. Now this kind of narrative is invaluable, precisely because it corrects misunderstandings that might be drawn because of the difference between python names and C variables. The danger is that newbs may not have you around to help them to this higher understanding.

      I don't really see it as some kind of complicated bridge. Once the nature of object references as values in their own right is understood - which is necessary in many other languages, like Java, C#, Obj-C, Ruby etc

    37. Re:Python by styrotech · · Score: 1

      And although Python is not statically typed like Java is, it is strongly typed like Java is

      Uh what? No it's not, it's about as loosely typed as you can get.

      Even considering the variation in definitions (and there are many), it sounds like you're mixing up static typing with strong typing.

      Some oversimplified examples:
      Java is statically and strongly typed,
      Python (and eg Ruby) is dynamically and strongly typed,
      C is statically and weakly typed,
      Javascript (and eg PHP) is dynamically and weakly typed.

      ie Javascript and Java are polar opposites in regards to type system and Python shares some aspects of both.

      Try adding an integer to a string in Python - then try it in a weakly typed language like Javascript or PHP.
      Unlike the weakly typed languages, Python throws a type error like Java does - which means it isn't "about as loosely typed as you can get".

    38. Re:Python by styrotech · · Score: 2

      It doesn't really change anything if you look at integers alone. Sure, in Python they are objects, but they don't have an intrinsic object identity (i.e. any int 1 is identical - in terms of operator "is" - to any other int 1, no matter how you have produced that value).

      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 implementations or versions.

      eg:

      Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
      [GCC 4.4.5] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> a = 1
      >>> b = 1
      >>> a is b
      True
      >>> a = 300
      >>> b = 300
      >>> a is b
      False

      ie the interpreter cached the creation of 1 so that a and b refer to the same object, but 300 wasn't cached and so a and b refer to two different integer objects.

    39. Re:Python by ByOhTek · · Score: 2

      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 to it. Usually I like combining one of the latter two with C.

      C - Works almost everywhere, very powerful, and if you are creative, allows you to perform some interesting tricks.
      C# - With mono, this has great cross platform functionality. Compile-once and run on most desktop environments. The exception is if you want to use it on "big iron" style systems, such as HPUX, AIX, etc., where mono usually isn't ported. You can even use it to make apps for Android, iOS, and WindowsPhone, though unlike the desktops, each requires a recompile, and probably some code tweaks for the specific UI APIs. I picked this over Java for the cleaner API.
      Python - An extremely flexible language. Not the best performance by default, but with some things like Psycho or PyPy, it can provide higher performance than you'd expect. The ability to modify not only the values, but even the existence of members (even functions) run-time is incredibly powerful (but also dangerous). I could spend several hours on this post, and not do justice to this language, both in terms of pros, and dangers (the latter of which are easily avoidable by a moderately experienced programmer, who doesn't get distracted by the 'oooh-shiny' aspect of them).

      Regarding the "no pay" requirement - for C# there is MonoDevelop and VIsual Studios Express - both are free (as in beer).

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    40. Re:Python by ByOhTek · · Score: 1

      There is one danger to python that can hinder long-term maintainability:

      The ability to change what member exist in an object after it is created. If you create a class, "foo" containing members "x", and "y", you can then create foo objects, and add "z" to some, remove "y" from others, etc.

      This can make things tricky if you aren't careful, and should be avoided if you don't use a duck-typing methodology.

      Also, I'll probably get lynched here, but consider C# with either MonoDevelop or Visual Studios Express. The latter, with intellisense, really speed up dev time IMO, even compared to Python.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    41. Re:Python by mwvdlee · · Score: 1

      Python is a pretty bad choice for developing iOS games.

      Oh wait, TFQ didn't state what platform/environment would be used, nor what type of software he wants to build.

      1. Figure out what you want to make (i.e. game/app/toy/site/etc.).
      2. Figure out the device you want to make it on (smartphone/tablet/pc, ios/android/windows/mac/all, etc.)
      3. Research what language(s) are most common for such a project, keep in mind libraries/frameworks for the bits you don't want to program yourself.
      4. From the few remaining options, pick the one with the most active/supportive community, though at this stage all languages would be good enough.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    42. Re:Python by shutdown+-p+now · · Score: 1

      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 implementations or versions.

      That is true, yes. In better optimized implementations, it's true for all ints because they're implemented via some form of tagged pointers, to avoid extra allocations and indirection.

      However, from the perspective of int being a regular object, it's actually more surprising to see values obtained by different ways - e.g. computed from two different expressions - to have the same identity, then for them to have different identities. That it is completely unpredictable just goes to show that identity is not really a strong property of int objects in Python (but, really, it doesn't make much sense for immutable objects in general, since the only way you can tell the difference is by using "is").

    43. Re:Python by Anonymous Coward · · Score: 0

      squiggleslash, I know you are Westman, but you wanted to say Chinese, not "Chinaman".

    44. Re:Python by Anonymous Coward · · Score: 0
      HAhahaah look! I got one! I got one!

      I got one of the MS Shills - baited and hooked!

      Seriously guys, this is fun - see f you can get the whole sockpuppet set - Bonch, Sharklaser, all the Tech* drones, ByOhTek, Katakaa (and variants), HairyFeet etc etc. They're easy but be careful, they're pretty slimy too!

    45. Re:Python by flyneye · · Score: 0

      Well I would've said learn Korean or some Indian dialect, but you want to code for personal reasons, not vocational.
      My advice is learn one that you can mutter to yourself in with ease. I learned German to mutter to myself in, at work and the Mexicans who speak to each other natively and snicker are now speechless and dumbfounded in my presence. Some of my non-hispanic coworkers understand a few words and phrases and play into it nicely. Another anticipated plus, is the more I do so, the more I tend to think in German.
              Are there analog code words to make coding fit real life? I believe in my own schizophrenic way, that speaking and thinking another language can be beneficial to the way your brain processes information. For me, it's German. I eagerly anticipate any news you may add to this ongoing study, I had not considered programming language for myself, but if you do for yourself, try using it for real life and let us in on the results.

      --
      *Repent!Quit Your Job!Slack Off!The World Ends Tomorrow and You May Die!
    46. Re:Python by Anonymous Coward · · Score: 0

      Uh-huh. Because an MS shill would
      (A) Complain about the C++ compiler made by MS
      (B) Suggest Python and C, both not controlled by MS, as good languages, and really/strongly promote python
      (C) Suggest MonoDevelop (not MS) or the free MS IDE.

      There's a shill here, but it's not the GP (or me)... but the one inbetween...

    47. Re:Python by Creepy · · Score: 1

      Technically every platform has a free IDE - Visual Studio Express for Windows, Mac Dev tools for mac, and stuff like CodeBlocks and Eclipse work everywhere. Visual Studio Express requires registering an email with Microsoft and some people consider that selling their soul to the devil, and I think Apple's does as well, but the others don't AFAIK.

    48. Re:Python by Anonymous Coward · · Score: 0

      Generally Asian Americans understand English, what with them being Americans and stuff.

    49. Re:Python by squiggleslash · · Score: 1

      Really? A "Chinese" is a man made out of porcelain (which was CLEARLY what I meant)? ;-)

      --
      You are not alone. This is not normal. None of this is normal.
    50. Re:Python by musicmaker · · Score: 1

      Try IntelliJ, it's far superior to Eclipse, and not in a literal sense, but a practical one. You just start it up and use it, you don't have to go through a bunch of hoops just to get git or maven working, both of which are nigh-on standard these days. It has a lot of the great features of VisualStudio, but also works with Spring, and other JVM languages like Groovy and Scala. Not only that, but has Ruby support and PHP support also.

      The C# community is a pretty close-minded lot for the most part, maybe not a great place to start.

      --
      Everyone is living in a personal delusion, just some are more delusional than others.
    51. Re:Python by Capsaicin · · Score: 1

      It doesn't really change anything if you look at integers alone. Sure, in Python they are objects, but they don't have an intrinsic object identity (i.e. any int 1 is identical - in terms of operator "is" - to any other int 1, no matter how you have produced that value).

      Forgive my clumsiness, I used ints to avoid complications of C strings and python lists ... but I forgot, small ints are interned in the CPython implementation as a performance hack. I wasn't really speaking about python implemented in C, but about python implemented in the breath of God. ;)

      This is true only for small ints (and small strings) of course, ie.
      a = 1001
      b = 1001
      a is b
      => False

      Since we are condemed to rely on corporeal implementations, let's just discard interning for present purposes:
      class UninternedInt (int) : pass
      uint = UninternedInt
      x = uint(1)
      y = uint(1)
      x is y
      => False
      #and so turning to matters of substance ...

      Instead var0 = var1 merely binds the name var1 to the same location (or object) as var0.

      Not really, no.

      In the simplest** case yes! [**in the hope that I'll be shown a case where this is not so]


      #to repeat myself ...
      x = uint(42)
      y = uint(42)
      x is y
      => False
      #but ...
      y = x
      x is y
      => True

      No surprises there.

      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.

      Surely not! A python name is just a label not an object in it's own right (everything in the python universe since py2.2 (?) being either an object or a name) A name cannot have it's own location (only objects do) and an assigment of one name to another causes the lval to refer to the same object as the rval.

      This becomes evident once you use closures ... 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 original name-value binding. But this is not how it works in practice - after you assign to a captured variable, the closure will see the new value.

      Surely an assignment in python is a rebinding, though not necessarily to a different object.

      I'm not sure that I follow you here!? If you assign to a captured value, you will see the new value in that namespace precisely because assignment does rebind! Of course the captured value in the higher namespace should be left intact. And isn't that exactly what happens?
      def foo (a) :
      ____print "a: %s at %x" % (str(a), id(a))
      ____def bar (b) :
      ________a = b
      ________print "assingment of captured name"
      ________print "a: %s at %x" % (str(a), id(a))
      ________print "b: %s bt %x" % (str(b), id(b))
      ____def baz (b) :
      ________print "is a still a?"
      ________print "a: %s at %x" % (str(a), id(a))
      ________print "b: %s bt %x" % (str(b), id(b))
      ____return bar, baz

      x = uint(11)
      y = uint(22)
      #not the we really need uint anymore ...
      ham, spam = foo(x)
      => a: 11 at 1493698

      ham(y)
      => assingment of captured name
      >a: 22 at 14937d8
      >b: 22 at 14937d8
      #OK so the assignment rebound a
      spam(y)
      =>is a still a?
      >a: 11 at 1493698
      >b: 22 at 14937d8
      #while leaving the capture var intact in the higher namespace ... as expected!

      I'm seeing no evidence that the any of the names have been stored anywhere ... in python that is, of course they must be in the underlying C implementation. But that speaks to C not python, nor need it c

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    52. Re:Python by rwa2 · · Score: 1

      That's very true, if you've never used any other IDE before... ever.

      Heh, funny, I feel the same way about one of the Python IDEs.
      http://eric-ide.python-projects.org/

      Very slick, has all the high end debugging and "code awareness" features.

    53. Re:Python by rwa2 · · Score: 1

      Technically every platform has a free IDE - Visual Studio Express for Windows

      I might be confused with another product, but I think Visual Studio Express expires after a month demo period.

      I had just installed it for a short project as part of a job interview a few months ago, and then couldn't use it a while later. Also it doesn't have complete unicode support, I had to research and install WinDDK to hack a silly TCHAR type into compiling, which took half the weekend to figure out.

      (I did get the job, though)

    54. Re:Python by Anonymous Coward · · Score: 0

      Learning Python would be a lot better if there was a book void of (yawn) Monte Python references within the text.

      Yes, just that makes it hard to take the language seriously, for me.

    55. Re:Python by Anonymous Coward · · Score: 0

      Don't use that word to describe a Chinese person. It's very offensive.

    56. Re:Python by kungfupangolin · · Score: 1

      Don't use that word to describe Chinese people. It's very offensive.

    57. Re:Python by Anonymous Coward · · Score: 0

      Even if they don't live in America?

      Anyway, I just call 'em chinks.

    58. Re:Python by ccccc · · Score: 1

      I might be confused with another product, but I think Visual Studio Express expires after a month demo period.

      It only expires if you don't do the e-mail registration.

    59. Re:Python by Joe+Tennies · · Score: 1

      They have Python support too. It's called PyCharm, and it's a great IDE.

      I have the following IDEs: WingIDE (pretty good... I'd love to support those guys more, but the big guns are starting to come into the market); PyDev (Eclipse-based... best free Python one available), which has gotten a lot better since I first used it and is good; and PyCharm, which is great for web development (especially Django).

      Mind you, I tend to just use a text editor and command line to do most of it.

    60. Re:Python by Anonymous Coward · · Score: 0

      What's the deal with all you niggers confusing *an* and *and*?

    61. Re:Python by ByOhTek · · Score: 1

      All single-language/paradigm groups are pretty-closed mind lots. I've not found the C# groups to be particularly better worse, than those for Java or PHP. Usually better than the Python groups, and I won't even start on the Perl community...

      No matter how good a Java IDE is, it still has a huge/critical flaw IMO, namely Java having one of the worst base libraries of any language I've used, and it's missing quite a few features (although v7 fixed most, and v8 will get most of the rest).

      Also, for the application I have to do most of my Java programming for, work files use eclipse. And honestly, aside form setting up the syntax coloring to not hurt my eyes, and so it is useful, Eclipse is just startup-and-go after about 10 minutes of work, including the download time. That is, at least, for my uses.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    62. Re:Python by oakgrove · · Score: 1

      Java was the second language I learned after Python and Javascript was my third. I found Java to be much closer to Python than Javascript was and oddly found that I picked the idioms up much quicker so I'd have to agree that Python is more like Java than Javascript once you get past the superficialities like the curly braces and semi-colons.

      --
      The soylentnews experiment has been a dismal failure.
    63. Re:Python by Anonymous Coward · · Score: 0

      Very offensive would be "chink".

      Chinaman would be "derogatory overtones" and that also depends on the context and intent.

    64. Re:Python by Anonymous Coward · · Score: 0

      Well,

      If you are going to recommend JS, then how about Lisp. Both being functional languages with functional scoping. Or VB (I know I know) It has the events that are used heavily in JS nowadays, and for interfacing with dlls and such you have object references, which will help you transition in to an OOD world.

    65. Re:Python by s.petry · · Score: 1

      Microsoft is generally pay-for, even in College. Reduced functionality at a reduce cost, but still a cost. Also have to worry about the costs just to run Windows that the Shills never mention. Unless of course you are never going to connect to anything, use external media, pay for the license to use Windows, etc..

      Oracle Java - Well, we'll see how free it is soon enough. JDK with IDE are fine for the most part. If Oracle gets their way.. well, you will be paying them forever to do anything on a computer.

      I myself prefer KDE and KDevelop. Does everything Eclipse does without all the "plug-ins".

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    66. Re:Python by Anonymous Coward · · Score: 0

      Python is a scripting language; it is a toy.

    67. Re:Python by jjrv · · Score: 1

      JavaScript is awesome. You can start by making small tools and there's a much better chance that someone uses your Roomba electricity cost vs furniture placement optimizer or other niche application if it works straight off a website. The language scales well to larger projects. With node.js and Closure Compiler you have the same language running on the server, a virtual machine with JIT, a compiler with proper type checking with type inference... And in the browser you have 3D accelerated graphics and parallel processing. It's still easy to amaze users because most people haven't seen the technology used to the fullest.

    68. Re:Python by Peristaltic · · Score: 1

      Microsoft is generally pay-for, even in College. Reduced functionality at a reduce cost, but still a cost. Also have to worry about the costs just to run Windows that the Shills never mention. Unless of course you are never going to connect to anything, use external media, pay for the license to use Windows, etc..

      Whether or not I get tagged as a shill... When I was doing my graduate work, I downloaded Visual Studio and other stuff for free from Dreamspark. Probably need to check the licensing stuff once again, but I'm still using it. Never cost me a dime.

    69. Re:Python by Capsaicin · · Score: 1

      Ooops, I made I made a lengthy reply, but attached it to the wrong post. :/

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    70. Re:Python by shutdown+-p+now · · Score: 1

      Surely not! A python name is just a label not an object in it's own right (everything in the python universe since py2.2 (?) being either an object or a name) A name cannot have it's own location (only objects do)

      Why do you believe that only objects can have its own location? On the contrary, quite clearly a variable is a named location. An object by itself is not a location, though its slots (fields) are. In fact, an object in Python is basically just identity + type + slots (locations).

      I'm not sure that I follow you here!? If you assign to a captured value, you will see the new value in that namespace precisely because assignment does rebind!

      You missed a very important part of my original example - you need to declare the captured variable as "nonlocal" in bar and baz (for which you'll need Py3k). Python semantics are that, by default, if you assign to a variable that is not declared in current scope, it is then automatically declared in that scope (thereby hiding any outer declarations). This is what you observe, not name rebinding - every scope has its own name, bound to its own location. So after you have assigned to "a" inside bar, you are no longer working with the original variable - you're working with a new variable that is local to bar, and of course baz will not reflect any changes you make to it. Try it with "nonlocal", though, so that all three functions work with the same variable, and you'll see the effect I had described.

    71. Re:Python by Capsaicin · · Score: 1

      Why do you believe that only objects can have its own location?

      It follows necessarily from the division of python things into the dichotomy of names and objects.

      On the contrary, quite clearly a variable is a named location. An object by itself is not a location, though its slots (fields) are. In fact, an object in Python is basically just identity + type + slots (locations)

      As implemented, identity is location. You can id() any object and it will give it's location (identity) how can it be that the object has the location give? The slots (if by slots you don't mean the slot names) are themselves objects (with distinct locations) as is the type of course. Clearly I'm no longer following your narrative. However this conversation has convinced me that the Pythonista are correct when they insist that it is not productive to speak of 'variables' in regard to python names.

      You missed a very important part of my original example - you need to declare the captured variable as "nonlocal" ...

      I beg your pardon, you are quite correct, I read the 'and' as enumerative rather than conjunctive.

      We don't have py3 installed anywhere, but if you can show me some py3 code where an assignment happens to a variable (in any namespace or combination thereof) which changes the value of an immutable type without changing the value returned from id() (ie location), I'll install it on a personal box just to see.

      Python semantics are that, by default, if you assign to a variable that is not declared in current scope, it is then automatically declared in that scope (thereby hiding any outer declarations). This is what you observe, not name rebinding - every scope has its own name, bound to its own location. So after you have assigned to "a" inside bar, you are no longer working with the original variable - you're working with a new variable that is local to bar, and of course baz will not reflect any changes you make to it.

      Yes that's clear. Any assignment to a in bar hides foo.a in that namespace. Thus if we placed z = a before the assignment to a, it would barf (bar.a being undeclared at that stage and foo.a being hidden by the subsequent assignment.) Similarly a in baz is (the unchanged) foo.a (there being no attempt to create a baz.a in the fn).

      Try it with "nonlocal", though, so that all three functions work with the same variable, and you'll see the effect I had described.

      Are you sure that this is not a case of rebinding? (ie. can you show that the same id() is retained) Interesting, I may need to play with py3 for while.

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    72. Re:Python by Capsaicin · · Score: 1

      OK, I just installed py3, stuck the lines 'nonlocal a' and 'print("a: %s at %x" % (str(a), id(a)))' (oh yeah and py3d all the print statements of course) a line above the assignment a = b in bar from the example above ... unsurprisingly it really is just a rebinding. :(


      a = uint(42)
      b = uint(42)
      a == b, a is b
      => (True, False)
      ham, spam = foo(a)
      => a: 42 at 205c4d0
      ham(b)
      => a: 42 at 205c4d0
      > assingment of captured name
      > a: 42 at 205c518
      > b: 42 bt 205c518
      spam(b)
      => is a still a?
      > a: 42 at 205c518
      > b: 42 bt 205c518
      '%x' % id(a)
      =>'205c4d0'

      "Assingment [sic] of captured name" Sheeesh, the coffee's not working anymore ...

      All nonlocal does here is make the name from the higher namespace the operative name, which is then rebound by the assignment in the lower namespace. Not that dissimilar from global for this particular example. And as expected the a in the __main__ namespace still exists as itself.

      So no evidence that names themselves have locations, which of course they don't! Sadly it appears that it's not my turn to learn today.

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    73. Re:Python by badkarmadayaccount · · Score: 1
      --
      I know tobacco is bad for you, so I smoke weed with crack.
    74. Re:Python by Tesseractic · · Score: 1

      I have to disagree with your disagreement.

      Although I don't know the language myself, and are therefore not qualified to wholeheartedly recommend it, your denial of Python as an appropriate language to learn seems full of holes.

      The anonymous questioner seeks to know which language to become "native to", which means that it should be a general purpose language capable of doing lots of stuff quite well. He (or she) says they've worked in the industry and have quite a bit of experience in different programming languages. With the exception of performance, native Python code can do quite a lot very elegantly, or so I am led to believe. In addition it can interface to lower level languages (C or C++ in particular) for doing performance-critical work.

      Just recently I encountered a project I want to use whose main implementation language is Python, but for which the time-critical portions are done in another language.

      I now find myself wishing I made an effort to become fluent in Python after I saw the following when it was first posted:

      https://xkcd.com/353/

      Enjoy.

    75. Re:Python by squiggleslash · · Score: 1

      It's OK, I was referring to a man made out of porcelain. Totally different.

      --
      You are not alone. This is not normal. None of this is normal.
    76. Re:Python by shutdown+-p+now · · Score: 1

      It follows necessarily from the division of python things into the dichotomy of names and objects.

      But where do you get that dichotomy? There's nothing in the Python language spec that implies it.

      As implemented, identity is location. You can id() any object and it will give it's location (identity) how can it be that the object has the location give?

      Identity and location are not the same. Identity is just that - a piece of information that uniquely identifies an object. It does not have to correlate in any way to its location, and, indeed, on many implementations (e.g. Jython or IronPython, which both use compacting GCs that move objects around in memory) it does not.

      I certainly don't in any way imply any connection to identity when I speak of variables being a bindings of names to locations. "Location" is used here strictly as a term for an overwritable chunk of memory that stores a value (i..e a "memory location"). This particular terminology is also the established one in the field (PL design) - I don't know when it was first established, but e.g. R5RS (Scheme) already uses it:

      "An identifier may name a type of syntax, or it may name a location where a value can be stored. An identifier that names a type of syntax is called a syntactic keyword and is said to be bound to that syntax. An identifier that names a location is called a variable and is said to be bound to that location. The set of all visible bindings in effect at some point in a program is known as the environment in effect at that point. The value stored in the location to which a variable is bound is called the variable's value. By abuse of terminology, the variable is sometimes said to name the value or to be bound to the value. This is not quite accurate, but confusion rarely results from this practice."

      (as a side note, the semantics of variables in Scheme is exactly the same as in Python, except that they must always be declared explicitly)

      The slots (if by slots you don't mean the slot names) are themselves objects (with distinct locations) as is the type of course.

      How do you obtain the identity of an object slot, then?

      The type is itself an object, yes. However, when I was speaking of objects as id+type+data (which, by the way, is true in any OO language), the "type" here is more precisely a reference to a type object. That reference is not itself an object, though it is a value.

      We don't have py3 installed anywhere, but if you can show me some py3 code where an assignment happens to a variable (in any namespace or combination thereof) which changes the value of an immutable type without changing the value returned from id() (ie location), I'll install it on a personal box just to see.

      I cannot show you such, and it was not the gist of my argument. As explained above, anyway, id() is not the same as location. Even if it were, when you call id() on a variable, you get the identity of the object referenced by that variable, not of the variable itself.

      By the way, it seems to me that your understanding of variables is closer to what it is in languages with dynamic rather than lexical scoping - i.e. you think of them in terms of dynamically rebound names in a series of nested scopes that are themselves also dynamically generated. In a language like that, variables flow from function to function when they call each other, e.g. in Perl:

      $str = "This is a global";

      sub foo {
      local $str = "This is a dynamic local";
      bar();
      }

      sub bar {
      print $str; # prints "This is a dynamic local", because it was called from foo
      }

      But, of course, Python is strictly lexically scoped.

      As for a Python code sample, I had to think a bit about how to get my point across, and to clearly demonstrate that there's more to variable tha

    77. Re:Python by Anonymous Coward · · Score: 0

      Also, Dude, chinaman is not the preferred nomenclature.

    78. Re:Python by Anonymous Coward · · Score: 0

      Start with 2.7, not 3.x

      Some important packages are still in the process of being converted to 3.x versions.
      And most documentation is based on 2.x versions.

    79. Re:Python by tixxit · · Score: 1

      Thanks. I was, of course, exaggerating for effect. I'm aware there must be other languages that use the prototype-style OO system. However, looking at that list, I see 2 other languages that I recognize: Lua and Self. Perl, R, and Tcl I obviously recognize, but all have multiple object systems, so it shouldn't be too surprising that someone's implemented prototype-based ones. Looking through list further, most seem to be ancillary scripting languages for some larger system (or made to fit this role in other systems). This is very useful, but still niche.

    80. Re:Python by Anonymous Coward · · Score: 0

      Java doesn't throw an error in that case. It instead converts the integer to a string and appends it to the string.

    81. Re:Python by Capsaicin · · Score: 1

      But where do you get that dichotomy? There's nothing in the Python language spec that implies it.

      I disagree, I think it's strongly implied. Moreover, this is about narratives, yours, mine and the spec, which allow programmers to understand their tools in such a way as to avoid surprise. And arguably also about their pedagogic efficacy. No doubt the language spec has unrivalled authoritativeness, but I doubt its suitability for the aforementioned purposes.

      Identity and location are not the same.

      Theoretically of course they are not! By the same token the very concept of location forms no necessary part of Python. (And obviously 'location' in this context refers to memory location.) Nor did I write "[a]s implemented," merely to pad the text. If I speak of "location," and do so as a synonym for identity, or the object residing at that location, that merely reflects CPython implementation. To quote the language spec:

      Every object has an identity, a type and a value. An object's identity never changes once it has been created; you may think of it as the objectâ(TM)s address in memory. The âisâ operator compares the identity of two objects; the id() function returns an integer representing its identity (currently implemented as its address).
      [Emphasis added]

      Fortuitously, this implementation detail does allow us to examine claims about actual location, such as the one in your post above, that "[e]very Python variable is bound to its own separate location, and assignment copies the value of one location to another." Accepting your definition of variable from the same post, namely "conventional terminology is 'location' for a chunk of memory that is used to store a value, and 'variable' for a name bound to such a chunk of memory," this claim demonstrably incorrect!

      My contention above, to which you took exception, was that while in C var1 = var2 does in fact copy the value into two separate locations, in Python by contrast, it "merely binds the name var1 to the same location (or object) as var0." Thus:

      x = uint(42)
      y = uint(42)
      x is y
      => False
      #but ...
      y = x
      x is y
      => True

      A fortiori if we do not counteract interring. This should dispose of the contention that var1 = var2 "copies" the contents of the variable in the same way it does in C, along with the idea that every Python name is bound to it's own location.

      More interesting (to me) was the implications raised by your statement that followed:

      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 original name-value binding.

      This seemed to imply that assignment can happen without binding, and it posits an extra level of indirection between a name and its object. Apparenty that's not what you meant since you now write

      I cannot show you [changes to the value of an immutable without changes to its id()], and it was not the gist of my argument. As explained above, anyway, id() is not the same as location. Even if it were, when you call id() on a variable, you get the identity of the object referenced by that variable, not of the variable itself.

      We wouldn't expect the name to have an identity, after all "a name cannot have it's own location (only objects do)" ;)

      In any case I peppered your closure wi

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
  2. Brainf*ck by greywire · · Score: 3, Informative

    en.wikipedia.org/wiki/Brainfuck

    --
    -- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
    1. Re:Brainf*ck by cupantae · · Score: 1

      I like the way you censored yourself in the subject and then were forced not to in the URL.

      --
      --
    2. Re:Brainf*ck by ClickOnThis · · Score: 1

      en.wikipedia.org/wiki/Brainfuck

      Oh man. And I thought Markov Algorithms were hell to read.

      --
      If it weren't for deadlines, nothing would be late.
    3. Re:Brainf*ck by greywire · · Score: 1

      Yep. I thought that was funny too.

      --
      -- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
    4. Re:Brainf*ck by thebeige · · Score: 1

      LOL

    5. Re:Brainf*ck by Anonymous Coward · · Score: 1

      If you want a hard to read language you should check whitespace language
      For something more colorful Piet is the obvious language.

    6. Re:Brainf*ck by cupantae · · Score: 4, 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.

      --
      --
    7. Re:Brainf*ck by Anonymous Coward · · Score: 0

      Except no one is laughing? :)

    8. Re:Brainf*ck by Anonymous Coward · · Score: 0

      Personally, I prefer Befunge.

    9. Re:Brainf*ck by Amouth · · Score: 1
      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
    10. Re:Brainf*ck by skids · · Score: 1

      Actually both not bad suggestions if the goal is just to have fun with brain teasers.

      If you want both brain teasers and something that can actually be useful for doing hobby-related things (i.e. performance is not a consideration) then Perl 6 is very fun to mess around with these days. That would strike me as more satisfying to someone who's been around the block already.

    11. Re:Brainf*ck by Amouth · · Score: 1

      not so much perl 6 as just perl in general.. but also given what they guy said of his age & what he did i would assume he already knows perl.

      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
  3. re by Anonymous Coward · · Score: 5, Funny

    "...help me Slashdot, you're my only hope."

    You're screwed.

    1. Re:re by cupantae · · Score: 1

      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 :(

      --
      --
    2. Re:re by epine · · Score: 1

      OP thought to gain our most sincere recommendations by first forming a nerdish bond.

      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.

    3. Re:re by wazafoojitsu · · Score: 1

      Finally a voice in the aethers I can hear, thank you.

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    4. Re:re by Genda · · Score: 2

      Friggin Nerf Herders...

  4. Development environment by Lord+Lode · · Score: 2

    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...

    1. Re:Development environment by PlastikMissle · · Score: 5, Informative

      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.

    2. Re:Development environment by wazafoojitsu · · Score: 1

      Awesome, more great advice, thanks and appreciation!

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    3. Re:Development environment by shutdown+-p+now · · Score: 1

      If you already have some past background in C or C++, then it would probably be wise to stick to that. The demand is still high today - growing, in fact, since native languages are better suited for mobile devices due to perf & battery restrictions, and C/C++ is pretty much the only native option when you need portability (e.g. iOS/Android).

      If you are going to go the C++ route, I would suggest looking at Qt Creator - it's the single best cross-platform C++ IDE today, and it's plainly the best if you want to do GUI development. Qt is really a good toolkit - it is designed much like Java class libraries, but retains C++ heritage, too, and is very fast - and in Qt Creator you also get all the tools to make development that much more convenient (UI designer etc).

    4. Re:Development environment by Anonymous Coward · · Score: 0

      Or SharpDevelop - http://www.icsharpcode.net/OpenSource/SD/ although I have never tried this for a substantial project.

    5. Re:Development environment by d3jake · · Score: 1

      C/C++: Do those in Linux for best ease of use (compiler and debugger come with the OS)

      I, personally, like using Code::Blocks (http://www.codeblocks.org/) as a C++ IDE. It's multi-platform, so if you're collaborating with others, it won't matter which OS they're on: You can pass your project\code files with ease. I've also found it to be more straightforward than Visual Studio, fewer options means it can do less, but I've never found Code::Blocks to be lacking any feature that I needed. Additionally, it is open sourced, so if there was a bug found, or a feature missing that you want to correct, it's open for that.

    6. Re:Development environment by Anonymous Coward · · Score: 0

      The Express version of C++ doesn't support all the high end features and optimization that the paid version does, which is probably fine for the sort of uses the OP is concerned with, but you'd have a difficult time doing extremely high performance stuff with it.

      C# and VB.net on the other hand compile to the same IL bytecode, so the Express version is simply missing some of the IDE features that are available in the paid version. Additionally, you can get the C# and VB.Net compiler for free without the IDE by downloading the SDK.

      The Express version EULA probably also prohibits commercial use (again, probably not a concern for the OP), but I'm not sure how that is enforceable with the .Net languages, since you can always compile with the SDK, which has no such restriction.

    7. Re:Development environment by FrootLoops · · Score: 1

      With C#.NET you have two choices for UI's: WinForms (old style, higher adoption) and WPF (new style, lower adoption). WPF has a steep learning curve, a lot of powerful features, and a lot of quirks--in my experience (as a rule of thumb) older people don't like it, younger people do.

      If you're looking for a way to make Windows-only GUI-based apps, C#.NET Express is a great way to go. If you're looking for a challenge and some interesting ideas, go WPF, if not go WinForms.

    8. Re:Development environment by Anonymous Coward · · Score: 0

      Yes, C++ will make you popular on LKML.

    9. Re:Development environment by nrjyzerbuny · · Score: 1

      There are no license restrictions on use for the output of the .NET Express series of products.

    10. Re:Development environment by Anonymous Coward · · Score: 0

      Cool - that's surprising in a good way!

    11. Re:Development environment by Anonymous Coward · · Score: 0

      Yep, C# on linux is MonoDeveloper

  5. Your answer by Anonymous Coward · · 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.

    1. Re:Your answer by lightenergy · · Score: 0

      You are not being rude. This person isn't asking the right question. I think that they are just farting around.

    2. Re:Your answer by Anonymous Coward · · Score: 0

      You are not being rude. This person isn't asking the right question. I think that they are just farting around.

      It's a trick by the gamemaker trolls in order to spam their nonsense.

      Captcha: shaved.

    3. Re:Your answer by wazafoojitsu · · Score: 1

      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..

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    4. Re:Your answer by wazafoojitsu · · Score: 0

      The 'right' question meh. I bow to your judgement. Next time I will endeavor to git er right. Or, mebe you could read through some of my replies to the comments and get an idea and post a USEFUL comment. Or not. You probably would answer the wrong question. Thanks anyway.

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    5. Re:Your answer by ClickOnThis · · Score: 1

      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 first language, but perhaps also for someone in your position who is returning to the game after an absence.

      Good luck.

      --
      If it weren't for deadlines, nothing would be late.
    6. Re:Your answer by Isaac+Remuant · · Score: 1

      +1 insightful.

      You could be more diplomatic, give examples and beat around the bush but it still wouldn't change a thing.

      --
      "Science can amuse and fascinate us all, but it is engineering that changes the world. " - Asimov.
    7. Re:Your answer by Genda · · Score: 1

      Then it is the farter that is being rude???!!! And what of the many Fartees?

    8. Re:Your answer by Belial6 · · Score: 1

      I'm a huge fan of instant gratification when it comes to learning programming. Get something on the screen, and you can build from their. From that, I would say, follow the Python advice, and install XBMC. It is a fully fleshed out application in heavy use, so you don't have to (figuratively) learn metallurgy to learn automotive to learn glasswork to learn printing so that you can make a decal for your car window.

    9. Re:Your answer by khallow · · Score: 1

      I don't think you get it. There's one of you and a zillion slashdot readers. It's far more effective for you to do a little work to save a whole community a considerable amount of time.

  6. C! by Anonymous Coward · · Score: 0

    C of course! Then start hackin' on some kernel code to test your skill ;)

    Seriously though; you say you don't want to go lower then C, well C is still extremly popular and you can do pretty much anything you like with it.

    1. Re:C! by Anonymous Coward · · Score: 0

      The author put quotes around 'lower-level'. I wonder if he or she knows what they are saying (high level languages vs low level languages). Is the author trying to say he or she doesn't like assembly (pretty much the only thing lower level than C except maybe machine code or flipping switches)?

    2. Re:C! by rubycodez · · Score: 1

      Forth can be considered a low level language too, yes operating systems have been written in Forth.

    3. Re:C! by Anonymous Coward · · Score: 0

      ... and what fun it was to crash the OS with an FP error by typing "1 0 /" on the command line, those were the days

    4. Re:C! by spiffmastercow · · Score: 1

      I'd argue that FORTRAN is lower level than C, since its syntax is built around the assembly language of an early computer.

    5. Re:C! by rubycodez · · Score: 1

      nope, you get a "throw" which you can test for

    6. Re:C! by dlingman · · Score: 1

      Go collect some caterpillars. Raise them well, and then release them. You're done. (obligatory XKCD) http://xkcd.com/378/ I know you said you didn't want to do low level, but you could use this for any language...

    7. Re:C! by phantomfive · · Score: 1

      lol no! It's a full-featured 3rd-generation language!!

      --
      "First they came for the slanderers and i said nothing."
    8. Re:C! by Anonymous Coward · · Score: 0

      It really depends on which version of Fortran that you are talking about. Really old FORTRAN (before 77) is probably lower lever than C in some ways, but also less powerful for system work, since it was never intended for that. Later versions, especially 95 and newer are certainly higher lever than C, including all sorts of array operations and object orientation.

  7. PHP by schroedingers_hat · · Score: 5, Funny

    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.

    1. Re:PHP by outsider007 · · Score: 0

      Php is many things. Clean and elegant are not among them.

      --
      If you mod me down the terrorists will have won
    2. Re:PHP by Anonymous Coward · · Score: 0

      thejoke.png

    3. Re:PHP by Prosthetic_Lips · · Score: 1

      I believe that was sarcasm:
      :: clean, elegant - um, not so much.
      :: consistent, well-thought out syntax - again, nope.
      :: easy to debug - he gave a great example of how the error messages are complete garbage
      :: secure by default - see how he keeps escalating the humor?

      Pure comedy genius. Right up there with Craig Ferguson!

    4. Re:PHP by Anonymous Coward · · Score: 0

      look up!, something just shot waaaay over your head.

    5. Re:PHP by Anonymous Coward · · Score: 0

      I know you were going for sarcasm, but that IS easy to debug compared to say, C++ template errors, an example of which I'd paste, but this comment box isn't large enough to contain it.

    6. Re:PHP by Anonymous Coward · · Score: 0

      EXACTLY! NOW WE CAN LAUGH

    7. Re:PHP by interval1066 · · Score: 0

      LOL!!! That's a GREAT JOKE. +5 internets.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    8. Re:PHP by Anonymous Coward · · Score: 0

      An integer overflow bug in the PHP core was originally fixed with a test like this:

      if (size > INT_MAX)

      When this didn't work they used a float. I'm not making this up.

  8. What do you want to hack? by countach · · Score: 1

    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.

    1. Re:What do you want to hack? by wazafoojitsu · · Score: 1

      General purpose programming. I just want to become expert with a Language that can do utilities, small-scale applications, maybe some web work, and has a lot of libraries, like PHP, I am really liking this Language so far...

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    2. Re:What do you want to hack? by shutdown+-p+now · · Score: 1

      I would strongly recommend against PHP as an introductory language. It is probably the single worst mainstream language on the market today, and is the breeding ground of bad habits, sloppy code and security holes. See the article linked from my sig for some details.

      If you want to go for web development, and do not feel "hip", then Python is a very reasonable middle ground. Java is boring and tedious, but will put bread on the table with certainty. Ruby is where the "hip" guys hang out. ASP.NET MVC has good tooling (on par with Java, if I dare say so), but is a pleasure to use - the catch being that it's tied to Windows for development and hosting.

    3. Re:What do you want to hack? by Serious+Callers+Only · · Score: 1

      Choose something other than php and you will soon come to realise why everyone hates it so much, and why it is an embarrassing suggestion for 'general purpose utilities'. Seriously, even if you love php, or esp. if you love php, if you want to learn anything about programming, try any other language.

      There is no kind way to say this, so I'll just say it - PHP is the worst possible choice for anything other than getting a small web page up in a hurry, and is a million miles from anything to do with 'general purpose utilities', so for your stated purpose it is absolutely tell the wrong choice.

  9. For personal reasons? by gman003 · · Score: 2

    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".

  10. Some half-truths and prejudices by Anonymous Coward · · 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

    1. Re:Some half-truths and prejudices by ClickOnThis · · Score: 2

      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 of at the moment. I invite others to augment/modify the above.

      --
      If it weren't for deadlines, nothing would be late.
    2. Re:Some half-truths and prejudices by elashish14 · · Score: 4, 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.

      --
      I have left slashdot and am now on Soylent News. FUCK YOU DICE.
    3. Re:Some half-truths and prejudices by Isaac+Remuant · · Score: 1

      A good idea here would've been to say good (or used) instead of best. Less prone to create useless arguments.

      --
      "Science can amuse and fascinate us all, but it is engineering that changes the world. " - Asimov.
    4. Re:Some half-truths and prejudices by Anonymous Coward · · Score: 0

      Mostly agreed, but C# is better for any serious work than Python, and it's certainly better for enterprise work. I have to work in Java occasionally and it's painful compared to C# (as a language and .NET as a runtime).

    5. Re:Some half-truths and prejudices by Anonymous Coward · · Score: 0

      Best Language for Learning Coding and NOT having to deal with annoying glyphs like {} and semi-colons: VB.NET!!!
      Sure, it won't learn anyone how to code in a squirrly brackets language.
      It does almost everything Java/C# does (and the few things it DOESN'T do I've never needed anyhow) and since they both compile to the same byte-code...I prefer it to Java and C#, but then, I'm not a Java/C# snob.
      VB.Net express is free.

    6. Re:Some half-truths and prejudices by Slugster · · Score: 1

      Best for bioinformatics: R, SAS

      Excuse me for asking but ( as somebody who got some schooling in programming and then never got a job doing it) what makes any language "better for bioinformatics"? That seems like saying "C++ is better for programs about cats, but Java is better for programs about dogs".

      I have seen this asserted with Linux distros too: that some are "better" for one thing or another--such as bioinformatics. What would be the basis of such an argument?


      As for my own hobby use,,,,,, the first requirement is a drag-and-drop GUI editor, since 99% of what I need is a Win32-GUI-capable program. I remember having to learn to type out code to make a button; it was boring and repetitive and generally counter to productivity (even from a hobbyist perspective). It allowed some variations not possible in the drag-and-drop editor, but those usually weren't needed. Nobody does it unless they need to, and they usually don't.

      It's as silly as people who ask "How to design websites" and somebody always says "Notepad". -Which will work, but it is a terrible way to approach the matter at all. You can spend an hour typing out and troubleshooting a few pages of basic code, when a GUI editor can let you do the same thing, correctly, in under two minutes. For anyone wanting to lean programming for hobby uses, there is no benefit in making it more difficult than it has to be.

    7. Re:Some half-truths and prejudices by jgrahn · · Score: 1

      Best for enterprise work: Java

      Where "enterprise" is defined as: places where they like to do everything in Java,

      Seriously, I roughly understood the other categories, but not this one.

  11. JavaScript by Anonymous Coward · · Score: 0

    You should definitely learn HTML, CSS, and JavaScript. Get them down cold and then learn SQLite, a limited subset of SQL that will be available on webapps, desktop apps using AIR, native applications on iPhone and Android, etc. etc.. Here's why:

    Adobe AIR -- build desktop apps using HTML/CSS/JavaScript, uses sqlite for databases. Apps work on Windows & Mac desktops.
    NodeJS -- build slick event-based and asynchronous network applications on a Linux platform.
    PhoneGap -- code cross-platform mobile apps!

    Honestly, this stuff is all just plain too cool to ignore.

    1. Re:Javascript by l0ungeb0y · · Score: 1

      I should add that by using tools like Phonegap, you can quickly write apps for iOS and Android devices using HTML and Javascript.

    2. Re:Javascript by shutdown+-p+now · · Score: 3, 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.

    3. Re:Javascript by gl4ss · · Score: 2

      there's stuff like http://www.webtoolkit.eu/wt if you want to write both server and clients in one go.

      --
      world was created 5 seconds before this post as it is.
    4. Re:Javascript by Anonymous Coward · · Score: 0

      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.

      How many other languages allow you to instantly see results when you save source?

      Check meteor out. IMHO that's pretty slick.

  12. you should learn C++ and a scripting language by Anonymous Coward · · Score: 0

    It's one of a very few languages that lets you efficiently target the hardware at a machine-cycle level while still allowing some measure of high level constructs with stl and boost containers, templates and so on. It has bindings to everything under the sun, such as operating system internals, OpenGL or DirectX, and so on. Supporters of certain other languages like to trot out little canned examples where that language can compete with the performance of C++, but they're just that: little canned examples. Look at real projects, say, modern game engines - it's a C++ world, because it can be screaming fast and interfaces well to DX and GL. It is statically typed, so it doesn't have the issues that languages like Python have in this area. Writing a compiler, for almost any other language? Chances are you'll be doing it in C++.

    Then, for things that don't need that level of performance, you should pick up some scripting language, of which there are many choices. They're good for banging out little things on an ad-hoc basis where their performance isn't a major factor.

  13. C or Java by phantomfive · · Score: 5, Insightful

    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."
    1. Re:C or Java by Anonymous Coward · · Score: 1

      It sounds like he's doing this in his spare time, so I'd base it largely off of what platform he's running, what gets him a good free IDE, and aim for something where he can build up user applications pretty quickly. His IDE is going to shape so much of how he works, and which particularly failures in it are going to cost him extra time. My experience has been mostly with JBuilder, XCode and Visual Studio, but the problem I have in recommending the latter is that I don't know what the free version of it is like and I never used the GUI-oriented APIs on Windows. If those are both fine, then he at least has Java, Objective-C, and C# to choose from, and I really don't think he'd go too wrong with any of them.
       
      No language is perfect and no language is going to make him a master of every programming situation. I would heavily, heavily recommend avoiding flavor of the day languages and avoiding the kitchen sink aspects of mainstream languages that have become so trendy -- e.g., It's object-oriented! And procedural! And functional! And it's also a floor wax, and a dessert topping! -- but at the same time I'd recommend that after he becomes very comfortable in either C or some type of object-oriented language, he tries switching over to something built in a different way from the ground up, such as a functional language.

    2. Re:C or Java by Anonymous Coward · · Score: 0

      I've found that once one understands C, picking up other languages is fairly simple. Further, most employers assume that if you can handle C, you can handle any other language and will allow you to cross-train at their convenience. I've never been in a situation where an employer looks at a Java programmer and assumes that programmer can toss off a quick linux kernel module in C. But as someone whose job duties include the odd linux kernel module written in C, I'm constantly expected to know every other language under the sun or to be able to pick it up on a moment's notice.

      As a professional programmer, you will not be restricted to a single language. Even C# programmers are expected to toss off the odd shell script or struggle through getting a PHP package up and running. Myself, in my job, I'm expected to be fluent in C, C++, Java and SQL, to be passable in JavaScript, PHP, Python, Perl and TCL, and to be familiar enough to port in Pascal, various flavors of Basic as well as a few old one-off dev tool languages.

      I don't mean to scare you with this list, just to give you an idea of what is going on. Really, once you refamiliarize yourself with C, take a tour through the latest thinking in design patters and brush up on the basics of at least one OO language (C++ or Java, by preference), you'll find the rest are mainly variants on syntax and how much automation is done for you.

      The very best thing you can do once you're up on your language is to find a book on SCRUM development and learn the lingo. It seems that every development house is heading towards lean and SCRUM is the flavor of the week. Even this isn't too hard. It's just a formalization of what we all did years ago to get around the nightmare that is waterfall.

      Good luck, and start cranking out those "Hello, World!"s

    3. Re:C or Java by JoeMerchant · · Score: 1

      Free, cross platform, and awesome:

      http://qt-project.org/

    4. Re:C or Java by shutdown+-p+now · · Score: 1

      My experience has been mostly with JBuilder, XCode and Visual Studio, but the problem I have in recommending the latter is that I don't know what the free version of it is like and I never used the GUI-oriented APIs on Windows.

      If you do managed development, VC# Express is definitely quite enough to cover hobby stuff - about the only annoyance I can think of is the lack of integrated unit testing. As far as GUI APIs go, WPF is probably the single most advanced GUI toolkit on the market today, with QtQuick being the only contestant that comes close (but still not a match, at least not until they add some stock desktop widgets to it).

      avoiding the kitchen sink aspects of mainstream languages that have become so trendy -- e.g., It's object-oriented! And procedural! And functional! And it's also a floor wax, and a dessert topping!

      But all mainstream languages have become kitchen sinks today. When even C++ has lambda functions, there's no escape (well, other than C). And it's not a bad thing - the point is not in enumerating all the fancy words for what it can do, but rather just doing things more conveniently than before. Map/filter/fold is "functional", but I couldn't care less - what I do care about is that it's easier to write and easier to read than a bunch of nested loops and conditionals.

    5. Re:C or Java by Anonymous Coward · · Score: 0

      You absolutely and utterly want to dive headfirst into Java. Write and publish as much code as you can,
      because Oracle will need some more suckers to sue once they lose to Google.

  14. I agree - Python by kawabago · · Score: 1

    Python is hugely versatile, you can easily port C routines into Python. It's free and open source, what more could you ask for? I haven't used it but the IBM backed open source Eclipse IntegratedDevelopmentEnvironment seems to be very popular.

  15. Ruby by Anonymous Coward · · 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.

    1. Re:Ruby by BitterOak · · Score: 3, Insightful

      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.

      --
      If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
    2. Re:Ruby by mooingyak · · Score: 1

      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.

      Seconded-ish.

      I'm also a ruby fan. I've tried python and didn't like it, but I know some people who love it, which suggests that it's at least partly a matter of taste. Try a few different things. Come up with a fairly simple (but not TOO simple) program, and then try to implement it in a few different languages. Some of them may click for you, and some of them may feel wrong. Go with the one that offers the fewest surprises when you try to do something.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    3. Re:Ruby by Anonymous Coward · · Score: 0

      Thirded. Ruby is a gorgeous language, easy to pick up for anyone comfy with OOP and fun to write.

      And Rails can be a job ticket...though personally I wish it weren't so...railsy. On one of my personal sites I use Ruby CGI, and it's a lot more fun. And no, I haven't benchmarked anything on it. Personal site, remember?

  16. Consulting Background? by Anonymous Coward · · Score: 0

    As a consultant with 20 years of experience, there is only one language you should consider ABAP. Everything else, especially python is a toy.

  17. Why do people ask questions like these? by Anonymous Coward · · Score: 1

    Why do people who claim to have 20+ years of software development experience always seem to ask these sorts of questions? Why can't they take some initiative and try out a few modern languages for themselves, without asking which ones they should try?

    Seriously, they've probably heard of anything that'll be remotely useful. There's been a lot of "buzz" around Ruby, Python and JavaScript lately. So those are the languages that people here will (and already have, based on the some of the comments) suggest trying out. It's not necessary to ask Slashdot, or Stack Overflow, or any other community about them.

    1. Re:Why do people ask questions like these? by cupantae · · Score: 4, Funny

      in a completely different sector

      OP said he [she?] has been in a completely different sector. Who knows what the technology is like there?

      --
      --
    2. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      He's a consultant, asking stupid questions and getting other people to do everything for them is what they DO.

    3. Re:Why do people ask questions like these? by JWSmythe · · 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.

      --
      Serious? Seriousness is well above my pay grade.
    4. Re:Why do people ask questions like these? by wazafoojitsu · · Score: 5, Informative

      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.." :jimi
    5. Re:Why do people ask questions like these? by absurdhero · · Score: 1

      It sounds like any popular general purpose language will do just fine for you. There are more important concerns you should be spending your brain power on. Just flip a coin, pick a language, and do a project. If you don't have any specific goals right now, then don't worry about it. If you later decide you would like to make programming a full-time thing, then you can more carefully learn a language that fits well with the problem domain you are interested in.

      As for suggestions, language that are presently popular and have have supporting libraries for just about everything include: Python, Ruby, Java, and C#. There are many more but these are a few safe suggestions no matter what platforms or types of projects interest you.

    6. Re:Why do people ask questions like these? by ClickOnThis · · Score: 2

      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.

      --
      If it weren't for deadlines, nothing would be late.
    7. Re:Why do people ask questions like these? by phantomfive · · Score: 1

      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.

      Like what? Seriously, I'm interested.

      --
      "First they came for the slanderers and i said nothing."
    8. Re:Why do people ask questions like these? by phantomfive · · Score: 2

      lol we know what a hack is, we don't know what you want.

      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 good answer.

      --
      "First they came for the slanderers and i said nothing."
    9. Re:Why do people ask questions like these? by overbaud · · Score: 1

      "I am only interested in general purpose work, utilities"

      They (all reasonably mainstream languages) are all fine for this. You can even get the free version of visual studio and do C# / VB.Net and by learning the libraries of one pretty much know everything you need for the other. C# is a lot like Java and flicking from one to the other is easy as is stepping down to C++ or over to Javascript. I'd say Java / C#. Both free, both compliment the other and MSDN is huge, seriously HUGE in depth and breadth. C# will also lead into powershell which may be better suited to what you want to do potentially.

      --
      Users... the only thing keeping 1st level support from being the bottom feeders.
    10. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      No, it really isn't. Which is why I am an AC since when the first three digit accounts were being distributed (yes, that long).

      If you're interested in writing general purpose utilities, go for stuff that is actually deployable without a fuss. Python, C/C++, Perl. Forget java, Ruby, javascript, C#, and anything that is not cross-platform. You will find bindings for the UI toolkits if you need them (I suggest Qt, as that will work on anything from phones to embedded hardware to regular-joe windows boxes, to proper hardware running Linux, FreeBSD and even the fruit stuff). If you're really into fruit juice, Objective C is probably an excellent choice.

      You mentioned you wanted a development platform but don't want to waste money? Look for the FLOSS stuff. You will find IDEs, compilers, debuggers, profilers, and the full documentation toolset. I can't recommend one as I prefer to just use vim and Makefiles, so the only IDE I can name off the top of my head is "Eclipse" :-).

      Just a note: the FLOSS stuff will run easier, faster and better in a *nix, and in that case, Ubuntu is probably the easiest one to deploy right now.

      For version control, go directly to one of the three best: git, mercurial, or bzr, it is probably worth learning all three, actually.

    11. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      And as noted in your comment, you're a worthless cunt. Here's some expert advice: choke on a bag of dicks.

    12. Re:Why do people ask questions like these? by dewatf · · Score: 1

      Avoid having to learn PHP if at all possible.

      Here are the rantings of someone driven insane by PHP:
      http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

    13. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

          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.

      This is the best answer I've seen yet - it entirely depends on what you want to do.
      If you want to program smart phones, Javascript won't get you anywhere, nor will python or perl or C.

      But if you want to program web pages, Java or Objective C aren't terribly good.

      Each language has it's places where they are appropriate to use so the OP needs to think about what he wants to do rather than what language to do it in.

    14. Re:Why do people ask questions like these? by hamster_nz · · Score: 1

      I don't think that you have any more to learn from picking up a new language - either challenge yourself with something like Project Euler (learn something interesting every night!). Your 'old' languages will get a real workout, becoming tools again.

      Or, if you want to go into hardware then get a cheap FPGA board, and design your own stuff.

    15. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      1000x, this.
      There is no single "right" tool for all jobs. With the languages this guy listed, he should already know that.

      He needs to think long and hard about what he wants to do, and then come back and tell us EXACTLY what he wants to accomplish. THEN we can give him some real advice about which languages and APIs to use.

    16. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      You suggestion Qt earlier and then for an IDE throw out Eclipse? There is Qt Creator, which is an IDE and works quite well.

    17. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      Phone apps? Java.

      Umm...no. If you write your phone apps in Java, they're going to be limited to Android and possibly J2ME. But both the iPhone and Android support C/C++ and HTML5/JavaScript. So if your app is complex, write as much of it as possible in portable C/C++ and add a thin layer of platform-specific Java/Objective-C on top. But if it's a pretty simple app, HTML5/JavaScript should be the choice, though you might also consider one of the cross-platform development platforms.

    18. Re:Why do people ask questions like these? by Serious+Callers+Only · · Score: 2

      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, etc. If you're on windows, perhaps consider their powershell thing and .net.

      Also, don't ask slashdot for advice :) nowadays it's entertaining, but unlikely to be useful. Maybe things were different back in the day, but nowadays this site is infra digg.

    19. Re:Why do people ask questions like these? by tknd · · Score: 1

      Web page? PHP.

      Please stop recommending PHP for anything. The only good reason for using PHP is you are forced to work with a project that was done in PHP. For webpages and a clean slate, almost any other up to date programming language (including *gasp* perl!) is better than PHP.

    20. Re:Why do people ask questions like these? by magic+maverick+ · · Score: 1

      Lisp. If you are runnng stuff on your machine for your purposes, run Lisp.

      If you want a job, maybe look at Java or C or something. But if you want fun, try Lisp. (Or Python.)

      (Disclaimer: I don't actually know Lisp, but I want to learn.)

      --
      HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
    21. Re:Why do people ask questions like these? by llin · · Score: 3, 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/ , http://pleac.sourceforge.net/pleac_python/ , and http://www.lightbird.net/py-by-example/ ), good libraries (see http://pypi.python.org/pypi and https://github.com/languages/Python/most_watched ) 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/ ), Reinteract ( http://fishsoup.net/software/reinteract/ ), and DreamPie ( http://dreampie.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/

      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/
      There's a lot of other stuff on the Python wiki: http://wiki.python.org/moin/BeginnersGuide/Programmers

      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.

    22. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      Well it is quite hard to give an advice, if you don't have clear idea what are you trying to do. Anyway if you just want to lay some background and understand the principles of programming forget about programming languages and take some book on algorithms such as "Algorithms" by Robert Sedgewick.

    23. Re:Why do people ask questions like these? by RDW · · Score: 1

      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'm sure you'll enjoy checking out Python and Ruby etc., as suggested elsewhere in these comments, but with that background I'd also suggest taking a fresh look at Perl. Not the ugly stuff bodged together from fragments of 'Matt's scripts' linked with carelessly-constructed chunks of Perl 4-style code that was popular in the 90s, nor the permanently experimental Perl 6, but Perl 5 written in a modern, elegant style (no, really!) with decent coding standards and full use of current language features:

      http://onyxneon.com/books/modern_perl/
      http://perl-tutorial.org/

    24. Re:Why do people ask questions like these? by cerberusss · · Score: 1, Insightful

      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.

      --
      8 of 13 people found this answer helpful. Did you?
    25. Re:Why do people ask questions like these? by musicmaker · · Score: 1

      This only applies if you're actually good at your job and like what you're doing. Most employed programmers don't fit in to this category. They didn't learn BASIC as a teen, they didn't do computing in High School. They started computer science at university and learned the cookie-cutter language of choice there, which is mostly Java or C#, the others are really just for show, think about how many college grads actually understand a damn thing about functional programming, even though all of them did some. They might pick up XML if they have to for web services, but XSLT is a stretch for most even. I still work with programmers at a fairly senior level who have no idea how to use the shell or sed or awk or grep. It's truly tragic, but it's true.

      --
      Everyone is living in a personal delusion, just some are more delusional than others.
    26. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      I HACKED SHIT TOGETHER and got PAID!

      Like almost everyone that develops software. Only the young think they are doing great work. Management is the realm of engineers that couldn't do and it's their job to prevent engineers from doing anything great. Great is an investment that almost nobody is willing to make. Sadly the education system has gotten closer and closer to providing what corporations want - retarded drones.

      Your statement proves that you know a lot more than most posting here. I'm a retired ex-software engineer... if it were me I'd look at a lot of things; buy some books for stuff you don't know; see what looks interesting and fits what you are trying to do; make it a learning experience if necessary. Most of all... don't do something because some corporate minion (or /. poster) is doing it.

    27. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      The more you post, the more apparent it becomes that you have no idea what you are trying to do. Just ask yourself - "What problem am I trying to solve? What product am I trying to deliver?" Once you can answer at least one of those questions, then, if you actually have at least a "hackish" level of knowledge with all the languages you listed, the question of "which language to dive into" should be apparent. However, if you had the level of knowledge you claim to have, you wouldn't need slashdot to tell you that.

    28. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      Perl is still around, and has probably come a long way since you last used it (how long has it been?). Search for "modern perl", perlmonks, moose, cpan...

    29. Re:Why do people ask questions like these? by JWSmythe · · Score: 1

          Sorry, it sounded like you did more focused work in the past.

          I'd say PHP. Make some web pages that do something. You can do plenty of system stuff with it. You already have some skill in it. If you find there's something it can't do, like working with real world interfaces, do those in Perl. If you can't do it with Perl, do it with C. I had fun with an embedded project, flipping contactors (big relays), reading sensors, and showing statistics on a 40x2 LCD.

          Quite a while back, I was playing with a basic stamp, using it to drive a spark gap (15KV between two carbon rods). That was in their basic language. If I had the interface from the embedded project, I could have worked some magic. I played some very clumsy music through it.

          The whole spark gap thing was part of an experiment with the Stanley Meyer water engine. Find the magic frequency, and make a fortune. :) As a side note, the magic frequency doesn't exist, despite unsubstantiated claims to the contrary. Increases in voltage (approx 1VDC to 130VDC) increases output, 15KV didn't do anything because of the reduced amperage, but it made cool sparks with the electrodes exposed.

          To come back around, you need to figure out what you want to do, before you ask which tool is best for the job.

      --
      Serious? Seriousness is well above my pay grade.
    30. Re:Why do people ask questions like these? by Cro+Magnon · · Score: 1

      Phone apps? Java.

      Or Objective C if you have an iPhone.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    31. Re:Why do people ask questions like these? by JWSmythe · · Score: 1

      It's truly tragic, but it's true.

          Very true.

          Most of the programmers I know, know several languages and use the best one for the job. Some use exactly one language, and use one framework to make it happen. Some can't even make a "hello world" page without making a project out of it.

          I've amazed some "programmers" with sed, awk, and grep. I've had "senior" programmers tell me how impossible it is to parse gigs of web server logs. They say it's black magic when I can (oh my gosh) grep for an IP, and show all the requests a user made. It kills me a little more inside each time I have to teach professionals how to use the basic tools of their job.

      --
      Serious? Seriousness is well above my pay grade.
    32. Re:Why do people ask questions like these? by JWSmythe · · Score: 1

          It was for some special real world input devices. I don't remember right off who made them or what they were called. They were various RFID tokens, where the instructions for the readers were verbal "Here's your wires, you figure out how to hook it up. Use our Perl module to read it".

      --
      Serious? Seriousness is well above my pay grade.
    33. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      Louie CK FTW!

    34. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      VBScript?

      LOLOLOLOLOLOLOLOLOLOLO *whez* LOLOLOLOLOLOLOLOLOL

      Sorry.

    35. Re:Why do people ask questions like these? by Anonymous Coward · · Score: 0

      Darn, your list makes me feel old ;)

      here's mine:

      Cisco IOS router/switch programming, Cisco ICND course (CCNA equivalent)

      PL/1: IBM PL/1F, IBM PL/1 optimizing compiler, Multics PL/1, PDP-11.

      FORTRAN & FLECS: Several varieties on IBM, Honeywell, DEC, and DG starting around Fortran IV and newer, someplace around 10+ variants total.

      C/C++: I have used a little C/C++ on SUN3, MS-DOS, and UNIX.

      PERL: Several projects in PERL.

      Unix Shell scripting: Primarily on Linux including awk programming.

      Operating Systems: Linux, UNIX, Xenix, SCO, SunOS, MS-DOS, IBM Mainframe,
      Honeywell Gcos, Multics, Data General, DEC RT-11, RSTS/E, Wang 2200, SuperDOS.

      BASIC: Microsoft Basic. WANG-2200 BASIC-2C, Niakwa, Dartmouth based Basic and a couple other miscellaneous ones.

      Assembler: IBM 1130, IBM 360/370, PDP-7, PDP-8, 6800/6801/6301, ITT ADX-9303 and others.

      I'm starting on Python as a couple applications I use are written in it and you can add/modify the Python code.

    36. Re:Why do people ask questions like these? by kraut · · Score: 1

      I HACKED SHIT TOGETHER and got PAID!

      That's the definition of "professional", isn't it?

      ..but maybe slashdot isn't what it used to be...

      It ain't. Now get off my lawn.

      --
      no taxation without representation!
    37. Re:Why do people ask questions like these? by Tesseractic · · Score: 1

      > Because they don't want to say "I'm a noobie, what should I code in?"

      That's uncharitable.

      > If he was a seasoned programmer, he would have
      > included little tidbits like what he intended to do, and what his experience was.

      He/She freely states "never really was more than a hack" and being out-of-date, and you call "noobie"?

      "Now I find myself wanting to really focus on coding for personal reasons."

      Perhaps it's _none_of_our_business_ what the application(s) is/are.

  18. Don't ask what language by stox · · Score: 1

    Ask, "What do I want to accomplish?" Then figure out what tools are best to do so.

    --
    "To those who are overly cautious, everything is impossible. "
    1. Re:Don't ask what language by Seriman · · Score: 1

      This is the answer. Anyone with sufficient aptitude to ask the question can pick up syntax and basics in a weekend, so determining strengths and weaknesses against ultimate goals is the only way to narrow down the broader answer, 'All of them.'

    2. Re:Don't ask what language by wazafoojitsu · · Score: 1

      Right, I debated this exactly before posting and I had hoped that noting this was for personal and hobby use would tip everyone off that I'm not looking for anything SPECIALIZED... Thanks for your input and for your considerate tone Seriman and stox...

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
  19. My outdated list by Dun+Kick+The+Noob · · Score: 1

    Heres my outdated list, still getting to grips with this list
    Drivers or os layer : C, C++
    Scripting : bash, python, perl
    Applications : Visual Basic, Java, XML, tcltk, gtk
    Web : HTML 4+5 Javascript, jsp PHP
    Databases : mysql, mssql, sqlite
    IDE : Eclipse, visual studio express
    Others: haskell, matlab, opengl
    Servers: tomcat, apache

    1. Re:My outdated list by Anonymous Coward · · Score: 0

      The fact that you included VB on this list automatically invalidates it. VB is not a programming language, it's a crime against humanity.

    2. Re:My outdated list by rubycodez · · Score: 1

      you can get a paying job easily knowing VB, shitty as it is. If you're an expert of a "cool" language, you might be going hungry during a recession. If you want higher pay, learn Java/J2EE, shitty also but it pays.

    3. Re:My outdated list by rtb61 · · Score: 1

      When it comes to java, here is an interesting discussion http://javaboutique.internet.com/reviews/ruby/. Ruby on rails is always worth considering for the future especially as Oracle has severely tainted java.

      Computer programming languages, it not something you choose for today and especially not yesterday, it's all about tomorrow. Trying to guess trends, which languages are losing popularity and which are gaining popularity and obviously if you are pursuing income which will pay the most.

      Surprisingly coding can be like farming, picking the most popular code just like the most popular crop, doesn't pay the best in a flooded market. Picking the code with least competition but really fits specific needs pays really well and it well take your competitors a few seasons to catch up (you can't just change crops as you have to change tools as well).

      Which language, the easiest to learn, the most compact, the easiest to read, the most flexible and it works well with the internet. Unfortunately that's really not all that fixed and changes from year to year, we all know which were but trying to guess which will be is pretty elusive.

      --
      Chaos - everything, everywhere, everywhen
    4. Re:My outdated list by Dun+Kick+The+Noob · · Score: 1

      Sad but true

  20. Python? by cupantae · · Score: 1

    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.

    --
    --
    1. Re:Python? by wazafoojitsu · · Score: 1

      That is correct, never did like getting into assembler or even too far into C. Thanks for the feedback, I appreciate it... So far Ruby and Python seem to be right up my ally...and I still love PHP!

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    2. Re:Python? by Dynetrekk · · Score: 1

      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.

      Fortran is certainly higher-level than C. It's got lots of convenience, such as array expressions, automatic deallocation of memory, and other stuff that you won't find in C. Fortran was written to explicitly let you avoid thinking of the underlying hardware. In my opinion, too much so. After all, there's always a "computer" in "computational science".

  21. Perl by Anonymous Coward · · Score: 1

    Perl is really easy to pick up. You don't even have to learn the syntax; just pick one, and it probably works.

    1. Re:Perl by Anonymous Coward · · Score: 0

      Perl is easy to pick up to write a three page script that does search and replace on a bunch of source files.

      It's a bitch to use for a complex application. For one thing, the syntax for passing list and hash arguments to functions is incredibly broke, er, baroque.

  22. Obligatory by Anonymous Coward · · Score: 0

    You must go to the Dagobah system.

  23. For a good time... by SubtleArray · · Score: 1

    If you want something that's fun and easy to use, but don't care about performance, I recommend Python. Python can be made faster when compiled for JVM with Jython, but this only works with Python 2.x. If you like wordy languages where "everything is an object!", try Java. It sucks for desktop applications, but runs great on Android devices. If you're feeling adventurous and like headaches, try Haskell. It'll blow your mind, mannn... Functional languages like Haskell are great for building discipline and good coding practices. But if you want something like Haskell that's not as strict, try Clojure. It's a Lisp, so brace yourself for a boat load of parentheses. My personal favorites are C++, Python, R, and Ada.

    1. Re:For a good time... by rubycodez · · Score: 1

      Java is NOT an "everything is an object" language, the primitives are not objects. In Ruby I can add methods to integers, reals, boolean true and false, and nil.

    2. Re:For a good time... by shutdown+-p+now · · Score: 1

      Python can be made faster when compiled for JVM with Jython, but this only works with Python 2.x.

      It can be made even faster without the JVM if you use PyPy.

    3. Re:For a good time... by Requiem18th · · Score: 1

      Oh yeah? Well in Ruby, methods aren't objects either! Python methods are real objects and you can get them directly, pass them around or return them. Ruby methods can only be passed around by using another wrapping method, so you can get a wrapper for the method you want an them call another method in the wrapper to acces the method you want to access.

      Which of course doesn't matter because Ruby solves with blocks what Python does with functions, my point however is that "Object Purism" is a stupid dogma. Java is an OO language.

      --
      But... the future refused to change.
    4. Re:For a good time... by rubycodez · · Score: 1

      That's been changed, methods in Ruby are (have been for a few years) indeed objects of class Method. Many, many things in Python are not objects. Is it an issue? can be, it is many times convenient to add methods to data types or redefine operators. not necessary, though, always an alternative way to accomplish the end results. I think Ruby is more fun than Python, that's all, not a better language. I find Java to be warmed over C++ from concepts point of view, seems to take 5 to 10 times the code to do the same job that Ruby, Python or even Perl could do.

  24. C# or PHP by Anonymous Coward · · Score: 0, Informative

    C# is a robust language, and has both free versions from Microsoft for Windows (command-line SDK compiler and Visual Studio 2010 Express IDE) and open-source packages (Mono compiler/libraries and SharpDevelop IDE) that run on most platforms. There's a lot of depth to the language and it borrows many of the best ideas from functional programming languages. It also has the advantage of being a translatable skill for iOS, Android, and Windows 7 mobile apps using MonoTouch (not free).

    PHP is a better choice if your main environment is Linux or OS X, if you aren't looking for strong IDE support, and you primarily want to write console apps, or web apps running under Apache. There is a Mono-based implementation of ASP.NET for non-Microsoft web servers, but it's sort of a pain.

    Both of these also have strong support communities on StackOverflow and other places when you run into questions, and both are desirable job skills if your interest changes from being personal to being career-minded.

    1. Re:C# or PHP by Anonymous Coward · · Score: 0

      I feel like I've been ass-raped whenever I have to click an EULA from Microsoft.

  25. Beware of dynamic languages for large projects. by Anonymous Coward · · 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#, 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.

    1. Re:Beware of dynamic languages for large projects. by rubycodez · · Score: 4, Informative

      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

    2. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · 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.

    3. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · 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".

    4. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Sure you can do it but that doesn't mean it's the best choice. Additionally, "huge" doesn't just mean number of users. You have to look at the use cases you want to support, understand the requirements, pick a high level design and find a technology that best supports it. Often if you have real-time, low process latency, enterprise level operability, and web level scalability requirements to meet all at the same time a dynamic language is not your best first step.

    5. Re:Beware of dynamic languages for large projects. by Courageous · · Score: 1

      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//

    6. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Yeah, this just isn't a problem in practice. Do type bugs get into the code you write? Yes, sometimes. But they don't pass the tests. 99%+ of the time, type bugs are not subtle, like logic errors and fencepost errors can be. They blow up in your face as soon as the code runs.
      I'll grant you, with large code bases the full test suite can take quite some time to run. But I've never seen dynamic typing cause a test-passing bug that Java could have prevented. (Now weak typing, on the other hand... Oh, the disasters.)

    7. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Agreed. It should be noted, however, that this is a criticism of one implementation of Python, not the language itself. There are other implementations (Jython, IronPython) for which this isn't an issue.

    8. Re:Beware of dynamic languages for large projects. by sylvandb · · Score: 2, 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.

    9. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      I develop in Ruby and I agree with this message.

      But ... Most people use Ruby for Rails simple CRUD/CMS web forms applications with small teams, where it doesn't really matter. (Also MySQL has all of its type issues as well, which can bite you in any language.) Sites like Twitter used RoR to get up and running quickly, but once the investors came in, they started rewriting everything on the JVM.

    10. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 5, Funny

      There are no Java projects that weren't huge. Even the trivial ones.

    11. Re:Beware of dynamic languages for large projects. by johnnyb · · Score: 4, 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.

    12. Re:Beware of dynamic languages for large projects. by XaXXon · · Score: 1

      Wow. I've been coming to slashdot for 13+ years and this is the worst comment I've ever seen.

      I hope you're trolling.

    13. Re:Beware of dynamic languages for large projects. by mooingyak · · Score: 1, Insightful

      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.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    14. Re:Beware of dynamic languages for large projects. by TapeCutter · · Score: 4, Interesting

      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.
    15. Re:Beware of dynamic languages for large projects. by efalk · · Score: 1, Redundant

      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++.

      I agree. A friend's startup was originally based on Drupal. It fell over at a million records. They moved to Ruby on Rails. It fell over at 20 million records.

      I'm in the middle of resurrecting the system, and not a day goes by that I don't say "WTF did they do this in a scripting language?"

      Scripting languages are fine for scripts, and even occasional prototypes, but if you need to scale, you need a compiled language. Frankly, I'm not too fond of Java for production systems either.

    16. Re:Beware of dynamic languages for large projects. by The+Mighty+Buzzard · · Score: 1

      I believe you posted that to one of the most heavily trafficed sites on the net that's spent most of its existence being a collection of perl scripts.

      --
      Violence is like duct tape. If it doesn't solve the problem, you didn't use enough.
    17. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Python is not multi-threaded in the true sense. Yes, you can have multiple threads blocked on I/O, but only one can ever be running code due to the global interpreter lock. This means that a python program can never scale above one core... Unless you write a library in cpython and release the GIL, but then you're writing C which is irrelevant to this discussion.

    18. Re:Beware of dynamic languages for large projects. by dudpixel · · Score: 1

      Doesn't "perl -c" catch these issues you're talking about?

      I believe python does similar, but I'm not sure as I have been caught out by exactly what you're referring to in the past. I haven't had that with perl though.

      Python is my favoured language these days, but I'm currently most fluent in perl.

      I do have 2-3 years commercial experience with C++ though, and would continue to use that for products that need to be super-reliable (for the reasons you mentioned) or fast.

      --
      This seemed like a reasonable sig at the time.
    19. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      > I could easily see these guys considering a 4,000-5,000 line web app as being a "huge project".

      4,000-5,000 lines is a large project. Maybe you wouldn't need tens of thousands of lines if you used a more efficient language, as in less lines of code for the same functionality, like ruby (or even javascript/coffeescript). Plus, most programmers these days are taught to modularize systems and not create "huge projects" in the first place.

    20. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Learn to write unit tests.

    21. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      I'd kiss you right now if I can ... You just articulated what I have been telling a lot of
      padawans for the past 2 years ... Those shiny, bright, hip, dynamic languages are good
      only if you need to turn-in a nice-looking quick prototype that needs to be coded industrially
      by 10-20 programmers later, and that has to survive for the next 20 years.

    22. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 1

      Even Google now has several internal memos that forbid dynamic languages, including Python, for large projects. They simply aren't practical when the codebase gets large with lots of developers.

    23. Re:Beware of dynamic languages for large projects. by Spy+Handler · · Score: 2

      i see what you're saying, and I think it makes sense too... but then there's Facebook, which is only like, the biggest website in the world, and they use PHP..... *scratches head*

    24. Re:Beware of dynamic languages for large projects. by makapuf · · Score: 1

      Sure, tell that to twitter or YouTube. or many, many other large web sites. Hint: they're not using java. Or C. or Go.
      Python scaling is a moot point, you'd scale to 16 asynchronous processes on a 16 core. What needs to scale is the web server. And a load balancer. But you were talking about a number of records, where db indexes, caches and architecture + algorithms are what counts.

      Not to say python is perfect, hell if you've got java devs use java. But those arguments are dumb.

    25. Re:Beware of dynamic languages for large projects. by sjames · · Score: 1

      If you treat the project as if it's a funny dialect of C, then yes, you will have serious problems. Yes, some of the unit tests will catch things that a compiler would catch already, so what? If it's useful in the compiler, it's useful in the unit test. If the unit test won't help, why would the very same test built in to the compiler be any more helpful?

      For starters, don't HAVE 200 developers working over the entire codebase. Divide into modules and then divide the coders likewise (of course, you should be doing that for a C project as well!). Assign a few to the places where modules meet.

    26. Re:Beware of dynamic languages for large projects. by Luke+Wilson · · Score: 1

      Pretty funny that you would bring up twitter, since they migrated from ruby to scala because of the very same issues brought up in this thread.

    27. Re:Beware of dynamic languages for large projects. by sjames · · Score: 2

      With some creativity and possibly a psychological condition, you should be able to come up with a CICS layer that renders to GTK. :-)

    28. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      lock = threading.RLock()
      lock.acquire()
      lock.acquire() # this won't block

      http://effbot.org/zone/thread-synchronization.htm

      ?????

    29. Re:Beware of dynamic languages for large projects. by sjames · · Score: 1

      If the server is dedicated to running a single instance of the program AND it is computationally intensive AND none of that computation is handed off to a C module, AND you don't make creative use of forking and RPC to isolate the computational modules, THEN yes. You will be disappointed.

      That said, it would be nice to find some way of increasing concurrency, perhaps some sort of function decorator that promises to access only the input parameters and local variables until return.

    30. Re:Beware of dynamic languages for large projects. by jmcvetta · · Score: 2

      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 of the Youtube backend is written in Go.

    31. Re:Beware of dynamic languages for large projects. by Shoe+Puppet · · Score: 1

      That is true only for cPython, the default interpreter. IronPython and Jython don't have the GIL. As for cPython, you can still use multiple processes with the multiprocess module. Guido claims that this is much better for using multiple cores anyway, though I think that is mostly an excuse.

      --
      (+1, Disagree)
    32. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Actually Facebook uses a lot of languages. Actually they are compiling some of their PHP code for cost savings, they had to make their own compiler for that...

      But still, before you're "facebook" dynamic languages are just fine...

    33. Re:Beware of dynamic languages for large projects. by dolmen.fr · · Score: 1

      Threads blocked on I/O becomes an irrelevant problem if you use async I/O. You can then scale well without even using threads.

    34. Re:Beware of dynamic languages for large projects. by musicmaker · · Score: 1

      Ever heard the phrase "Just because you can, doesn't mean you should"?

      --
      Everyone is living in a personal delusion, just some are more delusional than others.
    35. Re:Beware of dynamic languages for large projects. by musicmaker · · Score: 2

      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 in my experience is not insignificant, and therefore it could be argued, that the type system has some capability to help with logic errors also. The statement is literally and technically correct, but in a practical sense, it's wrong.

      --
      Everyone is living in a personal delusion, just some are more delusional than others.
    36. Re:Beware of dynamic languages for large projects. by musicmaker · · Score: 1

      If you like python, and have C++ experience, I'd recommend Scala in a big way. It has nice type safety without it being onerous, and it has some of fluidity of python. You can write simple scripts in Scala that end up being easier than in python, but type safe and compiled.

      --
      Everyone is living in a personal delusion, just some are more delusional than others.
    37. Re:Beware of dynamic languages for large projects. by Courageous · · Score: 1

      Given the AC's comments about the true nature of Python multi-threading, are you now one of those who've joined the crushingly disappointed? I've witnessed entire commercial products fail due to this. It's amazing to me that paid professionals could not know this, but it's true.

    38. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      You obviously don't understand SMP scaling, or the benefits of async vs blocking I/O. Async I/O still won't scale past 1 core, but in rare cases can give you slightly more performance. I prefer the code readability of blocking I/O, and the fact that is truly multi-threaded in real languages.

    39. Re:Beware of dynamic languages for large projects. by number6x · · Score: 1

      In the interview tell them that they'll have to garbage collect their own memory and that you have a null pointer jar. Every time they reference a pointer to an object that has been deleted, they have to put $5.00 in the jar. That should frighten most of them away.

      Ruby is a nice language. It is wonderful for creating domain specific languages. Advanced Ruby programmers should feel right at home in C and C++. The 'Duck typing' nature of ruby gives them the kind of mental gymnastics needed to handle languages that allow you enough rope to shoot yourself in the foot. Those advanced in Ruby have probaly written their own C extensions as well.

      That being said, there are not really too many advanced ruby programmers around.

    40. Re:Beware of dynamic languages for large projects. by mooingyak · · Score: 1

      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.

      A few years of C, less in java. FWIW, I hate perl with a passion, though it represents about 90% of my current workload.

      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.

      To me, that's a matter of adequate testing, regardless of your language choice. If a missing method doesn't blow your tests up, you either need better tests, or the method is superfluous in which case you're just writing stub code to keep the compiler happy.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    41. Re:Beware of dynamic languages for large projects. by codepunk · · Score: 2

      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.

      --


      Got Code?
    42. Re:Beware of dynamic languages for large projects. by cheesybagel · · Score: 1

      Yes, just the boilerplate code alone is usually more than the code you want to actually write yourself. That is why a Java programmer without an IDE loses like most of his productivity.

    43. Re:Beware of dynamic languages for large projects. by cheesybagel · · Score: 1

      Java: class World { public static void main(String [] args) { System.out.println("Hello, world"); } }

      Python: print "Hello, world"

    44. Re:Beware of dynamic languages for large projects. by Mr.+Shotgun · · Score: 1
      --
      Of all tyrannies, a tyranny sincerely exercised for the (supposed) good of its victims may be the most oppressive
    45. Re:Beware of dynamic languages for large projects. by dgatwood · · Score: 1

      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++.

      I currently maintain a tool that consists of over 62,000 lines of Perl. In the decade that I've been working on it, I can count the number of times that a compiled language would have saved me from a mistake on two hands, or one if I count in binary.

      Maybe the problem isn't the language, but rather that you're using it for types of computation that don't lend themselves to that language. Or maybe your programming team just uses too many polymorphic classes.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    46. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Depends on what you call huge.

      A huge Java project is easy to maintain.

      A small C++ project can be a nightmare to maintain.

      A large PHP project... well, is unmaintainable...

    47. Re:Beware of dynamic languages for large projects. by SoftwareArtist · · Score: 1

      I completely agree with this. For small to medium sized projects, Python is a great language. It's simple, concise, and really a lot of fun to program in. But for large projects, I would go with Java, C#, or something of that sort.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    48. Re:Beware of dynamic languages for large projects. by Courageous · · Score: 1

      While your comments are in fact true, let's be fair. Programming in C is programming in C. Multiple processes with inter-process communication is not what most people think of when someone says "multi-threading," and in fact while these disciplines are related, they are indeed different. So when we talk about the problems of multi-threading in Python, let's actually talk about that, shall we?

      Years ago I watched Guido talk about threading a lot. Clearly he's not a fan. It is no surprise that Python does not handle this situation well. "Fruit of a poison tree," is what I would say.... well, so to speak. That's a bit unfair to the designer of an immensely useful and easy-to-understand programming language. Be that as it may, I for one think he deserves a bit of heat for that. The few times I've read what he wrote about it, his words were more about disdain than much else.

      The world of multi-core computing is hear to stay.

    49. Re:Beware of dynamic languages for large projects. by PCM2 · · Score: 1

      I'm in the middle of resurrecting the system, and not a day goes by that I don't say "WTF did they do this in a scripting language?"

      When you call Ruby or PHP "scripting languages" it sounds like you mean they're only about as powerful as shell scripting. That hasn't been the case for a long time. And you might be surprised how many major Web projects have been built the most expedient way available, only to be completely rewritten when they needed to scale. The first version of your friend's software lasted through a certain amount of growth. The second lasted 20 times longer. That's not a bad track record, really. Some projects will never be asked to scale that big.

      --
      Breakfast served all day!
    50. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      HAHAHAHAHAHA
      I believe that

    51. Re:Beware of dynamic languages for large projects. by sjames · · Score: 1

      ?I placed so many qualifications on it because the entire class of threading for concurrent I/O works very well in Python. I think it's perfectly fair to point out that a problem is of limited scope.

      Multiple forks and RPC are very much a go-to method for computationally intensive work. MPI for example running over hundreds of nodes.

      I could argue that duck typing fails miserably in C. It's perfectly true. A C programmer would say that in practice you don't do duck typing in C. Also true.

      In real life, the problem is "You must perform this computationally intensive operation", never "You must perform this computationally intensive operation using threads". So use the approach that suits the chosen language.

      I would like to see the mod I mentioned in order to improve the situation, but even as-is, it's not a show stopper. It's also fair IMHO to point out that a problem has reasonable work-arounds.

    52. Re:Beware of dynamic languages for large projects. by jpate · · Score: 1

      To me, that's a matter of adequate testing, regardless of your language choice. If a missing method doesn't blow your tests up, you either need better tests, or the method is superfluous in which case you're just writing stub code to keep the compiler happy.

      Really? You want to write a unit test checking for the existence of each method on every class in your class hierarchy? What about a language like Scala, where classes can have type parameters or bounds and define methods whose type signature depends on the type parameters or bounds? You're going to end up writing a massive number of unit tests if you write one for every possible parameterization of every class. I'm perfectly happy to use dynamic languages when warranted, but it's just silly to say static typing gives you nothing more than adequate testing would.

    53. Re:Beware of dynamic languages for large projects. by thetoadwarrior · · Score: 1

      It's not a problem for a lot of companies. My former company built many hard-worker medium / larger sized python applications. Good programmers don't have a problem with dynamic languages.

    54. Re:Beware of dynamic languages for large projects. by Courageous · · Score: 1

      I know all this. But it would be more clear, communicative, and honest to simply state that "Python is not truly multi-threaded" than it is to say anything else. For example, the model of threading for concurrent I/O is a case of "Python can wait in parallel." Ironically, that's a different way of saying it can do a bunch of nothings in parallel, which might also be phrased as "it can do nothing in parallel," which is pretty darn close to the truth.

      When programmers think about multi-threading, they do think about the programming model, and not just the implementation, and that's true. Python is very convenient that way. But programmer's also expect the implementation to be parallel, by which I mean that they expect that the threads will be literally executing in parallel on different cores on a multi-core computer. And for this last, that's not true in Python at all.

      And that's a shame. Guido would, of course, disagree. But this is no coincidence. The two are related.

    55. Re:Beware of dynamic languages for large projects. by mooingyak · · Score: 1

      To me, that's a matter of adequate testing, regardless of your language choice. If a missing method doesn't blow your tests up, you either need better tests, or the method is superfluous in which case you're just writing stub code to keep the compiler happy.

      Really? You want to write a unit test checking for the existence of each method on every class in your class hierarchy? What about a language like Scala, where classes can have type parameters or bounds and define methods whose type signature depends on the type parameters or bounds? You're going to end up writing a massive number of unit tests if you write one for every possible parameterization of every class. I'm perfectly happy to use dynamic languages when warranted, but it's just silly to say static typing gives you nothing more than adequate testing would.

      I can't speak towards Scala, I'm not familiar with it.

      I'll trim it down to two languages to make the comparison simpler. I'll use ruby and java. If you add a method to a java interface, every objects which implements said interface will be required by the compiler to have the method. The rough equivalent in ruby is not true, and the lack of the method will go unnoticed until some point during runtime when something actually tries to execute it. The argument I'm trying to make is that if you have equivalent unit tests in each language, and it doesn't turn up the problem in ruby, then the method has only been added to the java code to satisfy the compiler, and not to serve some specific actual need. Or, alternately, your unit tests need work.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    56. Re:Beware of dynamic languages for large projects. by spongman · · Score: 1

      thanks for that. i'll remember to use Python next time I want to write such a trivial program.

    57. Re:Beware of dynamic languages for large projects. by sjames · · Score: 1

      It would be entirely inaccurate to claim no threading ability when there are many cases where it works perfectly well with threads. It works great with concurrent I/O and it works fine coordinating multiple threads of computation written in C. If you use forking, it does everything in parallel with no restrictions, so I would characterize your second statement as false (you expanded from threading to parallel in general).

      I am a programmer, and when I think of multi-threading, it's after I have thought about the general case of parallel programming and concluded threading is the correct route, but if that means I am wanting python to do computation in threads without C modules, It means I was wrong. You may not remember, but in the days when OS support for threading was weak or non-existant, there were many thread libraries in C that had as many or more restrictions than Python. Some were even purely explicit cooperative threading.

    58. Re:Beware of dynamic languages for large projects. by cheesybagel · · Score: 1

      The simple fact is you need more lines of code to do the same thing in Java. Java is arguably even worse than C++ at some times. While C++ code can be become unreadable, Java code becomes so bloated it makes it hard to analyze it properly. Python would be great if it had better performance. But it is still of use even for non-trivial programs. I hate so called OO languages because they try so damn hard to force you to use the paradigm coding gets cumbersome. Sometimes the OO paradigm is not the best way to solve the problem. It could be plain imperative programming, event driven, relational, or whatever.

      Python is not flawless but it is certainly refreshing after working with some of the convoluted messes out there.

    59. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Maybe if you'd actually been developing large software systems, rather than idly browsing Slashdot for all those years, you'd realize that the GP is absolutely correct and you're absolutely wrong.

    60. Re:Beware of dynamic languages for large projects. by Anonymous Coward · · Score: 0

      Twitter moved basically everything important to Scala, Java and C a long time ago. Basically, the only thing that's still Ruby is some trivial front end web processing. YouTube has been almost entirely rewritten and the site is powered mostly by Go, Java and C. Google has moved almost completely away from Python due to many of the issues brought up in this thread.

    61. Re:Beware of dynamic languages for large projects. by dhasenan · · Score: 1

      With Ruby, I need to *realize* that there's a child class I need to modify. With Java, the compiler does that for me.

      A missing method exception is no different than a compiler complaining about an unimplemented method. I can add in a bogus implementation to silence either one. But if I'm unlucky, if I haven't tested my stuff quite as well as I thought, a customer might discover that missing method error before I do. The compiler tests everything.

    62. Re:Beware of dynamic languages for large projects. by mooingyak · · Score: 1

      With Ruby, I need to *realize* that there's a child class I need to modify. With Java, the compiler does that for me.

      A missing method exception is no different than a compiler complaining about an unimplemented method. I can add in a bogus implementation to silence either one. But if I'm unlucky, if I haven't tested my stuff quite as well as I thought, a customer might discover that missing method error before I do. The compiler tests everything.

      I'll concede that the compiler will help you find certain categories of mistakes and/or oversights. I'm less willing to concede the point I originally objected to several posts up the chain, which is that a large and unpleasant chunk of your debugging time will be spent chasing these things down when working with dynamic languages.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    63. Re:Beware of dynamic languages for large projects. by evenmoreconfused · · Score: 1

      Actually we had this sorted 39 years ago:

      Basic: 10 print "Hello World"

      See http://en.wikipedia.org/wiki/Wang_2200 from 1973. It even had a hotkey for typing p-r-i-n-t- in a single keystroke.

      La plus ca change, la plus c'est le meme chose. (The more things change, the more they're the same thing).

      --
      No. Well...maybe. Actually, yes. It really just depends.
    64. Re:Beware of dynamic languages for large projects. by jonadab · · Score: 1

      > That being said, there are not really too many advanced ruby programmers around.

      It seems most of the really advanced programmers use Perl. (The reverse is NOT true, however; there are plenty of Perl programmers who are not particularly advanced. Hence, Matt's Script Archive.)

      --
      Cut that out, or I will ship you to Norilsk in a box.
    65. Re:Beware of dynamic languages for large projects. by Anguirel · · Score: 1

      Having worked QA for lots of different types of programmers, the guys who write 10x the tests to catch every code path may spend more time on the first write of the code... but they spend less time on the project in total. They seemed to find the weird design issues immediately because they had to consider all of those tests and what their implications were, so they did fewer refactors later. They spent a hell of a lot less time on bug fixes (at least from my reports), because their automated tests caught all the basic stuff long before I got a crack at it. While I initially saw it as a mindset (100% unit test code coverage) in a team of Ruby programmers, the Ruby guys infected the C++ team with it, and that team's bug counts and development time dropped significantly (after an initial spike) from implementing those tests. In my opinion, writing those extra tests isn't a waste of time for a long-term project - it's a time-saver on all sides, and assuming the compiler will "catch those problems automatically" is a bad habit some programmers get into, and it usually causes problems down the line.

      --
      ~Anguirel (lit. Living Star-Iron)
      QA: The art of telling someone that their baby is ugly without getting punched.
  26. Try Scratch.... or perhaps the DCPU-16 by Teancum · · Score: 1

    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/

    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 programming, it will give you a fresh perspective in terms of newer programming paradigms and allow you to have some fun at the same time. Don't dismiss the power of this language as it has done some pretty amazing things, including emulating an operating system, doing finite state machines, and almost anything else you can imagine. Its power is more with multimedia development (rendering graphics, sprite manipulation, and audio integration into projects is like breathing air and foundational to the language), but it has pointers, arrays, and some nifty I/O controls as well. Some strong limits, but I presume by your restriction on language choices that you want a high level language.

    If you want to get real retro though, I would strongly recommend that you check out the DCPU-16. This is going to be the base "computer" used for a really cool science fiction game. If you want to have automated drones frying opponents on other continents, this is an environment you might want to check out. There are some compilers already written for this "computer within a computer" and even a couple of operating systems, but it has a real retro feel for what computers were like 20 years ago. For more information, see also the 0x10^c Wiki. Full all out cyber warfare is encouraged in this game too. Viruses, trojans, social exploiits, buffer overflows, and every trick in the book you can think of is going to play a part in this game. I don't know about the legality of those actions within the game, but if you really want to get into true hacking, this is a game for you.

    1. Re:Try Scratch.... or perhaps the DCPU-16 by JoeMerchant · · Score: 1

      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.

    2. Re:Try Scratch.... or perhaps the DCPU-16 by Teancum · · Score: 0

      That is just Visual BASIC rebranded in a number of ways. Then again Microsoft nerfed VB in a way that really stinks, particularly as it was redesigned by a bunch of folks who never were BASIC developers in the first place.

      Well, Open Office uses Python, something already mentioned above.

      The original post suggested they didn't want to deal with low level languages, which has some strong limits on where you can go.

  27. C# by Kittenman · · Score: 3, Insightful

    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.

    --
    "The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
    1. Re:C# by aaronb1138 · · 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.

    2. Re:C# by gadzook33 · · Score: 2

      C# programmers are the most highly paid right now but slashdot doesn't really take it seriously because it's related to MS. It's a shame because it's a phenomenal language and .NET is one of the best designed libraries since the STL.

    3. Re:C# by Anonymous Coward · · Score: 0

      C# is THE language for desktop GUI programming, unless you are maintaining a web browser at Mozilla or Google. MS is years ahead of Java when it comes to complex GUI controls.

      OTOH there is the OS lock-in issue. If you build on .NET, then you must deploy on Windows and not Linux (I'm taking the liberty of dismissing Mono as too big a risk for real businesses).

    4. Re:C# by Anonymous Coward · · Score: 0

      Agree with parent.
      Out of all of the languages I've dabbled in, C# is the one that has brought me the most joy, and the least frustration.

      The only black mark against it is that you are tied to a particular platform; and if you don't like that platform you're out of luck.

      If you are programming for fun -- it's a good choice, you can get a lot done with a minimum amount of pain. Things are well organized, and look pretty.
      If you are programming for profit -- it is a solid choice, lots of work in this area (although other languages are probably better if you want to be an entrepreneur).
      It's free to start, never *requires* an outlay of money, and the community is there as well.

      Otherwise, I'd recommend javascript if you want to do web, or python if it's just for kicks.

    5. Re:C# by RightSaidFred99 · · Score: 1

      Well, do most professionals really take Slashdot seriously though? Agreed it is a phenomenal language, it's very well designed and powerful and you can use it with basic usage or work on more advanced stuff like Linq and the new Async support. It's web service support (WCF) is leaps and bounds ahead of anything, so in the enterprise space it's pretty sweet.

    6. Re:C# by Anonymous Coward · · Score: 0

      C# is a toy that gets stomped by Java in practically every scenario/benchmark/application there is. Structs make one C# program better than another C# program they don't make your C# program better than the equivalent java program. And as far as people moving from Java to C#, give me a fucking break as Java is 3 times more popular than C# and has been so for a really long time. And as Android gets more and more popular, Java will get more popular right along with it. I guess in summary, if you want to dick around, use C sharp but if you want to get serious, Java will be there waiting for you.

  28. It's not (just) the language - it's the API by Ken_g6 · · Score: 4, 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.

    --
    (T>t && O(n)--) == sqrt(666)
    1. Re:It's not (just) the language - it's the API by wazafoojitsu · · Score: 1

      Awesome info! Ken, you hit it right on for me, I love PHP for just these reasons, I will probably check out Ruby and Python as they seem to fit my bill. Thanks so much for your input, really!

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    2. Re:It's not (just) the language - it's the API by shutdown+-p+now · · Score: 1

      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.

      When talking about JVM language ecosystem, the two names that should always be named are Clojure - a modern Lisp dialect with emphasis on concurrency, and Scala - the king of the modern "kitchen sink" approach of programming language design.

    3. Re:It's not (just) the language - it's the API by gregfortune · · Score: 1

      Trying *both* Python and Ruby is a very good plan. They are both are scripting languages with large libraries and solid user communities and similar in a lot of ways. Oddly, every developer I've talked with that has tried both loves one of them to death and hates the other with an ever burning passion. To me, Ruby is completely backwards and nothing works as I would expect it to. Python seems to do everything I want to do in exactly the way I want to do it. Another guy I worked with felt exactly the opposite.

      I suspect if you try both, one of them will feel breezy and the other will feel odd and clunky.

    4. Re:It's not (just) the language - it's the API by jmcvetta · · Score: 1

      Oddly, every developer I've talked with that has tried both loves one of them to death and hates the other with an ever burning passion.

      FWIW I like them both equally. Never understood the religious war - they are not different like vi and emacs are different. They are conceptually very similar languages.

  29. Chinese by Ralph+Spoilsport · · Score: 2, Insightful

    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.

    --
    Shoes for Industry. Shoes for the Dead.
    1. Re:Chinese by Surt · · Score: 2

      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.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    2. Re:Chinese by Anonymous Coward · · Score: 0

      The language to learn is chinese because this century belongs to them.

      Fashionable to say that, but it's not at all clear. I think it's at least a three horse race with the US, India, and China (probably in that order) in the mix. Brazil is charging hard from the back of the pack.

    3. Re:Chinese by Anonymous Coward · · Score: 0

      That's similar to what everyone said about Japan in the 80s and look at the situation they're in today.

    4. Re:Chinese by Anonymous Coward · · Score: 0

      Don't forget that Japan is 1/10th in terms of population size, and even smaller in terms of landmass.

    5. Re:Chinese by Anonymous Coward · · Score: 0

      Yes, but what kind of chinese? We're looping here.

    6. Re:Chinese by Anonymous Coward · · Score: 0

      80s is to Japan as 2010s is to:

      [ ] USA
      [ ] Europe
      [ ] India
      [X] China

      JMHO.

    7. Re:Chinese by brokeninside · · Score: 1

      The claim that ``The Chinese economy has peaked'' is refuted by the claim ``Their economy may double in size one more time''.

      I suppose you could fix that by altering the first claim to ``The Chinese economy is about to peak.' Or, perhaps, altering it to ``China's phenomenal economic growth rate has peaked.'' I think most economists would agree with this latter claim. I don't think anyone expected China's double digit growth rate to hold forever. Future growth will continue to slow as the Chinese economy matures.

      And, it is unlikely that if the Chinese economy doubles, it will still be smaller than the US economy. In 2011, the Chinese economy (GDP of 7,298,147) was almost half of the US economy (GDP of 15,094,025). And in 2012, China (over 8% growth in Q1) was growing far faster than the US (2.2% growth in Q1). So if China has one more doubling left in it, it will almost certainly eclipse the US in size.

    8. Re:Chinese by Surt · · Score: 1

      Yes, I was referring to the high growth rate. Doubling the Chinese GDP will take (at least) another 10 years, bringing them to 14.5T. The US economy, even at 2% will be 18.2T by that time.

      It will probably be worse for the Chinese, though. They are now making use of basically all their natural resources. They have dams on all their rivers for power (no more dams for power to fuel growth), they have mines on every pile of coal (they can't just build a new coal mine, they have to learn to mine faster now).

      So personally, my bet is on it taking them more like 15-20 years to double their economy. And that by the end of that time their growth rate will have fallen to a level close enough to the US rate that they'll never make up the remaining gap.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    9. Re:Chinese by brokeninside · · Score: 1

      ``even at 2%''

      Two percent (at least in real dollars) is better than the US has managed over the past 10 years.

    10. Re:Chinese by Surt · · Score: 1

      Sure, if you believe the US is in for a double dip or another major financial catastrophe, we may not be able to maintain 2% over a decade. But unless something like that happens, 2% is a very low bet for our growth rate.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  30. Clojure by slasho81 · · Score: 2

    If you're doing it for personal stuff and don't have the constraints of the corporate world - Clojure. It's the cutting edge. It's way ahead of anything else out there today.

    1. Re:Clojure by olau · · Score: 1

      Cutting edge? Lisp? Really?

      (This is not just for fun, I'd like to hear what parts of Clojure make you think it's the cutting edge.)

    2. Re:Clojure by Anonymous Coward · · Score: 0

      I think Clojure is pretty clever, but it's performance is really its Achilles' heel.

      I would say if you are going to go off the beaten path, Scala, Erlang, Go, or Haskell -- in that order. The first 3 are quite practical and will expose him to many of the same features Clojure would, and Haskell is just plain entertaining.

    3. Re:Clojure by mikera · · Score: 1

      Clojure has the following features, which together make it pretty cutting edge:

      - Native access to all the Java library ecosystem - so you start with a huge available set of libraries, more so than most other langauges. This makes Clojure very practical for actually getting stuff done......
      - Probably the most novel implementation of Software Transactional Memory in any language - see http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
      - All the benefits of running on the JVM (cutting edge garbage collection and JIT compilation in particular)
      - It's a homoiconic langauge - "code is data". This makes it extremely powerful for metaprogramming, DSLs and code generation. see also: http://www.paulgraham.com/avg.html
      - It's one of the fastest dynamic langauges around (about 10-20x faster than Ruby, Python, PHP, Perl, within a 2-5x factor of the fastest compiled languages according to Alioth benchmarks)
      - It has an interactive REPL-based development environment, great for live coding and prototyping - see e.g. http://vimeo.com/22798433
      - It is much more of a functional programming language than most Lisps (you can see quite a lot of inspiration from Haskell)
      - It has modernised the traditional Lisp syntax - for example {} is used for maps, [] for vectors as well as the traditional () for lists

      Clojure is certainly one of the most interesting languages around at the moment - I'd strongly recommend it to anyone looking to broaden their horizons!

    4. Re:Clojure by mikera · · Score: 1

      Clojure performance isn't bad at all - in fact it's one of the fastest dynamic languages around.

      Examples from alioth benchmarks (x64 Ubuntu : Intel® Q6600® quad-core, 8th May 2012, median performance relative to fastest benchmark program, 1.0=fastest):

      1.00 Fortran Intel
      1.21 C GNU gcc
      1.89 Java -7 server
      2.73 Scala
      2.80 Haskell GHC
      2.85 Go
      4.10 Clojure
      6.86 Racket (Scheme)
      10.71 Erlang HiPE
      53.06 Python 3
      57.62 Ruby 1.9
      103.29 Perl

      As you can see, Clojure is pretty well positioned in the overall performance charts. It's pretty close to Haskell, Go and Scala, and way ahead of most of the other popular dynamic langauges.

      On the practicality point, it's also worth noting that since both Scala and Clojure can use Java libraries directly, they have much better library availability than Erlang, Go or Haskell.

  31. Does your program need to be graphical or text by Marrow · · Score: 1

    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.

    1. Re:Does your program need to be graphical or text by wazafoojitsu · · Score: 1

      Yes I would like to have the option for GUI, looks like Python and Ruby cover my bill...thanks.

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
  32. 'focus on coding for personal reasons' by approachingZero+ · · Score: 1

    Herein lies the rub. You don't say what it is you want to do. Robotics? Web stuff? My advice. Find out what it is people are successfully using to do things that are like what you want to do.

    --
    'I don't know what it's called. I just know the sound it makes, when it takes a man's life.' ~ Four Leaf Tayback
  33. linux/opensource by Anonymous Coward · · Score: 0

    you sound like distant from open source stuff..
    please get yourself a little dusty in linux/opensource related news/projects and see where the world is going.
    you can use VIM for edition ALL popular programming languages. its the fastest editor ever. but its takes a while to get used to.
    for programming language try to write some small programs with C++ and Qt (opensource library of everything including very cool GUI stuff).. you will like this stuff..

    1. Re:linux/opensource by Anonymous Coward · · Score: 0

      edition = editing

  34. A Book You May Like by DannyO152 · · Score: 4, 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.

    1. Re:A Book You May Like by wazafoojitsu · · Score: 1

      Your comments are of help even though my question was not perfect! Looks like Ruby or Python will do the trick, but I might have to check out Clojure as well. Thanks again!

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
    2. Re:A Book You May Like by Jah-Wren+Ryel · · Score: 1

      I'd pick javascript, which runs in the browser. ... 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

      It is still a better name than ECMAscript which I swear to god sounds like a skin disease.

      --
      When information is power, privacy is freedom.
    3. Re:A Book You May Like by Frequency+Domain · · Score: 1

      Looks like Ruby or Python will do the trick

      Python has more market share than Ruby and I hear lots of other folks talk about how beautiful they find it. However, my primary field is computer simulation and object-oriented modeling is extremely important to me. I find it hard to get past having to explicitly include "self" as the first argument to methods in Python -- to me it makes Python feel like a procedural language which bolted objects on as an afterthought, while in Ruby OOP is integral. I seem to be in a minority on this, though.

    4. Re:A Book You May Like by Anonymous Coward · · Score: 0

      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.

      Skip Ruby and Scala. Start with Clojure or Haskell. Haskell is a really nice pure functional language, and if you're looking to stretch your brain a bit, monads are fun to play with. Clojure is also functional and can call Java (and vice versa) pretty easily, so lots of libraries/functionality available; the downside is that Clojure is reportedly pretty slow.

      I guess as far as Ruby the language itself goes: I can't really say why to skip it. I'm mostly sour on Ruby because it's generally used with Rails, which (at the time I read a reference on it) was "how to design a web application that will never scale beyond 10 simultaneous users." Scala tries to be object-oriented and functional at the same time, but the problem is that you can redefine EVERYTHING, which leads to syntax like

      "#" > . list_snippet

      being valid. Having said that, it has some nifty features (like traits) and its type system (if you can wrap your head around it) is pretty remarkable.

      Prolog is interesting because it's a logical inference engine. Erlang is nice if you're looking for concurrency - the actor model can't be beat for writing easy to comprehend and maintain systems that make heavy use of concurrency (and is a nice way to reason about how to write applications in Java w/ JMS as a replacement for the actor model in Erlang for mainstream applications.)

    5. Re:A Book You May Like by Tablizer · · Score: 1

      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.

      Sounds like one titles such as:
      Seven Languages in Seven Days For Dummies in a Nutshell Super Bible Extreme Unleashed with UML, HTML 6, and XML+++ Security for the Brain Dead in ICU's While Juggling in Reverse.

  35. What are you writing? by techhead79 · · 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. All we are going to do is preach up and down what we use the most. I use J2EE at work and PHP at home. For old school applications that actually exist on the freaken computer they are being used on...I honestly like QT but I'd love to have another chance to try python as a long time ago I did some work with tcl/tk.

    Regardless of what you pick someone is going to have a problem with your choice. In fact if you're looking forward to years of development chances are the language you choose may not be the language of choice for new projects when you finally get around to finishing it off.

    Pick the right language for the job...don't pick the most popular language out there unless you're looking to be employed again in the field.

    1. Re:What are you writing? by wazafoojitsu · · Score: 1

      Again, more great info, thanks. I forgot about tcl/tk, Python was just getting started when I touched that one. I'll be checking out Ruby and Python, maybe Clojure. And I have still a great respect and admiration for PHP! Thanks!

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
  36. Python and ActiveState's Komodo Edit by skyhawker · · Score: 2

    I agree with Python, and be sure to check out ActiveStates's Komodo Edit as your development environment.

    --

    The best diplomat I know is a fully activated phaser bank.
    -- Scotty.
    1. Re:Python and ActiveState's Komodo Edit by Anonymous Coward · · Score: 0

      I just checked out Komodo Edit...cor blimey. Exactly what I'm looking for. Love the remote folder open and code completion. My main editor now I'm sure. Spanks!

  37. Mod Up by Anonymous Coward · · Score: 0

    Pretty decent points.

  38. How about Forth? by noelhenson · · Score: 1

    I love using Forth to debug new hardware as well as develop embedded control systems. As you are retired and looking for a new, (fun?) native language, I'd sure give it a try.

  39. what do you want to do? by Surt · · Score: 1, 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.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  40. The language that is popular with what you want to by Anonymous Coward · · Score: 0

    The language to learn depends on what you are interested in, language choice is very much defined by the environment you want to work in these days. If you want to write windows apps, then c#/.net, if you are interested in unix then C/C++, for mac/iPhone c/Objective-c/Cocoa, for Android Java, about the only environment where you really are free to choose is web development, where PHP is the most popular, but plenty of other people are doing real work with other languages like python and ruby.

  41. Ruby by Anonymous Coward · · Score: 0

    You haven't really stated your goals, so I assume you'll want to be happy when hacking.

    So I'd recommend Ruby.

    It's the only language aimed to make programmers happy.

    It's free, too.

    Have fun!

  42. Wow - 20 years of experience by Anonymous Coward · · Score: 0

    If you have 20 years of development working with all sort of programming language, OS, and can't figure that you can
    download Linux/Ubuntu with it own development tool set and Eclipse for FREE - then please don't write anything. You sound more
    like a user than a developer/coder/hacker and you need tons of hand holding just to write a simple program.

    So please, don't write anything cause your code will be too buggy and unmaintainable.

    1. Re:Wow - 20 years of experience by znrt · · Score: 1

      If you have 20 years of development working with all sort of programming language, OS, and can't figure (...)

      no need to be so rude. poor guy was absolutely honest from line one: "I was a consultant ". what would you expect?

      just enjoy all the farting, cool hints, and of course the gamemaker spam!

  43. Java + Eclipse by H0p313ss · · Score: 1

    Mature language and environment, vast number of open source third party libraries, runs literally anywhere. (Well... except iOS ...)

    --
    XML is a known as a key material required to create SMD: Software of Mass Destruction
    1. Re:Java + Eclipse by JoeMerchant · · Score: 1

      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.

    2. Re:Java + Eclipse by H0p313ss · · Score: 1

      Using eclipse for C++ is madness, for Java it's great.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    3. Re:Java + Eclipse by JoeMerchant · · Score: 1

      Using eclipse for C++ is madness, for Java it's great.

      This I know, unfortunately, it's the only tool worth mentioning for Nios development, and Java on Nios is double madness, so....

  44. My favorite: C++/Qt by Kjella · · Score: 3, 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.

    --
    Live today, because you never know what tomorrow brings
    1. Re:My favorite: C++/Qt by Anonymous Coward · · Score: 0

      Great thing about Qt is it's cross platform -- Windows, Mac, Linux -- and now even iOS.

  45. Mono by Anonymous Coward · · Score: 0

    Java+Eclipse is a pretty good suggestion.

    Mono is really nice and pretty underrated. MonoDevelop is a little easier to set up, and is also free.

  46. Retiring? by Anonymous Coward · · Score: 0

    When you say "retiring" - do you mean in the sense that you're drawing from your IRA/SS/ or getting your income from somewhere other than a 8-6 corporate job?

    And you want to program again?

    Oooooookay.

    GO back to 'C'. C development environments are pretty much free on all platforms - even from Microsoft. And they also have C# and VB. I would stay away from iTouch or iPad development though because you have to pay ($100) to join the Apple developer network in order to be able to put your software on your own device - unless they've changed in the last year since I looked. And they use that spawn of Satan - Objective C - sister demon to managed C++.

    If I were retired, the last thing I'd want to do is program. Gardening and cooking would be it. And the interesting thing is that gardening and cooking has a shit load of science involved. In my spare time, I'm constantly teaching myself chemistry and botany. And the nice thing is that there are a shit load of free resources all over the net. I get to work with my hands, get outside, and get plenty of physical exercise moving bags of shit around - literally and figuratively. I've become a hell of a cook too. 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. There's this Thai place that I have not (yet) been able to do better.

    1. Re:Retiring? by optimism · · Score: 1

      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.

  47. Do whatever monster.com says. by gestalt_n_pepper · · Score: 1

    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 happier proven wrong here.

    --
    Please do not read this sig. Thank you.
  48. Why is the truth modded down? by Anonymous Coward · · Score: 0

    Oh, that's right. You can't handle the truth.

    Put your heads back in the sand. By the time you wise up, it will be too late.

    Don't say you weren't warned.

  49. the web is tomorrow by alienzed · · Score: 1

    javascript, jquery, ajax.

    --
    Never say never. Ah!! I did it again!
    1. Re:the web is tomorrow by foniksonik · · Score: 1

      Node.js, Backbone, Require and AMD.

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
  50. Don't focus on the language! by Anonymous Coward · · Score: 0

    Find an awesome framework that a) follows a coding philosophy you believe in, and b) is maintained by a thriving community of good people.

    The language that software is written in can change, but the quality of the code will always be based on who is writing it.

    This article, Frameworks Round-Up: When To Use, How To Choose..., looks appropriate.
    I will honorably mention my own favorite, Drupal.

  51. C# by Anonymous Coward · · Score: 1

    I'm a fan of both the language and the runtime(s). Microsoft's and Mono's implementations work just fine. There's a bit better docs for Microsoft's (since they support everything) but Mono supports a surprising large amount. Plenty to work with. And it's easy to call into a C++ dll (that's actually true of everything except Java -- and even there it's reasonable to do).

  52. Python or Lua by gweihir · · Score: 1

    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.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  53. Processing by optimism · · Score: 1

    It is very satisfying for personal/hobbyist applications. Lots of libraries for graphics, sound, serial port, remote control, etc.

    www.processing.org

  54. It totally depends what you want to do. by subreality · · Score: 1

    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 web dev.
    JavaScript is ubiquitous for client-side web, but it's also sometimes a good choice when you want a high-performance, security-conscious general purpose scripting language.
    Kernels are written in C with few exceptions, and of course it's second only to assembly both in performance and annoyance, for related reasons.
    Perl is a dead-end in my opinion, but it's not over yet; it will still be in common use for at least another decade.
    Lisp gets an honorable mention for many niches.

    So choose what field you want to work in, then start boning up on the language they use there.

    Also: cramming the syntax in a weekend doesn't make you a programmer of that language. You can write BASIC in any language, as the saying goes. The reason all these languages exist at all is because each has some feature that enables you to construct things in a radically different way from C. Some examples:

    Ruby is pervasively OO (everything is an object, everything you do is a method) and highly functional (lambdas, etc).
    Take a look at this: https://en.wikipedia.org/wiki/J_(programming_language) - the whole mindset is very different from what you're used to.
    Then this: http://en.literateprograms.org/Quicksort_(Haskell)

    Etc.

    1. Re:It totally depends what you want to do. by wazafoojitsu · · Score: 1

      Great comments thanks for your reply! You hit the proverbial nail on the head nicely. Yes, I know learning syntax in a weekend does not a programmer or expert make...that comment was really just to say that I don't care if the syntax is clean or reads like regex snips but I am more interested in capability. Thanks again!

      --
      "Evil man makes you kill me...evil man makes me kill you..even tho..we're just families apart.." :jimi
  55. I that second by Anonymous Coward · · Score: 0

    er, I second that

    1. Re:I that second by Genda · · Score: 1

      Back in the early history of personal computers way back in 1982... I worked on a PC produced by Epson America that ran on a proprietary version of CPM called TPM. The machine supported a 16 in 640 x 480 color display, with real time animation (and games), and made the IBM PC look like a trash compactor by comparison. But it was to built in application software, ValDocs written in Forth that were especially interesting. Full 256 character name document management system, built in WYSIWYG Word Processor and Spreadsheet, Full res color paint program, games, built in FAX, email, and print system, and basic online telecommunication software. All in a single package. Too bad it was so buggy. Forth is a bugger for large applications. We referred to it as a write only language.

  56. You are HOPELESS! by Anonymous Coward · · Score: 0

    Give up. If you have people what you want to do than just end your life now and save us the additional posts.

  57. Let me attempt a clearer question by tepples · · Score: 1

    Let me attempt a clearer question: What language should I learn if I seek a full-time job as a programmer without having to leave behind my family and move to (say) Austin, Boston, or Seattle?

    1. Re:Let me attempt a clearer question by shutdown+-p+now · · Score: 1

      Much as it pains me to say this, PHP.

      (you didn't say anything about seeking a full-time job that you'd actually enjoy)

    2. Re:Let me attempt a clearer question by Anonymous Coward · · Score: 0

      Marketing.

    3. Re:Let me attempt a clearer question by Anonymous Coward · · Score: 0

      C# is a good strongly typed language that serves a variety of purposes. There are plenty of jobs for C# as many businesses use it for their infrastructure apps. It's been my primary occupational language since 2005 or so. You can also find a lot in Java, but it's easy to get lost in the litany of frameworks.

    4. Re:Let me attempt a clearer question by Anonymous Coward · · Score: 0

      >Austin, Boston, or Seattle

      I think you accidentally San Fransisco.
      And LOL for including Austin. Austin has less than 1/10th as many programming jobs as Seattle.

  58. "Dynamic"? by Corson · · Score: 1

    Any comments posted by people who only use "dynamic" (formerly known as "scripting") languages are largely irrelevant. If, on the other hand, your entensive coding experience also includes compiled languages, such as C/C++, C#, Java, Delphi then sure, I am all ears.

  59. Personal Reasons by Lando · · Score: 1

    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 want a programming language that focuses on computer control Perl is always nice. If you want to design device drivers assembly is fun.

    Really without a clue as to what kind of programming you want to do, your basically posting to a car enthusiast's site asking what kind of car to buy. Without a list of requirements you can get anything from a yugo to a hummer to dump truck.

    --
    /* TODO: Spawn child process, interest child in technology, have child write a new sig */
  60. Or Object Pascal by etrusco · · Score: 2

    General programming for personal uses or your own company: Object Pascal with Free Pascal (and Lazarus).
    http://freepascal.org/
    http://lazarus.freepascal.org/

    1. Re:Or Object Pascal by phantomfive · · Score: 0

      WHY would anyone want to program in Object Pascal. Serious question.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Or Object Pascal by Anonymous Coward · · Score: 0

      Because they'd like to maintain delphi legacy applications?

      A friend of mine can produce a database frontend in delphi
      faster than you can say f*ck you. I'm exaggerating but you get
      my point.

      Some people's concept of beauty are not what you would expect. ;)

    3. Re:Or Object Pascal by marcovje · · Score: 1

      WHY would anyone program in anything else? Serious question.

    4. Re:Or Object Pascal by Anonymous Coward · · Score: 0

      It's easy to learn, powerful and productive. I've written multi-threaded, database-driven programs in Delphi and find the environment more productive than anything else I've ever used. Lazuras is an open-source version of Delphi.

    5. Re:Or Object Pascal by jimbbb · · Score: 1

      Another vote for Lazuras (clone of Delphi): http://lazarus.freepascal.org/. Free IDE including a debugger.

    6. Re:Or Object Pascal by phantomfive · · Score: 1

      Because you get the network effects of having lots of other people programming in the same language as you. That alone is enough to program in a more popular language, unless there is some compelling reason to choose Delphi.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:Or Object Pascal by Cro+Magnon · · Score: 1

      Frankly, I liked the Pascal based languages (Pascal, Modula-2, maybe even Ada), but I agree the lack of popularity was an issue for that reason.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    8. Re:Or Object Pascal by phantomfive · · Score: 1

      I'm sure you and the earlier poster do, my question is why? What is so great about it?

      --
      "First they came for the slanderers and i said nothing."
    9. Re:Or Object Pascal by Cro+Magnon · · Score: 1

      The syntax was cleaner and easier to understand than the C-like languages, and Borland's Turbo Pascal and Modula-2 were just as capable for most purposes as C.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    10. Re:Or Object Pascal by maz2331 · · Score: 1

      It has the same power as C, but is more structured and readable. I love Pasal for things that manipulate strings a lot.

    11. Re:Or Object Pascal by phantomfive · · Score: 1

      That second sentence is fascinating.

      --
      "First they came for the slanderers and i said nothing."
  61. Programming for fun? Lisp and Smalltalk by Riktov · · Score: 2

    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 and Peter Siebels' "Practical Common Lisp". For Smalltalk, try Squeak accompanied by Squeak by Example. 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.

    1. Re:Programming for fun? Lisp and Smalltalk by Anonymous Coward · · Score: 0

      Many of the design patterns documented by the gang of four came from the smalltalk community.

      I don't think I've ever run across a shop using Smalltalk in production code. Also Lisp has been pretty scarce outside of academia for the past 10-15 years or so.

  62. Javascript by l0ungeb0y · · Score: 1

    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. Also, the level of entry is very low, a teenager can quickly get up to speed and you don't need exotic tools or have to endure an elaborate setup, you can create all the code in a simple text editor and installing Node.js is very straightforward. Plus, Node.js has a package manager which provides a plethora of add-on modules that you can access from the commandline and in your node.js environment.

    Nodejs.org

  63. TIOBE Index by qw(name) · · Score: 1
  64. Don't focus on the language! by Anonymous Coward · · Score: 0

    Find an awesome framework that a) follows a coding philosophy you believe in, and b) is maintained by a thriving community of good people.

    The language that software is written in can change, but the quality of the code will always be based on who is writing it.

    This article, Frameworks Round-Up: When To Use, How To Choose..., looks appropriate.
    I will honorably mention my own favorite, Drupal.

  65. Go with .net by Taantric · · Score: 0

    Don't listen to the hippies in here. They'll abuse Microsoft while at the same time sporting a boner for Apple. The irony is lost on them. Go with C# & .net. Microsoft gives the Visual Studio Express editions for free and it is the *best* IDE bar none. C# is a beautiful modern language with an easy learning curve. With Windows 8 on the horizon and the ability to write once and publish to a vast common ecology of Windows phones, tablets, desktops, laptops, servers is going to be a gold rush.

  66. Perl has been a good last language by ynotds · · Score: 1

    Maybe because I got into it near the end of last millennium, or because I was well enough grounded in fundamentals from assembler days, or because I was often dealing with dirty data, Perl plus the also less than perfect MySQL have enabled me to play in several unconnected spaces.

    In 2012 I'd add the disclaimer as long as you don't treat CPAN too seriously. While there are indispensable gems there, way too often it either doesn't quite do what you need or alternatively, in attempting to do so, it invokes ridiculous dependency trees where quality control collapses.

    Still waiting for Perl 6.

    --
    -- Our systemic servants do not good masters make.
    1. Re:Perl has been a good last language by shawnhcorey · · Score: 1

      CPAN is the world's largest repository of software; all of it tested; all of it free. It is also 18 years old. Yes, there are some modules in it that were the best in their time but have been surpassed by more modern modules but some of them were so well written that nothing modern has replaced them. To determine what module would be best for your application, I suggest you ask. Sites like PerlMonks http://perlmonks.org/ are happy to answer any question.

      --
      Don't stop where the ink does.
  67. Portuguese by ChunderDownunder · · Score: 1

    If developing economies are your thing, chose Brasil. The beaches are better, the women are cuter. ;-)

    Lua comes from there...

  68. Commentary on a bunch of languages by strombrg · · Score: 1, Insightful

    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.

    1. Re:Commentary on a bunch of languages by Anonymous Coward · · Score: 1

      Lockin. Pfft. Who gives a shit if C# locks you in unless you _do_ give a shit, then you should give a shit.

      Why do people think they will need to just willy nilly change platforms for every tool they write? The .NET/IIS/SQL Server trifecta is very powerful and in many cases will be all you need.

      I can't count the number of times I've written some application and then thought "Fuck, I want to move this all to Linux!" because that number is a big fat fucking 0.

      You're more locked in by the sheer unmaintainability of using something like Perl or Python for a large application than you are by writing something in C#.

    2. Re:Commentary on a bunch of languages by Anonymous Coward · · Score: 0

      I agree with some of that, except:
      C: According to recent measurements, most desired language in the industry right now. Ie, useful if looking for work
      C++: No reason to avoid, it's really nowhere near the mess most people seem to think. In many ways I find it nicer to work with than, for example, Java. Memory management is a breeze if you stick to RAII and smart pointers, so that's hardly an argument.
      Javascript: Not a bit of a mess, a bloody mess. Necessary evil for a lot of web development though.

      I'd also like to add:
      Haskell: Awesome language, once you grok the quite different ways of doing things. Certainly neater than any of the ones you've mentioned. Unlikely to get you an employment though.
      A lisp (for example clojure): Also very nice, though personally I prefer Haskell.

  69. Java on an Android Tablet by Anonymous Coward · · Score: 0

    It's a very pleasant surprise to use Java. I'd suggest you get into using Android because it's likely to be the next major platform and a tablet because phones you hit the screen size limits pretty fast.

    Seriously, if you're new to Java and used say C++, then you'll find all your familiar STL classes, a good clean/rich set of APIs and good stability.

    My view is that Android is outgrowing Google, so it likely will be the dominant platform. PHP Python etc. niche. QT I like, but when Nokia dumped it, I think they stuck a nail in its coffin. C#, not going anywhere, Windows Metro, not worth the look.

    iPad & Objective C, well its difficult to imagine Apple making as many different products as Android is being put on, so ultimately I think they will succumb, but it has a few good years yet on it.

  70. Ruby by Anonymous Coward · · Score: 0

    An interesting language with a nice looking structure.

  71. Coming from another hack by aXis100 · · Score: 1

    Similar situation here, have been a consultant working with various systems and languages for the last 15 years. I'm also not formally trained in programming but have developed some reasonably complex apps both at work and home across a variety of languages.

    Simple answer, just use C# via Visual Studio Express. The IDE did everything I ever wanted it to do, and C# is a very practical and straightforward language. If like me you just want to "get the job done", then you will also be pleased with the large number of built in classes available, plus there are are plenty of resources on the net to help out.

    The good thing is it will grow with you, hacks like us can get by just fine but you can also develop complex object oriented solutions, plugins, reflection etc as you develop your skills.

  72. Visual Basic .Net by Anonymous Coward · · Score: 0

    I'm a rebel.

  73. What about HAXE? by cadu · · Score: 1

    http://haxe.org/

    Multiplatform, statically typed, open source...outputs to desktop and mobile platforms as well.

    Any thoughts on this one??

  74. AbsCurity by EmagGeek · · Score: 1

    AbsCurity is really cool language developed for just the occasion when a seasoned programmer is looking for the next cool thing.

    It combines the most absurd and obscure aspects of many other languages, to create that silly, useless language that so many "hardcore" programmers insist on learning to show off to their friends.

    In short, it's the dvorak keyboard of languages.

    1. Re:AbsCurity by Anonymous Coward · · Score: 0

      except that neither Google or Bing has heard of it.

      Maybe they didn't get the memo?

  75. C, C++, Python, Java, SQL, Ruby by efalk · · Score: 1

    In that order.

  76. ActionScript . . . and by muridae · · Score: 1

    I've said it before on /. ActionScript is ECMA with a nice set of libraries, amd flashdevelop is free. It makes a great prototyping tool, can speak with networks, serial devices, and nearly everything else. But, it doesn't do everything very well. 3d libraries are painful, and SQL was all 3rd party libraries.

    A lot depends on what you want to do. Processing is another great prototyping language, C# is useful in the Unity engine, and C or PIC BASIC or Arduino's Java-like are great for microcontrollers. PHP and ruby for web-aps. And the only reason I don't recommend python is that I haven't needed to use it.

  77. Say No To Hammers by Anonymous Coward · · Score: 0

    You pick the language to suit the project. You don't pick a language because it's a language. You've said nothing about the types of projects you want to work on. Thus these are not the answers you're looking for. If you don't understand this, you need to.

  78. So Ya Want To Build Something? by SuperCharlie · · Score: 1

    Its a Monty Python skit writing itself..

    Why yes, I want to build something

    Well what is it you want to build?

    Something..you know.. I need tools man

    Yes, yes.. but what sort of something

    Oh a right good something.. something that will last a long time and..you know.. be useful
    But of course I need tools my good man.. good tools.. not those wimpy tools.. professional ones!

    Great then.. here is a jack hammer and a crochet needle. Off with you now.

  79. If you're not smart enough to google things... by Anonymous Coward · · Score: 0

    You should probably just give up now. Asking others to make a choice for you, rather than doing the research and deciding on your own... pathetic.

  80. Scala by Anonymous Coward · · Score: 0

    You should learn Scala.

    It's object-orientated and functional. You can write your programs using either style or in a combination, which is a great way to learn and explore. Scala has an elegant syntax and local type-inference, which makes it feel like a scripting language, but still gives you the nice guarantees type-safety guarantees and allows for intelligent auto-completion. It runs on the JVM and you can interact with pre-existing Java code, so you have access to all the existing Java libraries.

    As a language Scala has many advanced features not yet found in other mainstream programming languages. Features like pattern matching, case classes, implicits, abstract types, etc. These features will allow you to express your programs even more succinctly, but also help you understand how other language, such as Haskell, work.

    In short, learning Scala will allow you to learn multiple language paradigms in-go, and experiment with different concepts to see what works for you.

  81. can't resist by Anonymous Coward · · Score: 0

    Try a few. There are so many wonderful tools available for free nowadays.

    Java is nice because it's cross-platform, and also versatile. Mature, well-developed class libraries. Netbeans IDE is a free download, and also does other languages to some extent. I've clocked Java going faster than C++ for some things, believe it or not.

    Groovy - once you know Java.

    Javascript - download node.js (free) and you'll be writing servers. Surprisingly easy to use.

    Python is popular (I don't know it)

    Perl is useful once you know it, but I tend to use Groovy instead nowadays, since anything complex can interface with Java's libraries.

    Don't neglect your OS. Download VMWare Player (free) and try different distributions from http://distrowatch.com. You might decide that the OS your machine came with could be replaced with something better. :-) BTW, try for KDE instead of Gnome. There is a learning curve, but better acceleration in the long run, is what I have found.

  82. Wrong Question by StormyMonday · · Score: 1

    Times have changed. Languages are essentially irrelevant; if you have a reasonable background, you can pick up whatever languages (note plural) you need.

    The question a couple of years ago was "what libraries?" There's probably a library that does what you want; use whatever language it's written in. Yeah, I know, everything eventually reduces to C, but like most things, it ain't that simple.

    The question now is "what frameworks?" Nowadays, you don't develop programs from scratch; you start with a framework and build on it. Using Ruby on Rails? Write in Ruby. Using Django? Write in Python. Node? Write in JavaScript. Hadoop? Write in Java.

    That said, the only two languages that it's really necessary to be fluent in are C and JavaScript. C is, of course, the language that most of the rock-bottom stuff is written in. A lot of systems produce C as intermediate code, and, as a result, a lot of C-isms tend to sneak into places you wouldn't expect. Learn your pointers. JavaScript is the only language that will run inside a Web browser *; if your code touches a browser, it will use JavaScript.

    * Yeah, I know; Java applets. I don't know which is more painful -- writing them or using them.

    --
    Welcome to the Turing Tarpit, where everything is possible but nothing interesting is easy.
    1. Re:Wrong Question by Anonymous Coward · · Score: 0

      Basically the question becomes what platform does the submitter wants to program. If the submitter wants to participate the various OSS projects the language of choice might be different than that for programming personal home or agriculture related automation systems. This is coding for personal reasons, after all.

  83. Cobol by flyingfsck · · Score: 1

    Well, a 20 year coder with 30 years experience and he doesn't know that COBOL rules the world?

    --
    Excuse me, but please get off my Pennisetum Clandestinum, eh!
  84. From someone in a similar position. by Anonymous Coward · · Score: 0

    Illness has kept me away from programming for about 12 years, but I did pay a bit of attention in that time.

    1) Javascript. First understand that JS is for the most part ugly--unless you are the Rubeus Hagrid ( of Harry Potter fame ) of programming and describe monsters as being "cute". That being said JS plays a role in web technologies similar to the role sh plays in a Unix environment. It sort of glues everything together. In picking up JS you will also pick up a lot of web concepts ( eg CSS, DOM ... ). Also various "widgets" and such are written in JS. If you don't yet know HTML ( which I do not count as a prgramming language ) pick up the basic concepts, especially HTML5.

    2) C. Brush up on C, especially if you aren't up on staandards. There will still a lot of "K&R"isms around ten years ago. Also pick up some basic C++.

    3) Ruby. You will need to learn one of the modern scripting languages Perl, Python, Ruby. Of these Ruby is the cleanest.

    4) Are you planning on doing Android programming. Then you might want to learn Java first. Similarly iPad programming means Objective C.

    Beyond this you will have to specify background and what you want to do.

  85. Learn an HDL - vrey challenging. by hamster_nz · · Score: 3, 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!

    1. Re:Learn an HDL - vrey challenging. by solidraven · · Score: 2

      The real mindf*ck for most computer programmers comes when they realise half their common constructs are completely useless.
      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 ISE + ModelSim should get you started though).

    2. Re:Learn an HDL - vrey challenging. by TeknoHog · · Score: 1

      Seconded. If you don't have much electronics experience, you'll probably want to learn some on the side. Both for interfacing practical things, and to understand your designs better. I got started from fpga4fun and it's still a nice reference on some things, even after moving on to more challenging designs.

      --
      Escher was the first MC and Giger invented the HR department.
    3. Re:Learn an HDL - vrey challenging. by Anonymous Coward · · Score: 0

      If your plan is to stretch your brain with something interesting, try VHDL, Erlang, Clojure, &c. Check them out. VHDL is the least accessible, since there are no good books available.

  86. Work thorugh Project Euler by hamster_nz · · Score: 1

    Just pick any language and work through Project Euler

    You will think harder and learn a lot more than learning another language

    1. Re:Work thorugh Project Euler by TeknoHog · · Score: 1

      Seconded. I would say it is more about learning math (especially number theory) than any programming language, but of course you'll learn some of both. It is also fun to try several languages for one problem, and think about the best language for each (I've mostly used Python and Fortran).

      --
      Escher was the first MC and Giger invented the HR department.
    2. Re:Work thorugh Project Euler by PJ6 · · Score: 1

      Also Seconded. Thirded? Whatever.

      If you're competitive, a big part of working on PE is posting a solution you can be proud of, and reviewing other people's work. Within a particular language, the shortest and clearest solutions tend to be the best, and it's the drive to achieve this kind of beauty in your own code that provides the deepest instruction.

  87. Chinese by Anonymous Coward · · Score: 1

    Chinese

  88. Python by Anonymous Coward · · Score: 0

    Python it is.

  89. The wrong question. by Anonymous Coward · · Score: 1

    Or, mebe you could read through some of my replies to the comments and get an idea and post a USEFUL comment. Or not. You probably would answer the wrong question.

    I would suggest you follow your own advice. Read your comments. They mostly consist of you sniping at people. Or complaining about Slashdot itself, while, without a trace of irony, saying that you have only just created an account and have therefore contributed nothing to the community of which you make demands. And, more than once, demanding that people do more work for you, to make up for your own unwillingness to invest time in answering your own question.

    You are disrespectful. You are graceless. You are a horse's ass. Perhaps not the answer you sought, but the one you need.

  90. Re:Why I Hate All Programming Languages by cforciea · · Score: 4, Insightful

    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.

  91. Want to learn A Programming Language? Learn APL. Nothing else approaches it in parallelism or will be as useful when we all have thousands/millions of processors in the box.

    --
    Epitaph: At last! Root access!
  92. Haskell by jprupp · · Score: 1

    If you want to learn a cool language while having assured fun, learn Haskell. It is purely functional and very compact.

  93. the ugly stepsister? by prof_robinson · · Score: 0

    At the risk of sounding old school: PERL. I've learned PHP, Python, JAVA, ActionScript (yeah, I know), some Ruby, and a little C++... but, over the last decade, I find myself continually circling back to PERL. Why? Because it's stable, ported to almost every OS known to man, you'll find it installed on pretty much every webserver and linux installation by default. It just works, and its virtually omnipresent. You don't have to use it any particular way, either... object oriented, non-OO, whatever you feel like. I use it for home network stuff, sysadmin stuff, CGI, web apps, even applications. It's an excellent glue language that brings everyone together. It's simple to learn and deploy. The only thing I would suggest, is to start learning PERL6... not only is the language re-written from top to bottom, the internals are completely nextgen. It'll be using the Parrot compiler, which will allow you to mix languages inside PERL... so, not only can you write PERL however you'd like, you can throw in bits of PHP, Python, and Ruby if that floats your boat, too. That's my 2cents, and I'm sure some people will think it backwards somehow, but hey... in 15 years of coding and design, I have yet to find something it can't handle, or a platform it won't run on.

    1. Re:the ugly stepsister? by kwoff · · Score: 1

      Perl 5 continues to be strongly developed. Perl 6 is not likely to catch on any time soon, if ever.

    2. Re:the ugly stepsister? by prof_robinson · · Score: 0

      Not sure I buy that. PERL5 has been frozen for some time. A lot of people use it, for sure... CPAN downloads are up like 800% over the last 5 years or something like that... but the language itself isn't being developed anymore. PERL6 has been under development for almost 8 years, and Larry's about 90% done with it from what I've seen. It hasn't been deployed really anywhere yet, but there are a lot of folk working with it through Rokudo(?). So, its kind of unfair to say it won't catch on, when it hasn't even made it out of the lab yet. But the language specs have been finalized, and you can learn it. And you can install it yourself and play with it. Time will tell if it gets picked up by people... but the syntax is really nice and flexible.

    3. Re:the ugly stepsister? by Anonymous Coward · · Score: 0

      You're so wrong, it hurts. Perl 5* has had over 40 releases since 2009, count them: http://search.cpan.org/dist/perl/ Read the change documents for the supposed "frozen" language: http://p3rl.org/perl5100delta http://p3rl.org/perl5120delta http://p3rl.org/perl5140delta

      Version 5.16 is coming next month, for FSM's sake!

      * The name is not uppercased, see perlfaq1. With that misspelling, you just have revealed yourself as an outsider, or someone who did not pay attention what happened in the last 10 or so years. Ask yourself: If you cannot get the name of the language right, are you likely to have the correct perception of how Perl is developed, maintained and released, or insights into the community? Same with Rakudo.

  94. Re:ActionScript . . . and by prof_robinson · · Score: 0

    ActionScript, though? That language is a mess. It's got at least three different versions, all with radically different syntaxes, that seem to coexist somehow. (Kind of. ) The language is buggy - its one of the only languages I know, where I don't trust the actual compiler. I have had to work around bugs that simply shouldn't exist. I have had movies just sit there and not move no matter what I tell them to do, and other times where the movies just won't play, no matter how many times I tell it. It uses up a lot of overhead, and smartphones are fleeing from it. It was great in the beginning for a lot of graphic/multimedia type stuff... but HTML5 is rapidly picking up the slack. In another 10 years, it'll be a dead language like FORTRAN.

  95. How about a more "mature" language? by solidraven · · Score: 1

    Fortran, anyone? Or is this the wrong crowd?

    1. Re:How about a more "mature" language? by prof_robinson · · Score: 0

      Sorry, but the only thing FORTRAN is good for, is reading the programs included with the climateGate files, that show how the researchers "massaged" their temperature data. I think they're the only folk still using it.

  96. start over - from scratch, 20 years is a long time by ardiri · · Score: 1

    Never liked anything 'lower-level' than C

    you say you were a programmer 20+ years ago? the only decent options back then were ASM, and the concept of OO wasn't even born yet - you left the industry because you were not capable of being in it in the first place. times have changed; all the old skool boys have stuck with C - specifically focusing on embedded environments (C, C++, objective-C) and the newbies (kids) are playing with managed code these days. CPU's are 1000x faster, RAM is 100x more available - you will have a better chance starting from scratch than trying to recuperate what you knew before.

  97. Not just languages, but programming practices by Spudley · · Score: 1

    It isn't just programming languages that have changed in the years since you changed career 10 years ago (or 30 if we start from when you first cut your programming teeth).

    Back then, the concept of unit testing your code was unheard of outside of financial institutions (though I bet they didn't call it that back then), and the phrase "design patterns" would have made you think more of knitting than programming. (The actual practices described by the common design patterns have been around for ages, but the names given to them are relatively new and have quickly become part of developer jargon. You need to know them).

    In short, whatever language you learn, try to also get a handle on some of the most current programming practices and the terminology around them.

    --
    (Spudley Strikes Again!)
    1. Re:Not just languages, but programming practices by PJ6 · · Score: 1

      It isn't just programming languages that have changed in the years since you changed career 10 years ago (or 30 if we start from when you first cut your programming teeth).

      Back then, the concept of unit testing your code was unheard of outside of financial institutions (though I bet they didn't call it that back then), and the phrase "design patterns" would have made you think more of knitting than programming. (The actual practices described by the common design patterns have been around for ages, but the names given to them are relatively new and have quickly become part of developer jargon. You need to know them).

      In short, whatever language you learn, try to also get a handle on some of the most current programming practices and the terminology around them.

      There are a lot of crap practices out there. And design patterns is overkill and possibly counterproductive. He doesn't need to concern himself with those if it's just "personal use", whatever that is.

      An expert is someone who's already made every mistake. It is better to see a need for a convention before adopting it.

  98. Re:Why I Hate All Programming Languages by qbitslayer · · Score: 0

    The Turing computing model has two major flaws: in addition to being inherently sequential, timing is not an inherent part of the model. IOW, there is no way to predict whether two operations are sequential or concurrent. The computer industry is facing a major problem known as the parallel programming crisis. Guess what? The Turing computing model is not the solution. In fact, it is the problem.

    But who am I kidding? Turing is worshiped as a God in the computer science community. The industry will not learn its lesson until it hits them where it hurts the most, their pockets. Nobody messes with Moore's law and writes home to brag about it. Just saying.

  99. For Fun? Try "Modern perl" by Anonymous Coward · · Score: 0

    Why? For Fun! I recently returned to perl as my primary development language and the perl community has been just friggin' awesome!),

    So while everyone else argues about technical benefits ( and I could do the same about Perl), I'll instead go with the experience of learning with highly professional but humorous folks. There is a very good reason why the original open sourced community driven language keeps on evolving and attracting new adherents. It is fun to hang around these guys and expand your brain.

  100. Anyone else notice this? by Anonymous Coward · · Score: 0

    From the second post by the OP, listing languages (s)he has used:
    "BASIC, C, Pascal, Ada, COBOL, Perl, CGI, vbscript/asp, scripting (*ux shells mostly), VB, most recently PHP"

    CGI is not a language, and ASP wasn't invented until Jan of 2002...
    Also, why are ASP and VBscript together, but VB is not?

    From the orig post: never did anything lower than C
    What about Ada, COBOL, and Pascal?

    I'm not one to flame, but sometimes somebody needs to be slapped around with a large trout.... I gotta call BS on this one.

  101. Try before you [don't] buy! by hughbar · · Score: 1

    First to declare interest, I'm a 61 year old Perl person, although, in my mid 40s I did an MSc project using Java and still 'do' a little Java.

    That said, one of the things I love about the open source landscape is being able to try new languages without spending [even the modest amounts, in the 'old' days for the fairly awesome Borland compilers] cash. A big public thank-you to all open source interpreter and compiler maintainers.

    There seems to be a specific objective in the OP, so I would say short list according to the needs of the project. I love Perl but probably wouldn't use it for avionics, for example. I hate Java but would probably use it to 'finish' something that was already 85% Java, ugly to introduce another language into the architecture. I wouldn't use COBOL to write a small footprint real-time operating system. I think you see what I mean.

    Enjoy!

    --
    On y va, qui mal y pense!
  102. What kind of software you want to develop? by Claudix · · Score: 1

    I think you are missing some info: what do you want to do? Depending on what you want to develop, a different language may fit your needs:

    • - You say you don't like low-level languages such as C, so I'm guessing you don't want to write Linux drivers or create software for tiny embedded systems.
    • - Do you want an scriptable language? Then you may consider Python.
    • - Do you want a GUI-friendly language? On what platform? Just Windows? Then use .NET (C#, Basic...). On Linux? Then use C++ with GTK or QT libraries. On MAC? Well, MAC is another world. Notice I'm saying "GUI-friendly", not "GUI-capable". I mean, such languages are often accompanied by GUI designers that autogenerate code for creating interfaces.
    • - Portability? You may use Java.
    • - Would you prefer writing code in a smart, concise, functional way? Then you should have a look to functional programming languages such as Haskell, Scala or F# (the latter by Microsoft). Depending on what you want to develop, functional programming could save you a lot of time. However it can turn to be tedious to learn.
    • - What about Web apps? Are you planning to write desktop or web applications? For web apps you should consider Python, PHP, Javascript and a myriad of XML deriving languages.
    • - Now somebody will probably shoot on my head, but what about LISP? Are you planning to develop critical software that need to be modified "on-the-run"? LISP is used in very special environments where code and data are indistinguishible, and has a great macro system that allows you creating "your sublanguage". I started learning LISP and, on the face of it, it seemed to me a terrible ugly language. But, with time, that feeling disappeared.
    • On the other hand, a language without a good library is a condemned language, unless it is focused for some sort of special, reduced purpose, where such library is simply a small set of functions written to do a specific task.

      If you are evaluating "speed", then you should have a look to this site:

      http://shootout.alioth.debian.org

      Cheers

  103. Spanish! by Anonymous Coward · · Score: 0

    Because no one expects...

  104. Re:Why I Hate All Programming Languages by Lotana · · Score: 1

    Well, how about you make it constructive rather than just stating that you hate something along with cynicism towards the community your are trying to reach. What is your alternative to the Turing Machine that will work with existing Von Neuman architecture and bypasses the "Parallel Programming Crisis"?

  105. He's funnier than that by Kupfernigk · · Score: 1

    Assuming his blogspot post isn't just a honeypot troll, his view of engineering seems to be that you shouldn't have to know anything to do it. Just plug lego together - in other words his idea is that some else - who? - should do all the hard stuff so he can assemble it like toy bricks and get the credit. Let's call the someone else a programmer. He's worse than a PHB, he's - drumroll - an MBA.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
    1. Re:He's funnier than that by Anonymous Coward · · Score: 0

      Just plug lego together

      Which is no good for exactly the same reason of course; either someone else who is clever than you built a lego block that does what you want or you'll jam random bricks together, whine that lego just isn't powerful enough a paradigm to build what you want and then demand someone else solve the problem of your own lack of skill.

  106. Re:Why I Hate All Programming Languages by qbitslayer · · Score: 0

    Well, how about you make it constructive rather than just stating that you hate something along with cynicism towards the community your are trying to reach.

    Been there, done that. It doesn't work. I get much better results by being antagonistic and irreverent.

    What is your alternative to the Turing Machine that will work with existing Von Neuman architecture and bypasses the "Parallel Programming Crisis"?

    It's called COSA and it's inherently parallel and reactive. Current processors would have to be redesigned to handle COSA at the instruction level. Sorry. The baby boomers got you into this mess in the second half of the last century. Problem is, they are still in charge. Maybe it's time for them to gracefully retire and let a new generation have a turn at the wheel.

  107. Math by Anonymous Coward · · Score: 0

    Math. OK. That's a bit terse. Computational linguistics? Spend some time browsing terms like "lambda" on C2 Wiki or even plain old Wikipedia. Everybody on Slashdot has their pet language, and they are all special. When you get down to it, it's all math with different notation.

    The real answer might be, "think about what's important to you, and then pick one and study it. Then pick another one because the first choice is always the throw-away version".

  108. Javascript by Kupfernigk · · Score: 1

    Agree. Programmers tend to exaggerate the flaws of languages, but any grown up will note that Javascript runs on everything big enough to have a browser. Like all languages you can write badly or well. Even if you don't go all the way with Douglas Crawford (I don't), it's easy enough to avoid really bad things - and its maths handling is excellent for the intended application space. So the DOM sucks? Plenty of protocols suck, but we don't blame the language that has to work with them.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  109. Forced? by Kupfernigk · · Score: 2
    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  110. Definition of consultant by Kupfernigk · · Score: 1

    Someone who CONs the management and inSULTs the workforce (that's consultants to Government and the public sector though).

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  111. Seems about right by Kupfernigk · · Score: 1

    The article author wants to program without investing time up front in research. From my experience of consultants that puts him in my class D: wants us to do all the work so he can present the results back to us and get paid for it.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  112. Re:Why I Hate All Programming Languages by TheInternetGuy · · Score: 2

    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

    --
    If my comment didn't sound as good in your head as it did in mine, then I guess we all know who's to blame
  113. Objective-C by Anonymous Coward · · Score: 0

    If I was going to pick up a hobby language, that could get me a job if I wanted it, I'd pick up Objective-C. Writing apps for the iDevice line is fun, you can share your creations with most of your friends, have a built in distribution platform, and there is no shortage of jobs in the space. This also applies to Java/Android, obviously, but I've personally found Objective-C more rewarding. YMMV.

  114. Depends. But Perl isn't dead. by mattr · · Score: 1

    The right language depends what you want to do.

    I have used a number of languages and have to say I love Perl the most. It has always had much more power, flexibility, speed and breadth than say Python or Ruby (no not asking for flames thanks), is a real language unlike PHP, and has much extensibility to allow you to develop your own style. There is a reason why it has been the glue of the Internet and I enjoyed for example developing quickly responding websites (with fcgi and catalyst on apache) or for short utility programs. There is a joke about line noise though I have never seen it to really be true. The point is to reduce the amount of work and lines of code while maximizing creativity. Many people prefer python or ruby for that. And a text editor like XEmacs (free) works fine. Some javascript maybe. Some sql. But this assumes web development on linux / LAMP stack and we don't even know what you want to do.

    If you want to be marketable then perhaps saying you can do python or java or is useful. If you had to you could pick up PHP quickly. I doubt ruby would get you far marketing-wise though it could be fun. But the important thing is to decide what you want to make first and then choose a technology, and be willing to learn new ones. I would say try to stay away from proprietary technologies, like C# or other things that only work on Windows for example.

    Apex for Salesforce is an interesting Java derivative but really locked in and takes a lot of learning including quirks and online development. If you pick an open source environment like eclipse or emacs and an open source language with a vibrant community and easy to reach libraries (Perl's CPAN for example) and run the server on your own mac or pc then you can stay in control. Even if you are aiming at the mobile market there are many ways you can do things, some of which can save you time so you can focus on the parts that are most important. So the answer is that you don't have to do anything lower than C these days. If you can find some areas where you feel comfortable and maintain an interest in learning you can become strong in any space.

  115. Re:Why I Hate All Programming Languages by qbitslayer · · Score: 0

    You must be a baby boomer. LOL.

  116. Java by jandersen · · Score: 1

    Just as a counterweight against the by now almost automatic reply of "Python".

    Firstly, don't get me wrong - I have nothing against python; after all, I don't know the language, and judging from the popularity, it seems obvious that it is not bad.

    So why recommend Java? First a bit of background: I am, like you, experienced - 25 years and counting, on anything with more than 8 bits. I have always preferred C, or if need be, C++, but I have had to come to terms with Java (and especially Java EE), with its many, and sometimes absurd, buzzwords. I don't like it, but I have come to respect the toolset that it represents.

    So, my recommendation is to learn Java EE 6: Get the latest Glassfish and NetBeans (both free) and study the free material that is available - and believe me, it will keep you occupied for a while. I have never come across anything as full of words and concepts that I didn't immediately understand, but it is worthwhile, in the end, as you will end up mastering the world of enterprise aplications.

    Java in itself, I have to say, is a little bit pointless; yes, you can create applications that are somewhat portable on a good day, but they have to run in a JVM which eat a huge chunk of memory and takes quite a while to load. Java EE is the point of Java, so go all the way.

  117. Go by jmcvetta · · Score: 1

    Try Go. It's like Python and C had a child, that turned out to be both strikingly beautiful and a great athlete. I've been writing Python professionally for a long time, and I think there's a good chance Go will completely displace Python for new development in 5 years time.

  118. There are two cases by e70838 · · Score: 1

    You want to focus on coding for untold reasons, but these reasons are important to give you advices.
    If you need to develop a standalone application, python is (by far) the easiest way. It is fast to learn, powerful.

    If your need is to come back on developer market, you need to learn web development. If you have been a developer a long time ago, php and mysql will be a piece of cake, but you may have more difficulties with javascript/html5/css3. Learning jquery and bootstrap is the best way to web development. You should definitively avoid learning any framework: they become obsolete very very fast.
    Learning how to use github will also be a good idea.

    Remark: everything is free. If you have notions of unix, Linux is a very good environment for developers. But, if all you know is windows, you have many things more important than linux to learn first. Stick with windows.

  119. +1 for Clojure, book link by Fubari · · Score: 1
  120. Been there - you cant try everything by Anonymous Coward · · Score: 0

    I have looked at many programming languages and continue to do so every other week. There is so much out there, but most of it is not particulary tailored to meet the needs of recreational programming in the way that Basic was in the 80s and Turbo Pascal was in the 90s. The trouble is: you really only understand the weaknesses and strengths of a language once you wrote different kinds of programms or a very large one. It takes too much time to do it with every language you encounter - at least for somebody who still has a family and a job.

    I think the OP just wants to hear about interesting choices instead of the established industry sandards.

    Some things I found interesting lately: Vala, Hollywood or PureBasic, Lisping (iPad Scheme interpreter), Free Pascal or oo2c, Google Go, C++11

  121. Just go with Perl by Anonymous Coward · · Score: 0

    ...and learn your metaphors good!

    It's all about what do you want to achieve with our programs. First choose project that you're really interested in and after choose right tools for it. Simple.

    No sane person will start programming dynamic website with C and no sane person will do embedded programming with PHP. These all are potatoes and oranges, but no sane person will love their morning potato juice and having their steak with cream-garlic-oranges and red wine sauce.

  122. Threading just sucks! by Anonymous Coward · · Score: 0

    Who really cares? Just fire up new process and be happy. After you've burnt out your 16 fancy cores and need a second node for processing, your fantsy pantsy threads are just about useless. Fire up and manage those 100 x boxes and you'll regret that you ever thought about those damned threads!

    Just my five cents about going horizontal...

  123. It depends on what you want to do. by Anonymous Coward · · Score: 0

    First, you need to learn OOP and OOD. If you are a "professional", that is mandatory. C doesn't have this unless you used X/Widows ... XWidgetCreate()/XWidgetDestroy() where you pass in the structs.

    The idea that you'd have to pay for a work environment is only valid with Microsoft tools. Almost all the other languages are free. The version you can download and the version of that the richest billionaire use are identical - unless they rewrote it.

    Where I live, Ruby programmers get a huge premium over other languages. Ruby is a nice language, I hear. Anyway, if you want to make a living Ruby is not a bad choice.

    Java / JavaEE - enterprise-only stuff. You will probably never write an entire program yourself.

    Php - if you want to join the millions of community college hacks and have in infrastructure that seems to be full of Zero-day back doors.

    Python - fantastic learning language for 1st timers. Also very capable. More and more popular with sys admins. It is replacing Perl many places. Python doesn't let you write ugly code.

    Perl - er .... Modern Perl. It is harder to learn and has a reputation for write-once code. Modern Perl is vastly different, but you can still create write-once code. With your C background, perl will feel familiar. Perl is still extremely fast and there are huge libraries of unencumbered code you can leverage.

    C++ - Only for desktop apps and very few server apps. This is where a commercial IDE will be helpful, just watch out for Microsoft's. It is fantastic, but it also encourages platform specific code. I group C# into this .... I've never written it or studied it much, but C# seems to be C++ with memory cleanup - halfway Java and C++ - the good halves - according to reports.

    iOS uses the Apple ObjectiveC language. I think the IDE has a trivial cost.

    Android - Java (for now) and uses the free Eclipse IDE. The worst thing about Android dev is this big, slow, memory hungry IDE. You'll need 12G of RAM, an i7 CPU and SSD drives to make it work. It sucks on anything less - I know.

    There are hundreds of other languages - like R. All niche, but if you are good, you can earn a great living - perhaps Haskell?

    To see good examples of common solutions to programming problems in hundreds of languages, check out RosettaCode.org. You can see the code written by experts there in their respective languages.

  124. Re:Why I Hate All Programming Languages by mwvdlee · · Score: 3, 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.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  125. Learn a functional language! by Anonymous Coward · · Score: 0

    If this is purely for personal interest, learn something interesting and learn a functional language. Haskell and/or Scala would by my choices.

    Don't learn any of this imperative crap that the others are suggesting, how boring ;-)

  126. Go by Dr.+Tom · · Score: 1

    Go is quite nice. The compiler is very fast and strict, catching many errors. It really helps to write bullet proof code.
    The language itself has many high level constructs, functional programming, multithreading is built in, objects, etc.
    The runtime catches lots of errors, too, array bounds checking, for example. It's a well thought out language that is designed to help you avoid common mistakes. Yet it also has dynamic types and other powerful features. It's pretty neat.

  127. Re:Why I Hate All Programming Languages by Anonymous Coward · · Score: 0

    Right. You want to draw a mind-map and then let the computer make some sense out of it using some sort of infinite monkey approach and then intelligently picking the best outcome.

    Well, the good news is that something like that can be done, at least eventually. You'll figure the bad news when you manage to make something cool with it.

  128. different idea.... GWT by raddude99 · · Score: 1

    Most poster here seem to agree that Javascript is a very useful and versatile language to know. It runs on more devices than any other language, and as others have mentioned it can be considered the assembly language of the web. The major downside is that it's not a great language, too many quirks, odd syntax, no real API, and other problems. One way to get around the language issues is to compile another language into javascript. GWT allow you to write programs in Java and compile them into robust Javascript that will work exactly the same across all browsers. So you get the advantages of Java, with it's more mature language with it's robust development and debug tools, with the run's in browser advantages of Javascript. I find it very useful for my own web-based personal projects.

  129. C++ and Qt4, of course by Anonymous Coward · · Score: 0

    C++ and Qt4, of course

  130. Re:Why I Hate All Programming Languages by khallow · · Score: 2

    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 between a Turing machine and a real computing machine is memory. A Turing machine has access to an infinite amount of memory. That's the way it breaks in the real world.

    But who am I kidding?

    Yourself. You demonstrate a profound ignorance of what the Turing computational model is used for. It's not intended in itself to be a model of parallel computing. There are variations that are, and which work successfully as such.

    A second way that you're deluding yourself is in dismissing Turing machines on the basis of typical crackpot arguments. The Turing machine isn't "worshipped" in the CS community because Turing is a God, but because it is, to our knowledge, computationally equivalent (aside from the infinite memory issue) to any classical physics computing machine that we can construct in the real world. Come up with a better machine first.

  131. What are you going to do ? by Guignol · · Score: 1

    You want to focus on coding for personal reasons. what does that mean ?
    For personal reasons you want as a hobby to make robots with your kid ? have a look at lego mindstorms
    For personal reasons you have to let your previous venture and come back on the scene as a consultant ?
    If so, to do what ?
    Actually, I think there is in fact one language that you would benefit from having a serious look at whichever is your actual goal, and that would be LISP, unless you are in a hurry to be very effective at something specific in which case you would have to be more precise about it
    Cheers and welcome back ;)

  132. Depends what you want to do by sl4shd0rk · · Score: 1

    If you want to automate and mess about inside a *nix system, python and shell are really the best. Perl is nice, but you need much more asbestos when trying to get help with it.

    Want to do things for the 'web'? Javascript, or Ruby on Rails.

    Mobile programming? If you like straight jackets and anal lube go with objective C and iOS. If you want more freedom to innovate, Java/Android.

    If you want to write Desktop games, it's going to be SDL for linux (C, C++) or the equivalent in Windows land (used to be Visual Studio, havne't touched it in years).

    --
    Join the Slashcott! Feb 10 thru Feb 17!
  133. Re:Why I Hate All Programming Languages by Anonymous Coward · · Score: 0

    We accept him, we accept him, as one of us, one of us.

  134. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    And you must be an idiot. If you can revile someone merely for being born in a particular span of time, then there is something wrong with you. After all, if you too had been born during that time, then you'd be painted with that same brush.

  135. C is the way to go by Anonymous Coward · · Score: 0

    Look. Java sucks for many reasons. Python is for beginners, COBOL sucks for many reasons, and you already know C which is a very powerful language, and there have been additions to it.

    C is used to create a lot of powerful software that actually works and doesn't depend on a bunch of other crap installed and running in memory in order to function.

    You had your answer all along.

  136. recruiters are clamoring for java by peter303 · · Score: 1

    Whenever I attended some recruiter-sponsored user group lecture, most of jobs they offer are for java and mobile.

  137. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    I glanced through the aspects of the COSA model. It's not a computational model and hence, doesn't in any way replace a Turing machine. This can be simply illustrated by asking the question, "How much time and units of computing does it take to perform a certain task?" The Turing machine is designed to give a clear answer while that sort of detail is hidden from the programmer in COSA. Hence, you do not have an alternative to the Turing machine.

  138. Re:Why I Hate All Programming Languages by OldHawk777 · · Score: 1

    How would a any CS or Turing model handle a decision dilemma?

    Two illogical or unique conditions/environments requiring a specific 0 or 1 outcome for further evolution, progress, processing ....

    Survival requires a decision, but none of the directions, paths to be taken are true or false. The decision result is 50/50 life/death, still a human makes the best possible decision for the desired outcome life/death. A decision dilemma is more telling, than a sense of humor, for sentience.

    HOLDIT, what the hell am I talking about ... ForGetIt.

    --
    Unaccountable leaders are masters, and unrepresented people are slaves. How do US and EU fare?
  139. Facebook and PHP... by mario_grgic · · Score: 1

    Facebook uses in house compiler that translates their PHP code to highly optimized C++, which is then compiled to native code. I would not call that PHP.

    --
    As the island of our knowledge grows, so does the shore of our ignorance.
  140. Java + GWT by Anonymous Coward · · Score: 0

    android is the future

  141. My language experience by achacha · · Score: 1

    First you should learn the language that seems the most fun to you as that will make you use it more. But here is my brief experience with languages over last 30 years.

    C/C++: low level, complex syntax, compiler based, good for really anything but development can be a bit lengthy. Very mature IDEs and good debugging.
    java: very popular in corporate world, in my opinion best suited for large teams or server side programming, lots of libraries, can be overwhelming. Easy to profile and debug. IDEs are very mature. Android development.
    ASM: only if you are hand optimizing some non-portable code or for fun or for some embedded cases, not very useful otherwise given efficiency of C compilers.
    python: nice scripting language I prefer using for writing tools and deployment scripts, got burned a few times when team grew big. Can be hard to debug, IDEs not mature yet.
    ruby: has a large faithful community.
    PHP: another scripting language that can be hard to scale on large sites, great way to get started in web development. Easier than writing CGIs. Can be a pain to debug. Good IDEs cost money, free IDEs not as mature as they should be. Large community. Good compilers not available (Facebook is not releasing theirs as far as I know), so runs interpreted.
    Javascript: Good to web based UI using jQuery or extJS. nodejs fun for prototyping server side. VMs are getting better at running it, but not as good as a compiled language on the server side.
    perl: good for string processing, can produce extremely difficult code to read and support. Rabid fanbase that has been poached by ruby and python lately.
    C#: similar to java (some people feel it is better some do not), Visual Studio is a nice IDE.
    ObjectiveC: iPhone development.

    This is from my experience, YMMV. It all depends on what you want to do. Pick the right language for the job and you should be fine.

    If I was to recommend languages to you: python for scripting and java for everything else... again, this is my opinion, others have presented compelling cases for their choices.

  142. Lisp by Anonymous Coward · · Score: 0

    Really... no love for Lisp?

  143. If Slashdot is your only hope ....... by Anonymous Coward · · Score: 0

    you're in more trouble than you think!!

  144. It really depends on what you're after by HiThere · · Score: 1

    Python is probably the most general language with fast results. Lots of users and activity.

    Ruby has ended up largely as a language for web page developers. Probably because Python was already around, and Rails was one of the early packages. It can also be used as a general purpose language, but Unicode is more of a bother (than Python3, anyway).

    C it an old stand-by with lots of libraries and highly efficient. It's handling of Unicode is atrocious.

    Javascript is nice in the web area, but doesn't work well with local files.

    D is an excellent language that is also efficient. But it doesn't have many libraries, so you need to get them as foreign functions.

    Smalltalk doesn't seem to be going anywhere, but also it isn't losing steam rapidly. It suffers more than it benefits from being such an all-encompassing environment, and it's not the most efficient. But in some ways it's the most flexible easy language that's full-featured. (If that interests you, check out the Squeak and Croquet dialects.)

    I really can't recommend touching anything that is connected to Oracle. They appear to be trying to copyright APIs, which, if they are successful, means that they will own (literally, not just 0wn) anything you write in one of their tools. Like MySQL, or Java. As a result I would stick to languages that have a user agreement that clearly states that you own what you write, even if you use the libraries or tools that they have made publicly available. And even then I wouldn't touch anything that Oracle has bought an interest in.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  145. Re:Why I Hate All Programming Languages by qbitslayer · · Score: 0

    As a matter of fact, I, too, am a boomer. I am just realistic enough to recognize that my generation shot computing in the foot, big time. Although this is becoming painfully apparent as we enter the age of massive parallelism, a particularly costly consequence of our Turing-worshiping madness has been around from the beginning. It's called the software reliability and productivity crisis.

  146. Just steer clear of Java and Ruby by Anonymous Coward · · Score: 0

    Java is a dead end of misery and endless forests of entangled API- you will spend most of your time trying to figure how to do things instead of doing them. Ruby is one of those 'almost' languages where it's similar to other stuff but just enough different to really mess with your head which makes transferring learned concepts to other languages a challenge. I find Javascript to be hugely expressive in a wild west kind of way and in the way dev environments- every modern browser has a built-in debugger. C# (Mono) is dreamy for forcing you to behave. C++ is still the standard. For a lark you could learn Go, Processing or Lua.

    Most of all- have fun.

  147. Python by bisharkha · · Score: 1

    It's integrated into a lot of software (NodeBox, Blender, lot's of IT-type software). Further, I was at SXSW and got a distinctly Python-vibe among the start-ups (I was expecting nothing but Ruby and node.js and "cloud"). Lot's of resources, huge community. I think there are some concerns about it being bad at parallel/concurrent stuff (not something I can speak about with any authority).

  148. Cobol or RPG II by Anonymous Coward · · Score: 0

    I think either Cobol or RPG II are the future.

  149. What will you do the the code? by Anonymous Coward · · Score: 0

    Building GUIs? Scientific applications? Games? Each language has pros/cons depending on the end usage.

  150. Look at input and output devices by beachdog · · Score: 1

    I am going to restate my view, which has been crystallized by some of the really funny previous posts.

    I have been studying human motor development and it is causing me to see computing as a technical activity that is defined and controlled by the input devices and output devices that are connected to the computer.
    For instance, the input devices for working with visual information are awkward, clumsy, technically limited gadgets. Extracting meaningful information from from any webcam or photosensor or gel plate scan or optical scan of a book page is a lot of ticky tacky programming that is extremely context sensitive.
    Never the less, there are all kinds of interesting developments as a trickle of problems and input analysis challenges are solved.
    In any case, no matter what the input device and no matter what the specific conversion goal... it is all programming.

    So I would say, don't worry about the programming language too much; after you identify an input device you want to work with then the programming language and development operating system will fall into place.

    The best recent improvement of my own personal programming situation is moving to a completely silent Atom based computer with all the memory I can stuff into it and a discipline of sticking with stable well documented free programming languages.

    And finally one more unscientific postscript: Have you noticed that the Internet does not yet support any direct, portable database yet at all? On that level of programming abstraction, the whole Internet is still stuck on the same plane as a 1983 vintage dial up BBS.

  151. What langauge to learn on the budget by lsatenstein · · Score: 1

    I would start by picking up a used dual core PC for a hundred or so dollars and installing a Linux system on it.

    With Linux, you can download compilers, editors, programmers workbenches, etc.

    I started with renewing my C expertise, now I am on to C++ with QT, and will be beginning C#. I do not find Java attracting me to it.

    I bet you could even find COBOL, Pascal, Fortran, and everything else.

    I too am retired (71) and enjoying life at the keyboard. Also my wife loves that I am not in her space.

    If interested, reply to this post and I will follow up.

    --
    Leslie Satenstein Montreal Quebec Canada
  152. The Fundamentals dude, by Pirulo · · Score: 1

    Learn the fundamentals of CS.
    Then pick the language that is right for the task.

  153. Perl by Holliday · · Score: 1

    in title

  154. Haskell by Lawrence_Bird · · Score: 1

    as you said, for personal reasons as there aren't all that many jobs in it yet. But you'll learn functional programming which is pretty neat.

  155. Re:Why I Hate All Programming Languages by PingPongBoy · · Score: 1

    There are no concurrent operations in a Turing machine, and hence, no concurrency problem

    Theory for the Speed of Light

    Concurrent computing on a single core PC is nothing but a sequential machine running fast enough to make you think it is computing in parallel.

    Hypothesis: the laws of the universe are upheld by a sequential computer that is running at amazing speed but not infinite speed. In order for the activity in the universe to stay predictable, the speed of light is bounded.

    I feel better already.

    --
    Know your pads. One time pad: good for cryptography. Two timing pad: where to take your mistress.
  156. Re:Why I Hate All Programming Languages by smithmc · · Score: 1

    It's called COSA and it's inherently parallel and reactive. Current processors would have to be redesigned to handle COSA at the instruction level.

    Also, we're going to need to evolve much bigger hands to be able to do the kind of gigantic hand-waving you seem to do in such a carefree manner...

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  157. Re:Why I Hate All Programming Languages by smithmc · · Score: 1

    I glanced through the aspects of the COSA model. It's not a computational model and hence, doesn't in any way replace a Turing machine. This can be simply illustrated by asking the question, "How much time and units of computing does it take to perform a certain task?" The Turing machine is designed to give a clear answer while that sort of detail is hidden from the programmer in COSA. Hence, you do not have an alternative to the Turing machine.

    Indeed. All he's done is recapitulate LabVIEW.

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  158. I'd go for...... by Sketchly · · Score: 1

    ..either Indian or Chinese.

  159. Jython: Python in Java with Java bindings by Anonymous Coward · · Score: 0

    You might want to look at Jython (Python, but with options of binding to Java classes and datatypes and interface with it), if you want to start half-way. Its a single big jar file. Options of embedding, lets say, the Java JDBC into Jython, and write directly into Oracle or DB2 databases (with just 5 lines of code)... portable (runs on anything with Java: AIX, Windows... but not raspberry Pi (no Jython port for Java ME )). Jython is being used in some of the Tivoli products.

  160. What is your market??? by Anonymous Coward · · Score: 0

    IMHO it all depends on your "target market" for the next 1, 3, 5 or more years.
    If your customers seem to require solutions centered on thin clients (browser powered), JavaScript + HTML5 or Ruby or PHP could be a god starting point. Java plus GWT (from Google) could also be a very interesting starting point)
    If your clients love Android, Java plus the Android environment must be your focus.
    If your clients are in love with the stuff from Cupertino, you must focus on ObjectiveC.
    Maybe your customers want something more in line with a fat client. If they have Windows, C# is a good starting point. If they have Linux, C++ is a logical choice. If they use macs, ObjectiveC is the proper language.
    Although VisualStudio for Windows and ObjectiveC for IOS cost a lot, there are free excellent software development environments for the majority of the mentioned platforms/environments (Android, C++, GWT, Java, PHP, Ruby).

  161. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    It's called the software reliability and productivity crisis.

    Nonsense. Turing machines are merely a computational model (which incidentally is more than equivalent to any real world, classical computer, as opposed to quantum computers, which has computational advantages). The software reliability and productivity "crisis" is based on an economic dynamic (which has nothing to do with the theory of computation) which is a case of incentives for software providers to provide less reliability and functionality to users of a lot of software.

    I'm a bit abrasive here, but you are confusing an economics problem to a fundamental computer science problem. I don't think it is. I don't the above "crisis" will change until we have far more capable. not necessarily human programmers out there. Your COSA idea doesn't create that.

  162. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    Hypothesis: the laws of the universe are upheld by a sequential computer that is running at amazing speed but not infinite speed. In order for the activity in the universe to stay predictable, the speed of light is bounded.

    An amazingly slow machine works just as well.

  163. dude, just do what we all used to do by Anonymous Coward · · Score: 0

    get some working code and start hacking. better yet, get a hobby

  164. Re:Why I Hate All Programming Languages by TheInternetGuy · · Score: 1

    I am not a baby boomer, not even in my own country which did not synchronize its baby boom with USA.

    But I am old enough, to realize that younger generation always believe that they can do things better, which is perfectly fine and the way it should be I think.
    And sometimes they will improve on the wheel, other times they just end up with a square with rounded corners still believing it must be an improvement as it wasn't invented by neck beards.

    I guess what I am saying is: Respect the giant on whose shoulders you are standing, but if it does not get you where you want to go, then by all means climb down and start from scratch. But then do so on your own merits, no need to discredit the tech/ideas that you are obsoleting.

    --
    If my comment didn't sound as good in your head as it did in mine, then I guess we all know who's to blame
  165. Re:Why I Hate All Programming Languages by dhasenan · · Score: 1

    I agree. My computer is a linear bounded automaton.

  166. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    I also get the impression that we have the choice of doing nothing. Then we wouldn't need to redesign our CPUs or evolve bigger hands.

  167. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    Also, I don't think you got my point in the grandparent. The Turing machine is sequential and hence, doesn't have concurrency or timing issues. Operations also come in a particular order. There is no uncertainty. It is wholly deterministic. If you know the code and know the input, then you know exactly how the machine will operate at every step.

    And since it is computationally equivalent (or superior) to any classical machine with finite parallelism, that's good enough. It's a tool to study computational complexity, not a model for how modern processors work. Those incidentally work in very different ways from a Turing machine.

  168. Re:Why I Hate All Programming Languages by khallow · · Score: 1

    How would a any CS or Turing model handle a decision dilemma?

    It'd make a decision. Dilemma resolved. If you need randomness in the decision (say to counter an adversary's strategy), then there are stochastic versions of the Turing model that suffice.

  169. FORTH is the choice for Jedi by Anonymous Coward · · Score: 0

    FORTH is the choice for all Jedi.

  170. Linear B by RockDoctor · · Score: 1

    Learning the syntax and basics of that will perhaps take you a bit longer than a weekend.

    --
    Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
  171. Pascal by digimaus · · Score: 1

    I'm surprised with all the flurry of languages mentioned that no one mentioned Pascal. It's still alive and well. I've been using Pascal since 1987 (UCSD Pascal back then) but later switched over to Turbo Pascal. I now use Free Pascal which is open-source, cross-platform, and you do have the option of terminal mode or GUI programs if you use Lazarus with it. I also use Virtual Pascal (Win32 and OS/2). Both Free and Virtual Pascal can do OO programming. Let's not forget GNU Pascal also. While Pascal is not the "flavor du jour" of programming languages, it's served me well for all of these years. There's not too much I can't do with it -- granted, I don't write device drivers or such -- but it's a good structured language that might be of use to the OP for "personal use".

    There's also the "side effect" of my learning how to read C from using Pascal. While I'm no C programmer, I can look at C or C++ source code and have a good general idea of what's going on.

    Anyhow, just thought I'd toss those thoughts into the ring.

  172. HTML5 by allenr2 · · Score: 1

    Modern applications are personalized, secure and available anywhere on any device at any time. Look into developing a REST based web service using Java (my lang of choice) or your favorite flavor of C. Next put an HTML5 face on it using Javascript/AJAX to call your REST API. Check out backbone Javascript framework and Apache Cordova/PhoneGap. So I can't recommend just 1 language, but if you go with HTML5/JS/Java you can build anything you want on any device and deploy it however you choose. For an Eclipse dist go with SpringSource and check out what Craig Walls is doing...

  173. Re:Why I Hate All Programming Languages by OldHawk777 · · Score: 1

    Thanks, I was wondering how it would be handled. Dilemma resolved. No weight to the repercussion/outcome of death or serious harm.

    I would make a decision quickly as well, but the repercussion/outcome .... A human, I suspect will be less predictable than any artificial intelligence, it could be close. Also, I suspect the AI outcome would be better on a per-test, but the AI species maybe would go extinct prior to the other dinosaurs/humans.

    Resolving dilemmas is easy, obtaining a preferred outcome with the resolution is a gamble, I think?

    --
    Unaccountable leaders are masters, and unrepresented people are slaves. How do US and EU fare?