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

349 of 530 comments (clear)

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

    n/t

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

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

    3. 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.
    4. 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....
    5. 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.

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

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

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

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

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

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

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

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

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

    16. 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
    17. 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 =)

    18. 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 :)

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

    20. 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!
    21. 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
    22. 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.

    23. 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/
    24. 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
    25. Re:Python by davester666 · · Score: 1

      Engrish!

      --
      Sleep your way to a whiter smile...date a dentist!
    26. 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

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

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

    29. 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).
    30. 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).
    31. 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?
    32. 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").

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

    34. 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.
    35. 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.
    36. 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
    37. 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.

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

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

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

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

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

    42. 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).
    43. 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.
    44. 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.

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

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

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

    49. 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
    50. 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
    51. Re:Python by badkarmadayaccount · · Score: 1
      --
      I know tobacco is bad for you, so I smoke weed with crack.
    52. 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.

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

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

    56. 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 Amouth · · Score: 1
      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
    8. 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.

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

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

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

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

  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 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
    2. 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.
    3. 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.
    4. Re:Your answer by Genda · · Score: 1

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

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

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

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

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

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

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

  10. 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 JoeMerchant · · Score: 1

      Free, cross platform, and awesome:

      http://qt-project.org/

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

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

  12. 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.
  13. 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 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.
    3. 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
    4. 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.

    5. 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.
    6. 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."
    7. 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."
    8. 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.
    9. 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/

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

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

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

    13. 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!
    14. 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.

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

    16. 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?
    17. 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.
    18. 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.
    19. 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.
    20. 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.
    21. 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.
    22. 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!
    23. 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.

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

    2. 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
    3. Re:My outdated list by Dun+Kick+The+Noob · · Score: 1

      Sad but true

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

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

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

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

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

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

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

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

    9. 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.
    10. 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.
    11. 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.

    12. 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.
    13. 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.
    14. 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.

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

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

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

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

    19. 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. :-)

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

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

    22. 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)
    23. 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.

    24. 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.
    25. 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.
    26. 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.
    27. 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.

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

    29. 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.
    30. 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?
    31. 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.

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

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

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

    37. 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!
    38. 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.

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

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

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

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

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

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

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

    47. 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.
    48. 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.
    49. 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.
    50. 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.
  20. 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.

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

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

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

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

    5. 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
  24. 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 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!

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

  25. 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
  26. Re:C! by rubycodez · · Score: 1

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

  27. '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
  28. 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 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.

  29. 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
  30. 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.
  31. 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.

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

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

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

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

  37. 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.
  38. 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.
  39. 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).

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

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

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

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

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

  47. 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 */
  48. 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 marcovje · · Score: 1

      WHY would anyone program in anything else? Serious question.

    2. Re:Or Object Pascal by jimbbb · · Score: 1

      Another vote for Lazuras (clone of Delphi): http://lazarus.freepascal.org/. Free IDE including a debugger.

    3. 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."
    4. 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.
    5. 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."
    6. 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.
    7. 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.

    8. Re:Or Object Pascal by phantomfive · · Score: 1

      That second sentence is fascinating.

      --
      "First they came for the slanderers and i said nothing."
  49. 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.

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

  51. TIOBE Index by qw(name) · · Score: 1
  52. 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.
  53. 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...

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

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

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

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

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

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

  61. C, C++, Python, Java, SQL, Ruby by efalk · · Score: 1

    In that order.

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

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

  64. 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.
  65. 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!
  66. 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.
  67. 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.

  68. 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."
  69. Chinese by Anonymous Coward · · Score: 1

    Chinese

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

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

  72. 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!
  73. 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.

  74. How about a more "mature" language? by solidraven · · Score: 1

    Fortran, anyone? Or is this the wrong crowd?

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

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

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

  78. 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!
  79. 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

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

  81. 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."
  82. 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."
  83. 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."
  84. 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."
  85. 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."
  86. 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
  87. 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.

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

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

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

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

  92. +1 for Clojure, book link by Fubari · · Score: 1
  93. 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.
  94. 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?
  95. 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.

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

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

  98. 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 ;)

  99. 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!
  100. 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.

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

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

  103. 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?
  104. 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.
  105. 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.

  106. 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.
  107. 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).

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

  109. 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
  110. The Fundamentals dude, by Pirulo · · Score: 1

    Learn the fundamentals of CS.
    Then pick the language that is right for the task.

  111. Perl by Holliday · · Score: 1

    in title

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

  113. 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.
  114. 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!
  115. 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!
  116. I'd go for...... by Sketchly · · Score: 1

    ..either Indian or Chinese.

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

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

  119. 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
  120. Re:Why I Hate All Programming Languages by dhasenan · · Score: 1

    I agree. My computer is a linear bounded automaton.

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

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

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

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

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

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