Slashdot Mirror


Power of Modern Programming Languages is That They Are Expressive, Readable, Concise, Precise, and Executable (scientificamerican.com)

An anonymous reader shares a Scientific American article: Programming has changed. In first generation languages like FORTRAN and C, the burden was on programmers to translate high-level concepts into code. With modern programming languages -- I'll use Python as an example -- we use functions, objects, modules, and libraries to extend the language, and that doesn't just make programs better, it changes what programming is. Programming used to be about translation: expressing ideas in natural language, working with them in math notation, then writing flowcharts and pseudocode, and finally writing a program. Translation was necessary because each language offers different capabilities. Natural language is expressive and readable, pseudocode is more precise, math notation is concise, and code is executable. But the price of translation is that we are limited to the subset of ideas we can express effectively in each language. Some ideas that are easy to express computationally are awkward to write in math notation, and the symbolic manipulations we do in math are impossible in most programming languages. The power of modern programming languages is that they are expressive, readable, concise, precise, and executable. That means we can eliminate middleman languages and use one language to explore, learn, teach, and think.

268 comments

  1. alexa turn off lamp by bugs2squash · · Score: 1

    I swear the computers are training us more than we're training them though. Natural language is changing, even my kids change the way the talk when they are talking to the amazon dot.

    --
    Nullius in verba
    1. Re: alexa turn off lamp by K.+S.+Kyosuke · · Score: 1

      Well, it's always been the easier option since the very invention of punch cards.

      --
      Ezekiel 23:20
    2. Re:alexa turn off lamp by Sir+Holo · · Score: 1

      I swear the computers are training us more than we're training them though. Natural language is changing, even my kids change the way the talk when they are talking to the amazon dot.

      That's because they've figured out that the voice recognition is very limited in its capability.

      If everyone starts speaking "flat" English to these things, the manufacturers will have little motivation to ever improve the voice recognition.

      So, you are right.

    3. Re:alexa turn off lamp by Xest · · Score: 1

      I don't know what he's doing wrong, but it's not that bad. We have a lamp in the living room called "living room lamp" in Alexa.

      She responds perfectly well to "Alexa, turn off the living room lamp". I don't know why he thinks you have to speak dumbed down English to it, you really don't.

      The only time I find it struggles is 1) when there's loud background noise - i.e. a film or video game with the volume turned up, and 2) sometimes gets confused with Amazon music commands - if you don't get the words in the exact right order she fails, so for example if there's a public song, album or station with a name the same as one of my playlists you have to be very explicit in ordering - "Alexa, play the playlist x in my music", if I just say "Alexa, play my x playlist" she gets confused and plays the song/album/public station - it's annoying having to stipulate both that I want a playlist, and that it must come from my music library when the latter should be the default place to search and the former could trivially be determined from that search with explicitness only required when the clash occurs within my library. If such a thing doesn't exist in the library THEN go to to the broader archive to search for it.

  2. What? by Anonymous Coward · · Score: 5, Insightful

    With modern programming languages -- I'll use Python as an example -- we use functions, objects, modules, and libraries

    Who writes this shit? Confirming that C uses neither functions nor objects nor modules nor libraries

    1. Re:What? by Anonymous Coward · · Score: 0

      I was shaking my head too. Maybe a manifesto for those who don't care to use real programming languages? Now go - write a devices driver or Linux kernel in Python. But please - don't compare Fortran and C.

    2. Re:What? by __aaclcg7560 · · Score: 1

      Now go - write a devices driver or Linux kernel in Python.

      I wonder if that can be done. Write the driver in Python and use Cython to convert Python to C.

      I once wrote a Python script to roll a pair of dice 1M times that took 123 seconds. Used Cython to convert the script to C that ran in a second.

    3. Re:What? by Hognoxious · · Score: 1

      Clearly there's been a paradigm leap or a quantum shift and you missed it because you're a square old daddy-o. Something like that.

      I haven't read it in ages but I thought Scientific American was supposed to be OK. This is the kind of plop you expect from Betawireverge.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:What? by AchilleTalon · · Score: 4, Insightful

      My first, second and third reaction too. And what you say for C is also true for Fortran. That guy doesn't know what he is talking about. Neither Fortran, nor C are first generation languages as he states it anyway. This article is total crap. Shame on you Scientific American for publishing that shit.

      --
      Achille Talon
      Hop!
    5. Re:What? by Megol · · Score: 1

      So the definition of a real language is the ability to program device drivers? Are you a moron or just playing one on /.?

    6. Re:What? by Hognoxious · · Score: 1

      I doubt it would work with memory mapped I/O. You need to set/read data at a specific address. The high level language is going to shove stuff wherever it likes.

      If modern systems don't use memory mapped I/O then didn't shoot me. It was 30 years ago that i last meddled with a device driver (in 8086 assembly - beurk!).

      Having said that you can do anything in a language like Sinclair Basic because it has PEEK and POKE, though some might say that's cheating.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    7. Re:What? by Anonymous Coward · · Score: 0

      About ten years ago, SciAm became less about science and more about swaying public policy. It was almost as if Dr. Strangelove had suddenly become a real person.

      At some point I'm going to head over to AAAS and subscribe to Science, since it appears that is all about science.

    8. Re:What? by Anonymous Coward · · Score: 0

      Um, what? Seeing how FORTRAN was the 1st high-level language, it most definitely is first generation.

    9. Re:What? by Anonymous Coward · · Score: 0

      With modern programming languages -- I'll use Python as an example -- we use functions, objects, modules, and libraries

      Who writes this shit? Confirming that C uses neither functions nor objects nor modules nor libraries

      C is not a modern language.

    10. Re: What? by K.+S.+Kyosuke · · Score: 1

      Well, C only supports the first thing. Modula-2 adds modules, but not objects, for example.

      --
      Ezekiel 23:20
    11. Re: What? by K.+S.+Kyosuke · · Score: 1

      You need to set/read data at a specific address.

      Many higher-level languages such as Oberon supported this with a set of low-level "loophole" utility functions. That's how the Oberon system was written without a single line of assembly language anyway.

      --
      Ezekiel 23:20
    12. Re:What? by vtcodger · · Score: 1

      The power of modern programming languages is that they are expressive, readable, concise, precise, and executable

      Maybe SciAm has decided to compete with the Onion. Of course the sentence above isn't really Onion class, but it did make me chuckle.

      Anyone have an example of a non-executable programming language and a situation where you might want to use it?

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    13. Re:What? by mccalli · · Score: 1

      1st generation high level makes it 3rd generation language. C is often called 2nd, even though it's newer, because of its mix of low level and high level constructs. You don't hear so much about 4GLs anymore, but stuff like Powerbuilder etc. - the powerful, expressive and obvious way to program a computer that eliminates the need to learn programming syntax and cuts out the middle man.

      Hmm.

    14. Re:What? by Anonymous Coward · · Score: 0

      Let me guess, you're 20 and have no concept of real history...

    15. Re:What? by Nunya666 · · Score: 1

      With modern programming languages -- I'll use Python as an example -- we use functions, objects, modules, and libraries

      Who writes this shit?

      Obviously, not a programmer.

    16. Re:What? by Anonymous Coward · · Score: 0

      My jaw literally dropped when I read the summary. I work with C++11 and python everyday as we use python as the scripting interface to our distributed C++ application. Python is a terrible language in so many ways. Because it is dynamically typed you cannot define an interface. People judge a programming language by the wrong things. A good programming language is not one that allows a single developer to be most productive. A good programming language is one that allows many developers to work together productively. The most important thing is to be able to define interfaces clearly, which strong static typing and OO does. Your classes enforce an invariant and your interfaces require your classes. The developer calling an interface knows how to pass it data that satisfies the input invariants of the function simply by reading the type declarations of the arguments. That doesn't mean everyone defines good interfaces in C++, but at least the language allows them to. Validating inputs at runtime is bad because it becomes a testing problem instead of a compilation problem to know you used the interface correctly. In a complex application you can never solve the testing problem, but compilation is easy to satisfy. Python is a terrible language.

    17. Re:What? by PCM2 · · Score: 5, Informative

      Everybody simmer down. TL;DR:

      1. TFA is not an article in Scientific American magazine, it is a "guest blog." Quote: "The views expressed are those of the author(s) and are not necessarily those of Scientific American."

      2. The author teaches computer science at a private undergraduate college. He has written a series of books, all of which use Python examples to explain concepts.

      3. When he talks about "modern languages," he's clearly referring to languages that look and feel a lot like Python. Mainly Python.

      4. When he talks about "eliminating intermediary languages," he means things like pseudocode. He believes (and gives an example to illustrate) that Python is now expressive enough that anything you might previously have expressed in pseudocode you can now express in Python in one go.

      5. From there, he makes the leap that you no longer need to teach computer science from a "math-first" approach; you can instead use a "code-first" approach, where you teach students to "think" in Python.

      6. Hand-waving about the future from there.

      --
      Breakfast served all day!
    18. Re:What? by DickBreath · · Score: 1

      When your only hammer is C all problems begin to look like a thumb.

      (or a device driver)

      --

      I'll see your senator, and I'll raise you two judges.
    19. Re:What? by RabidReindeer · · Score: 1

      There was something called "Named Common" storage in Fortran that is quite capable of being assigned to absolute memory locations. If you don't mind the fact that the only structured data concept in Fortran was array data. Peek and Poke are loopholes to I/O ports, but perfectly functional ones. Volatile memory is harder to manage without language extensions, especially when compilers start seriously optimizing code.

      Prime Computer actually optimized their machine instruction set to run Fortran optimally - there were even basic instructions for Fortran's unique 3-way branch construct.

      And I'm fairly certain that you could have written low-level OS code in the COBOL that some of Honeywell's minicomputers implemented. Although the thought of an OS written in COBOL is enough to give me nightmares.

    20. Re:What? by sjames · · Score: 1

      Memory mapped I/O is still a thing.

      However, there is the ctype module for python that will let it actually work with that, though it might be a bit clunky compared to just doing it in C.

    21. Re:What? by PCM2 · · Score: 1

      Oh, and adding to my own comment: No, he never once uses terms like "functional programming," "Lisp," "Scheme," etc.

      --
      Breakfast served all day!
    22. Re:What? by Anonymous Coward · · Score: 1

      Written by a Pythonista you think?

      How Python sucks compared to most other languages:
      1) Performance 1000x slower than compiled, 30% slower than other interpreted languages like Perl
      2) Deprecates and changes language features at whim, making portability a bitch. (range/xrange, etc)
      3) Decorators making it unnecessarily hard to even locate the running code
      4) Whitespace depth making refactoring especially error prone (don't just move lines of code, make sure you re-indent every line correctly)
            a) no block termination token other than the whitespace
      5) Untyped variables, making what should be compiler errors into runtime errors that are "discovered" in prodution
      6) Weak coverage and unit testing tools (compare to the reports you can get out of Perl's Devel::Cover)

      Note that Python is written in C, It takes a really special kind of Pythonista to claim C is unnecessary. Probably an Agile DevOps SRE.

    23. Re:What? by HiThere · · Score: 1

      There were macro assemblers before Fortran, and assemblers before macro assemblers, and octal op codes before assemblers, and panel switched before octal op codes, and wiring panels before panel switches. I suppose I could keep going back until I reached gear wheels, but anything prior to Babbage/Ada Lovelace doesn't really count as the same subject.

      Now just where you start calling one of those things a language is something we could argue about, but that's one of those artificially chosen boundaries...where you need a boundary, but you're looking so close that the exact position of the boundary isn't obvious. It's clearly after gear wheels, and clearly before compilers. Any where in there is an arbitrary choice. But where you chose determines what "languages" are first generation. And this is a simplified summary, because the earliest Fortran wasn't that different from an advanced macro assembler.

      FWIW, I once read an article that claimed that most of C could be implemented as M6800 assembler macros, and gave a good demonstration of a lot of the parts. And certainly much of, and perhaps all of, Lifeboat-C could be directly mapped to clusters of I8088 assembler instructions.. (It wasn't a full K&R C, but it was pretty close.) So the boundaries between assemblers and compilers aren't solid, but nearly fractal.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    24. Re: What? by K.+S.+Kyosuke · · Score: 1

      Python *does* have OO and strong typing, but it doesn't have manifest typing. Is the latter what you want? (Interestingly, this didn't prevent larger Smalltalk projects form existing.)

      --
      Ezekiel 23:20
    25. Re:What? by Anonymous Coward · · Score: 0

      And, functions and "routines" came early early early in Fortran. SA has gone way downhill over the years. These articles are typically written by "journalists" who majored in "journalism," and have done little other than journalling. Once on a while, they have a degree in psychology.

    26. Re: What? by K.+S.+Kyosuke · · Score: 1

      BTW, the vast majority of manifestly-typed languages is piss-poor at expressing invariants with types. How would you, e.g., describe such invariants as "the first parameter is an ascending sequence of even integers"? The best you can express most of the time is "a sequence of integers".

      --
      Ezekiel 23:20
    27. Re:What? by Anonymous Coward · · Score: 0

      C is not a modern language.

      I have news for you... neither is Python.

      Of course, both C and Python are considered mainstream languages (even though they are both somewhat niche), but that doesn't mean they are modern.

      I also find it amusing that the article author makes a big deal about these features

      expressive, readable, concise, precise, and executable

      Personally I don't find Python to be any of these (except the executable part)

      I also don't find the given list of features to be all that modern or either.
      (more like stepping back in time two decades) and far more subjective than objective.

    28. Re: What? by K.+S.+Kyosuke · · Score: 1

      PyPy isn't 1000x times as slow as other languages. Hell, neither is CPython, but still...

      --
      Ezekiel 23:20
    29. Re:What? by Anubis+IV · · Score: 5, Informative

      Neither Fortran, nor C are first generation languages

      In fact, every language he mentions in the article is a textbook example of a third-gen language (3GL). I didn't see any mention of even a single first generation language.

      I'll give him the benefit of the doubt and assume he was trying to keep his writing approachable, but "first generation languages" has had an established meaning in this field for the last several decades, so misusing the terminology just makes it look like he has no idea what he's talking about. A far better way to phrase it would have been "In early high-level languages like FORTRAN and C [...]", since that would have been accurate while also being descriptive enough for most lay people to understand well enough.

      For anyone who doesn't know about them, programming language generations refer to the level of abstraction, NOT to when they were introduced:

      1. 1GL = Machine code. Flipping bits to issue machine-specific instructions
      2. 2GL = Assembly. Using human-readable text to issue basically the same instructions
      3. 3GL = Most high-level programming languages. Abstracting away machine instructions (e.g. using loops and function calls to abstract away jump instructions) to the point that it's both easier to use and mostly machine-independent (e.g. Fortran, COBOL, C, C++, C#, Java, Python, Ruby, Go, Rust, Swift, etc.)
      4. 4GL = Languages that, among other things, abstract generating reports, generating UIs, and/or handling collections of information (e.g. SQL, some 3GLs with libraries, etc.)
      5. 5GL = Languages where you describe the problem and let the computer come up with the algorithm (e.g. Prolog)

      All of which is to say, starting off an article with a glaring misuse of established terminology is a great way to get anyone with a passing awareness of the topic to immediately dismiss anything he has to say. As a professor, I'd hope he'd have a better awareness about the importance of using those terms correctly. And as the publisher, I'd hope that Scientific American would have an editor who would recognize when they were out of their depth and would need to call in a domain expert to proof the text.

    30. Re:What? by mikael · · Score: 1

      SQL was called a 4GL by our database lecturer. The fact that you could write some scripts to process a relational database on the network was a revolution at the time. Spreadsheet scripting came close along with any kind of scripting functionality with an application. No compiling or command prompt commands, just a safe little command line window.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    31. Re:What? by Darinbob · · Score: 1

      Also bizarre to call Python a modern language. It's been around a long time and is fundamentally not that different from other scripting languages that showed up around that time.

      If you want expressive, readable, concise, precise, and executable, then use Scheme! Sure, you have to actually *learn* the language first, but that must be true for every language.

    32. Re:What? by Aighearach · · Score: 1

      If you simmer down a word salad, I'm not sure it is really any improvement.

      I can tell you from my Perl experience that just because the language is expressive doesn't mean that no translation is required to get from abstract business logic to implementation. I've used Python and there it gives no advantage in this area.

      My advice to the blog author it to stick to being a blog author, because in the real world the implementations are not all trivial.

    33. Re:What? by mikael · · Score: 1

      I worked with Prolog. You specify the problem as a series of associations and constraints. Then the system would run a brute force scan through all the possible combinations and come up with the possible solutions. Worked great for generating university timetables and solving any combinatoric problem.

      Maybe Matlab could be 5GL, since many companies seem to use that to generate algorithms.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    34. Re:What? by Darinbob · · Score: 1

      No math-first means he's at another of those wannabe colleges that trade schools in disguise. Removing the science from Computer Science.

    35. Re:What? by slickwillie · · Score: 1

      The article was written by a college compsci professor. Probably never did any real programming.

    36. Re:What? by religionofpeas · · Score: 1

      No, a real language should allow you to program anything, including device drivers.

    37. Re:What? by Hognoxious · · Score: 1

      Perl is about as expressive as Helen Keller.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    38. Re:What? by Aighearach · · Score: 1

      You can still define an interface using dynamically-typed languages.

      Having interface police built into the language may or may not be good in one situation or another, but it is not a requirement of being able to define an interface.

      Words matter, even in logically fuzzy field like programming. ;)

    39. Re:What? by Anubis+IV · · Score: 1

      The Chrysler Imperial was the first car to feature all-wheel anti-lock brakes, but we wouldn't call it a first generation car, since it was clearly preceded by others. The iPhone 5 was the first to feature a Retina display, but no one's suggesting it's a first-gen iPhone, since the name alone tells you that it's part of a line that goes back before it.

      So, why, then, do you refer to FORTRAN as a first generation language, just because it was the first to feature a high-level of abstraction? The fact that it's a "high-level" language should immediately suggest to you that it was preceded by "low-level" languages, as it was. The fact that it's a high-level language sets it apart from previous generations, but it doesn't make it the first generation. Rather, it's the first, third-generation language.

    40. Re: What? by Aighearach · · Score: 1

      This is funny stuff, all around. When I'm using Ruby, I solve this problem by not asking that types do any validation. Instead, each object has to be able to validate all its input fields, and generally will be expected to have staged data input where you set the values, validate them, and then save the object using an accessor that raises an error (or generates a log entry) without saving if the validation fails. This works really well even for things like, "the first parameter is an ascending sequence of even integers" or "the second field is an email address with validation logic loaded from an external db so the PHB can fiddle it twice weekly."

      But most of the time I'm using C on bare metal. And what I get is an 8 bit data type that really is only allowed to have 3 of the bits set. If I'm lucky, I get a second 8 bit data type with a bit mask that I could use to manually either validate or cast the first value. But while the compiler is happy to be fairly strict about the 8bits part, there is no introspection at all in the system that will tell somebody the data is 3 bits.

      Dynamic languages have much better type checking in practice, depending on your practices.

    41. Re:What? by Anubis+IV · · Score: 1

      Fact-checking myself: it was the iPhone 4, apparently, that introduced the Retina display. Mea culpa.

    42. Re:What? by networkBoy · · Score: 1

      Well, to be fair you can, even with python, or perl.
      write script that accepts textfile of op codes, convert opcodes to asm using pack();
      write to file in binmode.
      Simple! (stupid for sure, but simple).

      I guess that's really a compiler more than direct...
      make your compiler able to convert python to asm. there. stupider and still simple.

      TL;DR of above:
      I *dislike* Python (I'm a Perl guy, I want my curlies and semis damnit...). Sure I could contrive to write a driver in a scripting language, but why? If I'm mucking about with IOCTLS I'm in C/C++. If I'm scanning my C driver code for issues, LOC counts, unsafe operators, etc. at a level deeper than the compiler then I'm using Perl or some other tool.

      Right language for the job and all that.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    43. Re:What? by slickwillie · · Score: 1

      I know a guy who wrote most of a mag tape driver in COBOL with a few calls to assembly language in th 1970s. I think it was on an HP minicomputer.

    44. Re:What? by networkBoy · · Score: 1

      With modern programming languages -- I'll use Python as an example -- we use functions, objects, modules, and libraries

      Who writes this shit?

      Obviously, not a programmer.

      Those who can, do.
      Those who can't ...

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    45. Re:What? by Cro+Magnon · · Score: 1

      It would be interesting seeing a device driver in COBOL or Fortran.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    46. Re:What? by Chris+Mattern · · Score: 1

      No. The weasel word there is "high-level". "High-level" by definition is at least 3rd generation, because that's when the concept of a high-level languages was developed. 1st generation was machine code, and 2nd generation was assembler. FORTRAN was the first of the 3rd generation languages.

    47. Re: What? by Anonymous Coward · · Score: 0

      My first thought when I read the post was WTF. Glad to see I'm not the only one.

    48. Re:What? by epine · · Score: 1

      I once read an article that claimed that most of C could be implemented as M6800 assembler macros, and gave a good demonstration of a lot of the parts.

      Absolutely true, although the dead giveaway is your use of the phrase could be, in much the same way one could step out one's front door buck naked.

      What you're proposing is effectively an inefficient way to program in Forth. Wake me up when your assembler macros implement live variable analysis and optimal register spilling.

      Forth was limited in this domain for a long time, too.

      The M6800 has six registers: A, B, flags (8-bit), IX, SP, PC (16-bit). One's basic code-generation heuristic was "spill always" (actual hands-on experience). The M6800 also had fairly short and deterministic instruction execution times, and hardly any instruction decode pipelining, both immense factors in efficient code generation for the last two decades. Don't even get me started on pointer aliasing or out-of-order loads and stores.

      Once upon a time, there was this weird illusion that a CPU cycle and an external memory operation took roughly the same amount of time ... we've been piling on the smoke and mirrors to maintain this happy illusion ever since.

      The original illusion was due to novel-technology fabrication constraints, not physics.

      Lickety-split, physics won.

      C++ templates abstract the translation problem, if that's what you want (it'll take you a long way, if you bend your nose to the grindstone).

      Other languages are far superior in abstracting away the actual machine. I don't give a shit about those languages. Least appealing abstraction ever. (Next stop: abstract away human incompetence; frequently has that bus departed, rarely has that bus arrived.)

      Still more recent languages manage to abstract the design space or the problem space. I could find some serious love for those languages. Come on down Elixir and Julia.

    49. Re:What? by Darinbob · · Score: 1

      The article author is trying to sell his books about Python.

    50. Re:What? by Anonymous Coward · · Score: 0

      I agree, the author of the article does not seem to much about programming languages or their history.

    51. Re: What? by Anonymous Coward · · Score: 0

      6GL - Javascript ;)

    52. Re: What? by Anubis+IV · · Score: 1

      I had actually typed up a joking paragraph about how if there was a 6GL, it'd mean that we were either living in the world of WALL-E or The Terminator, that is, because the machine would likely be choosing its own problems to solve, either we'd have nothing to do or we'd be struggling to remain relevant.

    53. Re:What? by Cederic · · Score: 1

      Shrug. I can use python for that.

      I'll use it to add custom extensions to python (along with a python+extensions compiler) that let me interact directly with the hardware and memory.

      Wait, is that cheating? No more than letting someone else define C and pretending it's the answer to fucking everything. 870million buffer overflow security vulnerabilities want a discussion on that.

    54. Re: What? by K.+S.+Kyosuke · · Score: 1

      Checking is one thing, but I've recently been interested in dispatching. As in, you have several procedures or methods applicable for a certain operation or a piece of data, and they either 1) should return the same result, but some of them can do it faster for constrained inputs (e.g., special types of matrices or polynomials), in which case, you want evaluate the one that seems to be the "most applicable" (in case of a sorted sequence, for example, a search operation can switch from linear to binary), or, 2) should evaluate all the methods that apply and return all the alternative results. 1) is kind of similar to "normal" method dispatch in Ruby or St80 but can be much more complex than just checking a pointer to a class since the constraint conditions can be complex. 2) is then similar to processing a non-deterministic program on a deterministic computer, and one has to check all the alternatives, preferably as efficiently as possible. Neither is strictly equivalent to "just checking types" since both are mechanisms for composing a large program from loosely connected parts resembling specialized agents that contribute individual pieces of specialist knowledge about a complicated problem (say, a symbolic integrator).

      --
      Ezekiel 23:20
    55. Re:What? by angel'o'sphere · · Score: 1

      Strictly speaking C has neither Objects nor Modules ... just saying.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    56. Re:What? by angel'o'sphere · · Score: 1

      Actually most Prolog systems are 'smarter' than to use 'brute force'.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    57. Re:What? by angel'o'sphere · · Score: 1

      C was designed to be a portable assembler.
      And obviously every compiler can 'map' high level code to assembly.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    58. Re: What? by Anonymous Coward · · Score: 0

      Many have Tried to use Python with Numpy etc, to replace Fortran. In the end everyone of them switched back to pure fortran because Python does not work.

    59. Re: What? by Entrope · · Score: 1

      I've seen code from people who apparently believe in "code-first" rather than "analysis-first". It ain't pretty.

    60. Re:What? by Anonymous Coward · · Score: 0

      If MATLAB is 5G, then language design has gone backwards significantly.

      Sure, it's great for what it was originally designed for - matrix manipulations. As a general purpose language, it is utter shit.

    61. Re:What? by Anonymous Coward · · Score: 0

      That *would* be fun.

      I wish I had the know-how and time to try doing it with Lisp. Maybe some sort of custom small Scheme? Possibly implemented as some sort of domain-specific-language or special transpiler for a bigger Lisp, like CL.

    62. Re:What? by Pseudonym · · Score: 1

      3. When he talks about "modern languages," he's clearly referring to languages that look and feel a lot like Python. Mainly Python.

      Right, so by "modern", he's talking about the state of the art of interpreted languages as it was a quarter of a century ago. As in, before Haskell had constructor classes.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    63. Re:What? by Pseudonym · · Score: 1

      No, a real language should allow you to program anything, including device drivers.

      Many languages allow you to program device drivers. Unfortunately, not all operating systems are quite as agreeable.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    64. Re:What? by Pseudonym · · Score: 1

      FORTRAN was the first of the 3rd generation languages.

      It's a debatable point. A-0 is often credited as being the first, although FORTRAN was arguably the first 3GL to have all the pieces in place.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    65. Re:What? by Megol · · Score: 1

      Then you have the wrong idea what a programming language is or what programming is.

      BASIC is a real programming language and have been used for many real, important tasks. That's just one example.

    66. Re: What? by Anonymous Coward · · Score: 0

      Did you mean to say "Lithp"?

      Sorry. Couldn't help myself.

    67. Re:What? by david_thornley · · Score: 1

      The 4GLs that I saw were all specialized to one domain. It's not a bad idea, but they weren't going to eliminate the need for 3GLs. For a while, the Japanese were pushing Prolog as a 5GL.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    68. Re:What? by Anonymous Coward · · Score: 0

      Im not a programmer but did back in the day self teach myself from those lousy Trash 80 manuals BASIC and that experience told me the original poster was high or plain stupid. I liked your hierarchy of language gens but where does BASIC fall under your system? And it really boggles the mind Scientific American would publish his misinformation as it used to be a high caliber science journal.

  3. Here's another by Anonymous Coward · · Score: 1

    Translation was necessary because each language offers different capabilities.

    Good thing all languages now offer the same capabilities, so translation is no longer necessary.

  4. Rust is a counter example to these claims. by Anonymous Coward · · Score: 0

    So how does this apply to a language like Rust? Rust is one of the most significant up-and-coming modern languages. It is getting a lot of attention, and it's being used for some interesting projects. Moz://a, for example, is using Rust to build Servo, a next-generation web browser engine.

    But Rust has a very C-like syntax. It looks a lot like C, Java, C++, C#, and D. Check out the Rust home page linked to above to see an example of its code. Some people even think its syntax is less friendly than C++'s.

    Rust alone proves these claims to be very, very questionable. It's a new programming language that doesn't conform to what the submission appears to be claiming.

    1. Re:Rust is a counter example to these claims. by MightyMartian · · Score: 1, Insightful

      The article is rubbish. OOP programming, informally at least, has been around since the 1960s. Procedural programming has been around as long. Yes, the very first generation of languages were pretty bereft of "modern" features, but by the 1970s we had most of the paradigms of modern programming in place.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
  5. And when it doesn't work? by SCVonSteroids · · Score: 1

    Then what? You just stare blankly at your monitor? I don't think your manager would appreciate that.

    --
    I tend to rant.
    1. Re:And when it doesn't work? by __aaclcg7560 · · Score: 1

      Post on Slashdot. What else would any wannabe programmer would do?

    2. Re:And when it doesn't work? by fahrbot-bot · · Score: 1

      Then what? You just stare blankly at your monitor? I don't think your manager would appreciate that.

      Heard this quote today: "Don't mistake activity with achievement." - John Wooden

      --
      It must have been something you assimilated. . . .
    3. Re:And when it doesn't work? by SCVonSteroids · · Score: 1

      Hey hey hey! I'm a very capable programmer, sir!

      --
      I tend to rant.
  6. Hey, hey, hey, don't recycle the charter of COBOL by 140Mandak262Jamuna · · Score: 5, Insightful

    I remember reading about why COBOL so much superior to FORTRAN. And sounds exactly like the summary!

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  7. The subborn human race. by geekmux · · Score: 4, Insightful

    "...That means we can eliminate middleman languages and use one language to explore, learn, teach, and think."

    One solution for all? Never gonna happen.

    Some prime examples:

    "That means we can eliminate the standard system and use one metric system to measure everything."

    "That means we can eliminate the right-side driving wheel and everyone will drive on the same side of the road."

    "That means we can eliminate all of the world's individual spoken languages and use only one language to communicate."

    Humans are stubborn. Like really fucking stubborn.

    1. Re:The subborn human race. by DickBreath · · Score: 1

      If there were one perfect programming language, everyone would be using it already. That's why programming language fanboy wars are fun to watch.

      A hammer is better.
      No! A wrench is better!
      You're both wrong, a screwdriver is the best!

      --

      I'll see your senator, and I'll raise you two judges.
    2. Re:The subborn human race. by Anonymous Coward · · Score: 0

      Like really fucking stubborn.

      No! We aren't.

    3. Re:The subborn human race. by Anonymous Coward · · Score: 0

      There is one perfect programming language, machine code.

      Even if we could get the whole world to write in English, someone would inject some new phrase when a perfectly good existing phrase works. Examples from recent history include: TL;DR;, OMG, AFK, c u l8tr, rickrolled, ATM, etc.

  8. LOL! Python looks a lot like ALGOL! by Anonymous Coward · · Score: 0

    LOL! Python's syntax looks a lot like ALGOL's, and ALGOL dates back to the early days of computing! It's not a modern syntax, it's a traditional one! LOL!

  9. Missing the important part by 110010001000 · · Score: 0

    This misses the most important part of modern languages: what is their code of conduct?

  10. concise? readable? by petes_PoV · · Score: 5, Insightful

    I don't buy this. A simple hello world in Java is much more complex and wordy than the same functionality in 50 year-old BASIC. And any language that relies on whitespace to modify the program flow cannot be described as readable.

    And many object-oriented programs have so much of their basic functions hidden away in inheritance and class definitions that a printed form of a program is impractical. I would not call that "progress".

    As for natural language, it tends to be incredibly imprecise: the meaning is only apparent when the context of its use is taken into account. I would love to see a translator that tried to convert "natural language" sarcasm into executable code. But I wouldn't want it running in my driverless vehicle or airplane.

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    1. Re:concise? readable? by passionplay · · Score: 1

      Readable perhaps. Unambiguous, not so much. Concise? YMMV.

    2. Re:concise? readable? by Megol · · Score: 1

      I don't buy this. A simple hello world in Java is much more complex and wordy than the same functionality in 50 year-old BASIC. And any language that relies on whitespace to modify the program flow cannot be described as readable.

      Now use the 50 year old BASIC to do a modern task in a way that is portable and provides a graphical output to an arbitrary device.

      I don't think esoteric languages was mentioned in the article (not that I've read it - but it would make no sense), what real language are you thinking about that uses whitespace for control flow?

    3. Re:concise? readable? by freeze128 · · Score: 1

      ...and "executable"? Aren't *ALL* programming languages executable? Isn't that the point?

    4. Re:concise? readable? by Tablizer · · Score: 1

      I don't buy this. A simple hello world in Java is much more complex and wordy than the same functionality in 50 year-old BASIC. And any language that relies on whitespace to modify the program flow cannot be described as readable.

      The whitespace controversy illustrates that nobody agrees what a "good language" is. The ways our eyes, fingers, and brains work (or don't work) varies widely. I've learned after many heated debates that extrapolating how my own thought process works into others is a dead-end.

      And many of the tools of the past were simpler. They combined database, business logic, and UI's into an integrated and coordinated package. Now we have layers and frameworks, which don't always get along and/or change independently, and require "translation code" between each layer, making more bloat and busy work. Yes, we gain flexibility in choices for the sub-parts, but lose compact and coordinated integration.

      I don't know if this is a general trend, or merely a pendulum swing. Maybe a "killer tool" will come along using many of the integration lessons of the past and put a lot of "layer slingers" out of work. I see a lot of bloat in CRUD-oriented frameworks that could be factored out and away to the unemployment line if somebody just provides the right tool and/or standards. It won't be perfect, by neither is the current crap. It would just be more productive crap.

    5. Re:concise? readable? by Dog-Cow · · Score: 1

      ... what real language are you thinking about that uses whitespace for control flow?

      Is that a serious question?

    6. Re:concise? readable? by Anonymous Coward · · Score: 0

      And any language that relies on whitespace to modify the program flow cannot be described as readable.

      Doesn't every language out there use whitespace to improve readability? You contradict yourself. As far as usability goes I transitioned from C to Python and thus far am very happy with it.

    7. Re:concise? readable? by Anonymous Coward · · Score: 0

      Do the same with your favorite language of the month where the runtime wasn't ported to the platform you want to run on. What? They both run in to the same problem?

      And as for what language uses whitespace for control flow, have you not heard of python? The end of an if statement is defined by when the indention goes back a level. If you don't indent after the if, it throws an error.

    8. Re:concise? readable? by Anonymous Coward · · Score: 0

      Nothing puts the "layer slingers" completely out on the streets.

      But fixing (read: replacing after a short maintenance period) their b0rked crap keeps me employed.

      The sheer number of times I've taken on a mess of barely-functional, hacked-together, garbage code and maintained it for a few months, documented it thoroughly, then replaced it with a finely tuned custom-built system is astounding. It costs companies millions to do this, and it's still cheaper than maintaining the old, dying pile of duct tape they have because of the immense impact it tends to have on a core business function of theirs. And that's not even to say that I never use external libraries. I absolutely do. But I use them correctly as utilities to handle specific functions. If I use a "framework", it's generally the only one, and it often becomes a burden later. Generally speaking, if the "framework" doesn't come with the standard library for your development language of choice, it's going to be a headache at some point in the future.

      And if you're doing CRUD by itself, you're doing it wrong. Call a stored proc that represents an atomic logical operation (even though the physical operations within it are not atomic). You'll simplify your code greatly by doing so. Remember, application code is a slow way to operate on a data set. Use the AI built in to your DBMS (the query optimizer and parallelizer). There's a reason it exists. If you're not using it, you might as well use flat files, because that DBMS is going to waste.

    9. Re:concise? readable? by Anonymous Coward · · Score: 0

      python you fucking moron

    10. Re:concise? readable? by Anonymous Coward · · Score: 0

      The whitespace controversy illustrates that nobody agrees

      Umm, sure...

      Simple A/B testing will quickly show that even though everyone 'sees' things differently, most agree on an overall presentation.

      Reallycomeonyoucannotseriouslyarguethatwhitespacedoesnothelpreadability.

    11. Re:concise? readable? by Anonymous Coward · · Score: 0

      have fun with semicolons and brackets.
      code should look good anyway, so why not hit three birds with one stone?

      why do you insist on typing that shit out ?
      sounds pretty autistic to me

    12. Re:concise? readable? by Tablizer · · Score: 1

      if the "framework" doesn't come with the standard library for your development language of choice, it's going to be a headache at some point in the future.

      They indeed do change and/or go out of style quite often.

      And if you're doing CRUD by itself, you're doing it wrong. Call a stored proc that

      What I mean is applications that are data-centric, typically internally used by an org, as opposed say a shopping web app that is more presentation-centric.

    13. Re:concise? readable? by networkBoy · · Score: 1

      That is my single biggest beef with Python.
      Whitespace is *not* a character that the interpreter/compiler should care about other than the delimiters between tokens, and literal spaces in strings. (with due exception to the "whitespace" and brainfuck languages).

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    14. Re:concise? readable? by networkBoy · · Score: 1

      I think it was a PA swipe at Python (though one I happen to agree with).

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    15. Re: concise? readable? by Anonymous Coward · · Score: 0

      To be fair, he did say REAL language. xD

    16. Re:concise? readable? by Anonymous Coward · · Score: 0

      And any language that relies on whitespace to modify the program flow cannot be described as readable.

      ... a properly indented program is less readable than a probably-misindented one? Why?

      Less *writeable*, maybe - if you have a shitty editor. But less readable? How is that supposed to happen? *scratches head*

    17. Re:concise? readable? by TeknoHog · · Score: 1

      Andanylang uagethatreliesonwhitespace tomodifytheprogr amflowcannotb edescribedasreadable.

      fixedthatforyou.

      --
      Escher was the first MC and Giger invented the HR department.
    18. Re:concise? readable? by Anonymous Coward · · Score: 0

      [[And any language that relies on whitespace to modify the program flow cannot be described as readable.]]

      Took the words right out of my mouth.

  11. I call BS. Modern programming languages = bloat by passionplay · · Score: 4, Insightful

    Unless you're talking about C, or D, the fact of the matter is that you've hidden all the computational overhead in multiple layers of automated translation behind your syntactical sugar.

    Case in point: non-memory managed languages don't need to manage memory - memory requirements for these programs are huge due to inadequate planning. How many programmers take into account object pooling?

    Case in point: The Motorola Startac was a very limited device but had its programming in hardware - you could not type faster than the device. New smartphones have 2-3Gb in memory and yet are less responsive.

    Case in point: a field programmable gate array was never intended for production use - yet every computer today uses these

    Case in point: how many Java programmers think about += string concatenation versus =+ string concatenation?

    While the K&R manual is correct that every complex problem can be further simplified by one more level of indirection, it is not true that there is no cost.

    Our computers today are 1000 times more powerful and solve the same problems as before. So what has changed? Our efficiency in coding as dropped and we are not using the resources at hand to make better solutions but sloppier ones that require less effort on our part but more computational overhead.

    We have become lazy and complacent and we call it progress. Until our programs can optimize to the level that we can generate by hand, I would not deem to consider our current state of programming languages an improvement in anything other than readability.

    1. Re:I call BS. Modern programming languages = bloat by passionplay · · Score: 1

      P.S. Every example provided in Python can be done as readable in C or D or even C++. It is not a function of the language but a function of the programmer.

    2. Re:I call BS. Modern programming languages = bloat by Anonymous Coward · · Score: 0

      Case in point: The Motorola Startac was a very limited device but had its programming in hardware - you could not type faster than the device. New smartphones have 2-3Gb in memory and yet are less responsive.

      Case in point: a field programmable gate array was never intended for production use - yet every computer today uses these

      Case in point: how many Java programmers think about += string concatenation versus =+ string concatenation?

      The level of stupid in these three points is so much that Slashdot would add "Read the rest of this comment" to my rebuttal if I actually typed it all out.

    3. Re:I call BS. Modern programming languages = bloat by Comrade+Ogilvy · · Score: 1

      Our computers today are 1000 times more powerful and solve the same problems as before. So what has changed? Our efficiency in coding as dropped and we are not using the resources at hand to make better solutions but sloppier ones that require less effort on our part but more computational overhead. We have become lazy and complacent and we call it progress. Until our programs can optimize to the level that we can generate by hand, I would not deem to consider our current state of programming languages an improvement in anything other than readability.

      While I agree with your criticisms of TFA, I think it not quite correct to assume that "require less effort on our part" or "readability" are unimportant pieces of the picture. As I see it, software has multiple kinds of unavoidable costs: cost to design, cost to implement/code, cost to test, cost to maintain, cost in hardware resources to run.

      Using a high-level language may increase the last cost, while reducing all the other kinds of cost. That may well be the wise tradeoff.

      Of course, that sounds good until you have unacceptably bad performance and no one in the room has a clue how to fix it, other than wait for the hardware fairy to make the stuff faster.

    4. Re:I call BS. Modern programming languages = bloat by Anonymous Coward · · Score: 0

      Case in point: how many Java programmers think about += string concatenation versus =+ string concatenation?

      None, because =+ is not an operator, because a += b is defined to be semantically equivalent to a = a+b, and because any reasonable optimizing compiler, in any reasonable language, including java, will optimize away the difference.

      Sorry, you don't get to complain at modern languages and sound smug if you don't actually understand them

    5. Re:I call BS. Modern programming languages = bloat by zifn4b · · Score: 1

      Unless you're talking about C, or D, the fact of the matter is that you've hidden all the computational overhead in multiple layers of automated translation behind your syntactical sugar.

      Surely you must mean C++ not C. What would you call Boost? Syntactical sugar?

      Furthermore, not all applications need 100% optimized performance or scalability to meet the demands of millions of users. Real seasoned programmers use the right tool for the job based on what's needed not some ivory tower bullshit. If we need 3 or 4 9's of high availability we use one approach, if we expect a small number of concurrent users on some mobile app, we use a different approach.

      No offense, but you sound inexperienced in the actual field of making money writing software.

      --
      We'll make great pets
    6. Re:I call BS. Modern programming languages = bloat by zifn4b · · Score: 1

      P.S. Every example provided in Python can be done as readable in C or D or even C++. It is not a function of the language but a function of the programmer.

      Yup, in C++ it's even easier now because C++11 has language support for lambda's

      --
      We'll make great pets
    7. Re:I call BS. Modern programming languages = bloat by Anonymous Coward · · Score: 0

      P.S. Every example provided in Python can be done as readable in C or D or even C++. It is not a function of the language but a function of the programmer.

      Every example provided in C can be done as readable machine codes etched in cuneiform on a stone plaque. Need a different kind of metric here.

    8. Re:I call BS. Modern programming languages = bloat by mccalli · · Score: 1

      As you have done with C - the CPU speaks binary, not C. Multiple layers of automated translation have been applied to your syntactic sugar. Otherwise known as - compiling.

    9. Re:I call BS. Modern programming languages = bloat by Megol · · Score: 1

      Unless you're talking about C, or D, the fact of the matter is that you've hidden all the computational overhead in multiple layers of automated translation behind your syntactical sugar.

      What about all other languages for system programming* or otherwise? You are wrong BTW, even _real_ high level languages can have thin abstraction layers.

      Also I don't think you understand what the term syntactic sugar means - it isn't an indication of abstraction but an indication of a feature intended to be "sweeter" for the programmer. Garbage collection isn't syntactic sugar, the C pre/post increment support is. Many languages support alternative looping constructs that reduce typing compared to a generic form but is translated directly and non-ambiguously to the generic form without creating overheads.

      My toy language support unless (cond) instead of if not((cond)), that is syntactic sugar but not additional abstraction.

      (* like Algol, BCPL, BLISS, (Amiga) E, Forth, Fortran, Pascal, Modula, Modula2, Oberon plus a lot more)

      Case in point: non-memory managed languages don't need to manage memory - memory requirements for these programs are huge due to inadequate planning. How many programmers take into account object pooling?

      Many. Some languages do that automatically when it can be advantageous.

      Case in point: The Motorola Startac was a very limited device but had its programming in hardware - you could not type faster than the device. New smartphones have 2-3Gb in memory and yet are less responsive.

      Not relevant. There are plenty of slow code in C and plenty of fast code in Java.

      Case in point: a field programmable gate array was never intended for production use - yet every computer today uses these

      Really? FPGAs are field programmable gate arrays (oh, it's even in the name!) and gate arrays were designed for production use. FPGAs have increased in use as they are a much better solution to making costly customized chips, modern processes are expensive as hell for small custom designs while FPGA chips are getting less expensive.

      The more important point is that this is yet another piece of nonsense from you. It isn't relevant even if you weren't wrong.

      BTW the code for "programming" FPGA chips are the same type as that used when making ASICs. Or do you think people hand-place transistors today?

      Case in point: how many Java programmers think about += string concatenation versus =+ string concatenation?

      Yet another irrelevant piece of crap? Smells like it, will not taste it.

      While the K&R manual is correct that every complex problem can be further simplified by one more level of indirection, it is not true that there is no cost.

      Irrelevant...

      Our computers today are 1000 times more powerful and solve the same problems as before. So what has changed? Our efficiency in coding as dropped and we are not using the resources at hand to make better solutions but sloppier ones that require less effort on our part but more computational overhead.

      Bullshit. Absolute bullshit. I say this as someone that loathes bloated, badly designed software filled with crap "features" that nobody (to a first approximation) use but still take resources.

      Software does much more today than before.

      We have become lazy and complacent and we call it progress. Until our programs can optimize to the level that we can generate by hand, I would not deem to consider our current state of programming languages an improvement in anything other than readability.

      Are you talking about assembly language? Fine for small problems, not for large problems.

    10. Re:I call BS. Modern programming languages = bloat by networkBoy · · Score: 3, Funny

      #define unless(x) if(!(x))

      ^how to *really* piss off the Perl hater in your C development team.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    11. Re:I call BS. Modern programming languages = bloat by Anonymous Coward · · Score: 0

      Someone been watching Johnathan Blow recently?

    12. Re:I call BS. Modern programming languages = bloat by K.+S.+Kyosuke · · Score: 1

      Yep, if you're willing to rewrite the old libraries for yourself (which might not be a bad thing a lot of the time, anyway). Kind of similar to things like threading or vector instructions, really...

      --
      Ezekiel 23:20
    13. Re:I call BS. Modern programming languages = bloat by spongman · · Score: 1

      Sometimes you need the Sistine Chapel. Mostly, though, you just need to cover up some mildew above the shower before the in-laws arrive.

    14. Re:I call BS. Modern programming languages = bloat by zifn4b · · Score: 1

      Yep, if you're willing to rewrite the old libraries for yourself (which might not be a bad thing a lot of the time, anyway). Kind of similar to things like threading or vector instructions, really...

      C++ std::thread is based on boost::thread and has been around for quite some time. There really hasn't been any reason for years to use pthreads or the Windows API directly for new code. What does old code have to do with anything in this discussion anyway? The real topic would be if you're an old, crusty programmer that never updated their skill set and is still writing code like it's 1999. That would be laughable. If you're keeping old code with technical debt around for the same reason because you feel comfortable with it, that's not a good reason. Retire. :P

      --
      We'll make great pets
    15. Re:I call BS. Modern programming languages = bloat by K.+S.+Kyosuke · · Score: 1

      I never said I'm not willing to rewrite things, but then again, I'm not constrained by an employer telling me "What? Implement this new feature instead!" like many people probably are.

      --
      Ezekiel 23:20
  12. Sounds fundamentally wrong by Archtech · · Score: 2

    If the assertion is that one language can be used for everyday purposes and also for specifying programs, it is hopelessly wrong. The merit of a programming language, like any other scientific specification, is that it is exact, precise, correct, and unambiguous. If it is easy to understand, that is a nice bonus - but it cannot be a high priority.

    Natural language, on the other hand, revels in deliberate ambiguity, multiple shades of meaning, and even saying slightly different things to different listeners. That's why synthetic languages like Esperanto never succeed beyond a small circles of fans: you can't write poetry in them, or even any stirring emotional prose.

    The purpose of programming languages is to eliminate doubt and ambiguity - to perfect communication. The purpose of natural languages, inasmuch as they have a single purpose, is to sell, seduce, persuade and - yes - confuse.

    --
    I am sure that there are many other solipsists out there.
    1. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      That's why synthetic languages like Esperanto never succeed beyond a small circles of fans: you can't write poetry in them, or even any stirring emotional prose.

      Is that really true? I don't know, I'm wondering.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Sounds fundamentally wrong by networkBoy · · Score: 1

      like most things, not strictly true, but the evidence is compelling that it is pragmatically true:
      https://en.wikisource.org/wiki...

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    3. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      The real question is whether Esperanto has too few people to have a good writer, or whether it's actually hard to have good poetry in the language. After all, even in English, it's not every decade you get a good poem.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:Sounds fundamentally wrong by angel'o'sphere · · Score: 1

      Of course you can write poetry in Esperanto.
      Despite the fact that it borrowed words from most european languages it sounds very similar to italian/latin/spain.
      For some reason the inventor thought plural words should sound greek, though :)
      However when I realized that only about 2million people spoke it fluently I stopped learning it ... but I guess I can still read it somewhat, as it is simply a conglomerate of the most common european words.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    5. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      Any examples of 'stirring prose?'

      --
      "First they came for the slanderers and i said nothing."
    6. Re:Sounds fundamentally wrong by angel'o'sphere · · Score: 1

      http://christian-morgenstern.d...:

      But that is just a translation of a german Poem, 'Der Kranke'.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      Thanks. I didn't realize Esperanto looked so much like German.

      --
      "First they came for the slanderers and i said nothing."
    8. Re:Sounds fundamentally wrong by angel'o'sphere · · Score: 1

      This particular poem looks more polish or Serbian to me (I'm german).

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      Oh. Well obviously it's not German :D

      Words like: die kannst Diese du bist oder Seite
      Are what make it look German to my un-distinguishing English eyes (previously I had assumed Esperanto would look more like Spanish/Italian).

      --
      "First they came for the slanderers and i said nothing."
    10. Re:Sounds fundamentally wrong by networkBoy · · Score: 1

      no clue... but I'll bet there's more Klingon speaking poets (good &&|| bad) than Esperanto.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    11. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      That's an interesting point, Klingon seems to lend itself naturally to poetry.

      --
      "First they came for the slanderers and i said nothing."
    12. Re:Sounds fundamentally wrong by angel'o'sphere · · Score: 1

      Depending what you read it in fact looks more like spanish/italian.
      But the inventor took plenty of words from other languages.

      Somehow he tried to do word counts, how many languages have certain word either naturally or as a foreign word. E.g. in that poem I noticed 'perfekt' which is basically the german writing for 'perfect', that word is similar in most romanic and germanic languages. In Esperanto every 'k' sound is written as k, so the c is replaced by a k.

      The Esperanto word for ticket is e.g. 'billeto' (or something like this), in german this is a easy understood 'foreign word'. Not really used in practice but I guess everyone would understand it. In most romanic languages you have a similar word. Not sure how common that word in english is :)

      I once thought about writing a compiler using Esperanto as 'programming language' but then I worked a while with HyperTalk and AppleScript and realized that to many sentences mean the exact same thing but only one compiled/worked.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    13. Re:Sounds fundamentally wrong by phantomfive · · Score: 1

      I guess that makes it easiest to learn for the highest number of people (at least, European language speakers). I've been thinking of different ways to learn languages. My current thinking is to learn a bunch of words quickly (maybe two thousand words), then learn a few of the grammar rules, then spend a lot of time reading (and watching movies). Of course if you actually live in a place where the language is spoken, it's easier, but that's not always possible.

      Billeto makes sense in Spanish, but native English speakers will equate it most easily to a bill in a restaurant, or a dollar bill. And then wonder why the Spanish word is not "ticketo" which clearly makes more sense.

      Appletalk definitely did do us a service, by exploring the limits of that language paradigm.

      --
      "First they came for the slanderers and i said nothing."
  13. "Scientific" American by Anonymous Coward · · Score: 0

    Out to prove that gender is a state of mind and that we don't need to teach math anymore

  14. Rubbish by avandesande · · Score: 1

    Who wrote this rubbish? I remember a time long ago when Scientific American was worth reading. This reads more like something from Popular Science.

    --
    love is just extroverted narcissism
  15. What kind of nonsense is this?! by the_skywise · · Score: 2

    Programming languages are "executable" now?

    Really...

    He's talking about interpreted vs compiled and interpreted languages have been around before C (BASIC anyone?!)

    And as others have posted COBOL made these same claims years ago.

    Expressive isn't necessarily better and really depends on your interpretation of such. It is far easier to "express" new hardware concepts/manipulations (like memory handling) in C than it is in Java. It is also easier to make "Expressive" code in C++ much to the detriment of most maintainers!

    Python and Java (like BASIC before them - and we're talking about the one with line numbers, not that MS bs) provide low barriers to programming - code, run, repeat. They're great for learning and beginners and to quickly hammer out program concepts. With faster hardware these days you generally can get away with the performance you get from these languages without having to transcribe them to a lower level language (C, Assembly).

    It used to be standard practice to write the algorithm in C then run the C parser to output the code directly to the assembly it was going to generate and then hand-tweak the assembly! That we don't need to do THAT anymore is a testament to the hardware and less to the languages used. (and in some cases because you can't anymore because the hardware is too disparate - IE phones)

    1. Re:What kind of nonsense is this?! by mrbester · · Score: 1

      And the A in BASIC stands for "All-Purpose". As in, everything. Therefore no other language is necessary, yet here we are.

      But now we have a new paradigm! A shame those who coined it lacked the linguistic skills to rearrange the terms so you could refer to it as CREPE. If they can't come up with an acronym, I don't hold out much hope for anything more advanced.

      --
      "Wait. Something's happening. It's opening up! My God, it's full of apricots!"
    2. Re:What kind of nonsense is this?! by pz · · Score: 1

      It used to be standard practice to write the algorithm in C then run the C parser to output the code directly to the assembly it was going to generate and then hand-tweak the assembly! That we don't need to do THAT anymore is a testament to the hardware and less to the languages used.

      Actually, it's more a testament to compiler technology that it's no longer possible (in most cases) to produce hand-optimized code that's better than a fully optimized automatic output. But I agree that it's certainly less to do with the language design.

      --

      Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
  16. Executable? by fred6666 · · Score: 1

    Non-modern programming languages are not executable? What does that mean? They can obviously be compiled/interpreted into executable code, just like modern languages.

    1. Re: Executable? by K.+S.+Kyosuke · · Score: 1

      It means that code can be evaluted automatically. As opposed to, say, informal program specifications. I know, it sounds trivial but there's a lot of push to have as many things executable as possible. Specifications, ideally, because human translators make mistakes. Anything that can be written down as code can be manipulated automatically, which is a huge win in a field that is all about automation.

      --
      Ezekiel 23:20
    2. Re: Executable? by the_skywise · · Score: 1

      I'm not sure I follow.

      Wouldn't the proper term then be "evaluatable"?

      I understand in devops how even server configurations are "executable" but those aren't programming languages being used to generate those configurations but JSON or some other definition format that may contain executable chunks (like javascript, shell calls, etc).

      And even though HTML and XML have the term "language" in them they're not "programming" languages per se.

    3. Re: Executable? by K.+S.+Kyosuke · · Score: 1

      Maybe it should, but I've always seen "executable" (as in, "executable specifications" etc.) in this context every time and came to assume that it means the same thing for everyone.

      --
      Ezekiel 23:20
    4. Re: Executable? by Anonymous Coward · · Score: 0

      I took it to mean it can be executed (after compilation or interpretation) as written, unlike pseudocode.

      Of course ALL programming languages are executable in the sense that they are meant to be executed by a CPU or by an interpreter, but there are languages that you can't directly "run" such as SQL's data definition language. It's more like a set of commands to another program, i.e. a scripting language.

  17. Explains everything by thegarbz · · Score: 1

    By using a modern programming language you no longer need to think or plan. You can just tell something to go do. I'm sure that is in no way related to the garbage some of those languages have produced.

    1. Re:Explains everything by Anonymous Coward · · Score: 0

      Unlike C, which ofcourse never produced any garbage at all.

    2. Re:Explains everything by DickBreath · · Score: 1

      With a modern language, you DO need to think AND plan, if you are building any non-trivial program and it needs to be maintainable.

      For trivial programs there are many posers who can quickly turn out unmaintainable crap code heavily copy/pasted from Google and Stackoverflow without thinking or planning.

      The posers can't build the large non-trivial program, even in a modern language. Thinking and planning is still necessary. Experience also counts. (Experience measured in code and learning from past programs.)

      I promise you that the posers can turn out garbage in any programming language. Even YOUR favorite language.

      --

      I'll see your senator, and I'll raise you two judges.
    3. Re:Explains everything by Anonymous Coward · · Score: 0

      Programming-languages are like poorly designed spam-filters..
      If you have a bad developer writing C code you get crap out... Probably nothing you want to put in production.
      If you put a bad developer to write code in C++ you get something that looks less crappy, but is still crap.
      If you put a bad developer to write code in Python you get something that might work, but is is still crap...

      It's not the programming language that makes the code is good or not.. It's the developer.

      The more crap-developers you throw at a problem the more complex, and expensive, it becomes...

      Crap developer with python.. It may not take too long for him to write the code... But cost of maintenance and bugfixing will be huge..
      Good developer with python.. Takes a short time to write code.. But cost of maintenance will be big.
      Good developer with c... Takes a little bit more time to write the code.. But the other costs are kept low. .... Hmm.. Wonder if a bayesian filter could look at and identify bad code... Just have to figure where i might get my hands loads of buggy code for the training..

    4. Re:Explains everything by Cro+Magnon · · Score: 1

      I'm pretty sure I've seen non-trivial programs that AFAICT were written without thought or planning. And not even in a modern language (COBOL isn't considered modern).

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    5. Re:Explains everything by networkBoy · · Score: 1

      I have a lab coat that is monogrammed:
      "Experience is directly proportional to the amount of lab equipment ruined"

      I believe the coding corollary would be:
      "Experience is directly proportional to the amount of code unmaintainable by the writer"

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    6. Re:Explains everything by angel'o'sphere · · Score: 1

      By using a modern programming language you no longer need to think or plan.
      Care to point out such a language?

      Even in SQL or Prolog I have to think and plan, but might just be me ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  18. Too much weed by Anonymous Coward · · Score: 0

    I don't know who wrote this, but this person needs to lay off the weed.
    Math and other tool are here for a reason, to precisely describe some functionality.
    Meanwhile natural language is full of ambiguity, and I'm perfectly fine for it staying that way.

  19. Weed? by the_skywise · · Score: 1

    You mean the hobbit's leaf? ;)

  20. Are any of the Slashdot editors also programmers?! by Anonymous Coward · · Score: 0

    I really have to ask, are any of the Slashdot editors also programmers? Have any of them done any sort of software development at all? Have any of them even written a line of code?!

    This submission is atrocious. Of course, we shouldn't be surprised that msmash's name is on it. Pretty much any submission that he/she/it touches is shit.

    To be fair to msmash, we see really shitty programming submissions from the other editors, too. Just yesterday we were subjected to Developer Hacks Together Object-Oriented HTML. From what I could see, that turd of a submission associated with EditorDavid linked to a basic HTML template engine project that hadn't even seen much work done on it in years.

    Then there are excruciatingly dumb "Ask Slashdot" submissions like Ask Slashdot: Do You Like Functional Programming? and Ask Slashdot: How Would You Stop The Deployment Of Unapproved Code Changes?, which are like pre-school level questions around here. Maybe we can look forward to an "Ask Slashdot: Do You Like Arithmetic?" submission at some point!

    There are also breaking news submissions like Major Banks and Parts of Federal Gov't Still Rely On COBOL, Now Scrambling To Find IT 'Cowboys' To Keep Things Afloat, which has been a problem since the late 1990s!

    I don't even know what the fuck to call something as pathetic as this one is, but there was More Than a Hoodie: How We Talk About Developers (editor: msmash). Even students of gender studies would cringe at the thought of such a sissy submission.

    And those submissions are just going back a month!

    It's like the editors here have absolutely no practical or even hobbyist experience with programming or software development. They can't differentiate between what a good programming submission is, and what a bad one is. Yet somehow they always manage to pick the worst ones to stick on the front page!

    Really, what are the editors' credentials when it comes to computer programming? Have any of them actually ever done any of it? I'd expect somebody who has taken even a single college programming course to do better than what we're getting around here these days.

  21. The author must be young by Anonymous Coward · · Score: 0

    Languages abstract away the machine code to a niche subset. Closing your way of thinking to only one niche is like wearing rose colored glasses.

  22. More Hipster Nonsense by Anonymous Coward · · Score: 0

    So-called "modern" programming languages are for idiot hipsters that couldn't program without them.

    1. Re:More Hipster Nonsense by DickBreath · · Score: 1

      No. Modern languages are not for them. They just use those languages.

      Someone that knows what they are doing can use new high level languages as a powerful lever when appropriate.

      --

      I'll see your senator, and I'll raise you two judges.
  23. What a piece of crap by frovingslosh · · Score: 3, Insightful

    By executable the author actually means interpreted ..Any decent programmer knows this means the language is slower than need be. Translation is not a bad thing, it is another word for compiling and/or assembling, the process that converts human readable code into actual machine instructions. Any language could be compiled, but in practice some languages (for example C) are compiled (and assembled) while others (for example Basic) are typically interpreted. Interpreting makes the language slower, as a step that occurs one time in the creation of a compiled program before the program is ever run must now happen each time the program is run (and in many cases it happens each time a line of code is rerun, although there are "just-in-time" tricks that can avoid the repeated interpreting.). Interpreted languages are an unfortunate side effect of faster computers, people get lazy, want to not have to go through a separate compilation stem when making a simple change, and figure the interpreted language is "good enough" for the user, even though it means the program will run slower than need be each time every single user runs it.

    Interpreted languages have their place. Basic was a good introductory teaching language in its day, as it was intended to quickly let beginners write and test their code. But only the feeble minded would have tried to use it for production coding. There are great special purpose interpreted languages like AWK that are quite good for quick and dirty one time tasks. And I'm even saying all of this as being a Forth programmer who even was on a team that implemented a Forth on the C64. (Forth actually does a lot of the "compilation" when each line or word is written, but it is still inefficient as it spends most of its time in subroutine calls and returns). But interpreted languages will always sacrifice speed, and you can write a compiler to translate any interpreted language into true machine code (although in many cases it isn't worth doing).

    --
    I'm an American. I love this country and the freedoms that we used to have.
    1. Re: What a piece of crap by K.+S.+Kyosuke · · Score: 3, Informative

      I've read the article and I didn't notice any connection between "executable" and "interpreted" that you seem to be making. By "executable", the author very clearly means "executable". Executable means a computer can execute it, period. The mechanism is immaterial here. And had you actually read the article, it would have been obvious to you because of the contrasting comparison with pseudo-code example that *cannot* be executed - it's not something you can type into a computer in an unchanged form and still have it run.

      --
      Ezekiel 23:20
    2. Re: What a piece of crap by Chris+Mattern · · Score: 1

      Unless you're writing machine code, "executable" does mean "interpreted". The only way a computer can execute something that is not its own machine code is to interpret it. If you can type a high-level program into a computer and have it run in an unchanged form, then the computer must be interpreting it.

    3. Re:What a piece of crap by pz · · Score: 1

      The idea of interpreted versus compiled languages is a fundamentally broken one. Any language (above machine code) can be implemented either as an interpreted or as a compiled version. There is no special characteristic that makes a language one way or the other in an immutable sense. The bias is set by the choices made for the initial implementation, usually, and builds this into an unwarranted reputation. C is considered a compiled language because C interpreters didn't appear for decades after the compiler. Lisp is considered an interpreted language because a compiler didn't appear for a very long time (and an interpreter is so easy to implement). Pascal, Algol, APL, Java, Javascript, Python, PHP, Perl, you name it, all the same. The only thing that has changed is that the distinction between compilation and interpretation has slowly faded as most interpreted languages these days use just-in-time compilation.

      --

      Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
    4. Re: What a piece of crap by K.+S.+Kyosuke · · Score: 1

      Very few REPLs execute their inputs in "unchanged form" these days. Even CPython compiles into bytecode and interprets the bytecode. PyPy meta-traces the interpreter and generates machine code. Smalltalks mostly compile to bytecode and JIT the bytecode. The most widely used Lisps don't even have any bytecode at all, much less an interpreter; they compile the input straight into native code and jump into the native code. What is left, bash and tcl? And why would you care that the compilation process is so convenient as to be invisible? Is that a bad thing?

      --
      Ezekiel 23:20
    5. Re:What a piece of crap by chthon · · Score: 1

      Actually, the first Lisp compiler was already written in 1962 (Wikipedia Lisp history.

      And some modern script languages do compile first to an intermediate language before starting to run, like Perl and Python (which even saves it to disk). That was always puzzling to me: Java actually used the same kind of mechanism, but is considered a compiled language.

  24. Just plain stupid. by thadtheman · · Score: 1

    I remember being asked to review a "patterns" book in a group. The book was terrible and everyone wanted to say it was terrible. But all we could say was nitpicky stuff. Finally the guy asking the review said to us "these aren't patterns". Sometimes you want to want to say something is bad, but just can't. So you windup with nitpicky stuff. I feel that way about this topic. C is not first generation. Lisp, Fortran, COBOL are. Algol is second generation. Pascal, C are third generation. With lists of obscure languages in between. As for the main point. It reflects more the desires of the original writer and the poster, then the reality of the situation. We are making computers that in the 90's would be considered supercomputers, but these computers can barely render a web page. Maybe the "wannabe" computer scientists should focus more on making good abstractions instead of the easiest abstraction available. The most advances I see nowadays are in C++ template metaprogramming. The language is quite crusty and showing it's age and the large amount of false turns ti's taken, but it is at lest getting the basic theory right.

  25. the power of modern languages is the CPU by Anonymous Coward · · Score: 0

    The real power of modern languages is that CPUs have reached the point where the performance hit from interpreted languages and other things with huge overhead don't quite matter so much. Just throw more CPU at the problem.

    Bloat? What's that? :(

    1. Re:the power of modern languages is the CPU by __aaclcg7560 · · Score: 1

      I've been using 3GHz processors for 10+ years (dual-, quad- and eight-core). The only time I ever pegged out cores at 100% is from encoding videos. Everything else uses one or two cores at most. We got enough CPU to handle everyday applications.

    2. Re:the power of modern languages is the CPU by networkBoy · · Score: 1

      most of the issue with current systems is context switching and cache misses, neither of which show as CPU usage on the monitor, but directly impede using said core(s). The reason your transcode can actually peg the CPU is that there is a *high* branch prediction hit rate, and *low* cache misses (virtually none, since you're hitting the same half dozen instructions in essentially a while(1) loop).

      Really shows that optimising the workload to the architecture is still important even on *fast* CPUs

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    3. Re:the power of modern languages is the CPU by K.+S.+Kyosuke · · Score: 1

      That's why the creator of CLISP reasoned that the bytecode interpreter penalty is reasonable: for the kind of complicated, not very predictable programs it was supposed to often run, the memory issues narrowed the gap between native compilation and bytecode interpretation. It was still rather slow, but not terribly so for many use cases (symbolic uses of Maxima, for example).

      --
      Ezekiel 23:20
    4. Re:the power of modern languages is the CPU by angel'o'sphere · · Score: 1

      A good deal of 'Integer Basic' was implemented in Sweet16.
      An interpreted 16Bit assembly language.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  26. Refreshingly optimistic... by admin7087 · · Score: 1

    ... but also a bit naive. From a bit more pessimistic perspective, programming with modern languages and libraries is a bit like building a bridge from hundreds of uncertified components that are not really designed for the task and have mostly been developed by hobby-engineers. There are safety nets everywhere, so you cannot harm yourself easily, but in the end you'll never know whether the bridge will hold or not...

  27. Oh, look, a Pythonista masturbating! by Anonymous Coward · · Score: 0

    How 'bout 'dat lambda calculus?

    Seriously, turn to the chapter on function decorators and have a personal party for all I care, but don't waste everybody's time here.

  28. Re:Are any of the Slashdot editors also programmer by PatientZero · · Score: 1

    Why would you expect the editors to be professionals programmers? Must they also be astronauts and chemical engineers? They are paid to pick submissions to place on the front page. They are clearly not experts in technical fields, nor should they need to be. Unfortunately, they are also not paid to edit those submissions for grammar or spelling.

    No, the fault here lies squarely with Scientific American for publishing this drivel in the first place. WTF were they thinking? They really should have technical experts on hand—at least on call—for the hard stuff, but even their regular editors should have spotted this as the fluff piece it is.

    --
    Freedom to fear. Freedom from thought. Freedom to kill.
    I guess the War on Terror really is about freedom!
  29. Re:Are any of the Slashdot editors also programmer by Anonymous Coward · · Score: 0

    Slashdot is now mostly full of wannabes. There are other sites that have more timely and informed news about software and hardware.

    I mostly come here to watch the train wrecks that happen when (even slightly) political or social stories get posted.

  30. I smell someone who can actually code. by Anonymous Coward · · Score: 0

    Have fun coding without understanding machines you n00b!

  31. Re:No longer engineering by Megol · · Score: 1

    You are just showing your ignorance - computer programming is closer to engineering now than it have been before.

    The problem is that the development model is fucked up, that most people programming doesn't know actual software engineering* and that crap is accepted as good software.

    (* it still isn't real engineering IMNSHO)

  32. Re:Hey, hey, hey, don't recycle the charter of COB by TWX · · Score: 2

    My dad was a COBOL programmer for more than 30 years, learned on an IBM System 36 in the late sixties and early seventies. He maintained that COBOL was very human-readable, especially compared to languages like C where something like

    for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

    will clean-compile.

    If one considers the growth of business-computing, business has always been about what the nontechnical person can understand, as the nontechnical person is usually the business manager. That's in-part why nowadays everything is either GUI-only or at least has some kind of GUI presence whether it needs it or not, and why the web browser has found its way into tons of niches that it has no business being in. Back in the sixties though, GUI was not really possible, but languages with very easy to understand and follow terminology, used through a command-line interface or menu-system, would be possible.

    COBOL might well be the first piece of computing designed specifically to appeal to nontechnical managers.

    --
    Do not look into laser with remaining eye.
  33. author by Anonymous Coward · · Score: 0

    Looks to me the author of the article only knows Python.

  34. The Desk by goombah99 · · Score: 1

    I'm waiting for Douglas Adam's Desk based computer interface. You sit at it and start working to solve your problem, the AI looks at what you are doing, infers the problem you are trying to solve, then solves it for you. Seems like the best possible use of an AI. Of course, one might say Clippy tried to do that. But AI has come a long way.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:The Desk by Anonymous Coward · · Score: 0

      ... the AI looks at what you are doing, infers the problem you are trying to solve, then solves it for you.

      I like Red Dwarf's version of this. It'll see how you are going to screw it up and does an equivalently bad job.

    2. Re:The Desk by MountainLogic · · Score: 1

      AI has come any farther than clippy? Really? I guess I'm behind on the marketing lies.

    3. Re:The Desk by digitig · · Score: 1

      "It looks like you're writing a letter!"

      Thanks, but no thanks.

      --
      Quidnam Latine loqui modo coepi?
    4. Re:The Desk by Anonymous Coward · · Score: 2, Insightful

      Scientific American isn't what it once was. This as been going on for years. I speak as a long time (30+ years) subscriber. for at least the last eight years, through all the tenure of the current Editor and most if not all of the previous one, the magazine has been watering down it's presentation considerably.
      I suspect it all started when the Nature group bought it. They don't want a magazine that competes with Smithonian or Nature, they want it to compete more with Discover. So, few of the articles are now written by scientists, and more and more are written by journalists. The magazine is also no longer written for a community college audience, and more and more for a junior high school audience.
      You are treating this article as if written for a real programmer audience. It wasn't. It was written for teens who might be thinking about maybe someday perhaps trying to program a computer or something.

    5. Re:The Desk by Bengie · · Score: 1

      You can't solve a problem without first understanding the problem, and the AI can't understand the problem better than the programmer by inferring what the programmer may be doing. I could see an AI making suggestions or advanced forms of refactoring, but not out-right making useful stand-alone code. I could be biased because I mostly deal with hyper-optimizing high level language systems.

    6. Re:The Desk by silentcoder · · Score: 1

      I'm not sure how fair AI has come but Clippy was pretty much proof that we can create peak artificial stupidity.

      Seriously, in a debate between Clippy and Ted Cruz - I'm not sure who would win... but we'd all lose.

      --
      Unicode killed the ASCII-art *
    7. Re: The Desk by Anonymous Coward · · Score: 0

      If modern languages were so great, then GNU/Linux would be written them, and not in C. The implication of this article is that operating systems (and compilers) are not viable applications.

  35. 1st or 2nd generation ? by Anonymous Coward · · Score: 0

    Wait, assembly is not first generation? Then FORTH would be 2nd generation.

    1. Re:1st or 2nd generation ? by thadtheman · · Score: 1

      Forth was made in 1970. Was past the time of Algol ( 1950's). Hard to place assembler. How about hard wiring patch boards? But Lisp, Fortran and COBOL were the languages where the basic principles were worked out. Algol is where it was all refined, particularly, block statements, loop constructs. C, Pascal was where it was refined even more. FORTH is one of those other languages. ( Remember SNOBOL? )

    2. Re:1st or 2nd generation ? by HiThere · · Score: 1

      Forth was created as a cut-down attempt at Fortran for a machine that controlled a radio-telescope, and couldn't support a real Fortran compiler. So it's a derivative of Fortran, even though it looks quite different, and even though the assembler shows through in a lot of the implementations. (That's not a required feature.) Even the name is cut down. The computer wouldn't support 6 letter names.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    3. Re:1st or 2nd generation ? by K.+S.+Kyosuke · · Score: 1

      What about Plankalkul? :]

      --
      Ezekiel 23:20
    4. Re:1st or 2nd generation ? by K.+S.+Kyosuke · · Score: 1

      Forth was created as a cut-down attempt at Fortran for a machine that controlled a radio-telescope

      That's not really true... Forth had very little to do with Fortran since its very origins (predating the radio telescope by quite a bit, about a decade), except perhaps for the experience of the creator of the former with the latter. And the name was cut down from "Fourth", not from "Forth(?)ran".

      --
      Ezekiel 23:20
    5. Re:1st or 2nd generation ? by HiThere · · Score: 1

      Ummh...The information I gave was as I remembered it from Threaded Interpretive Languages. I agree about the name, but I never claimed the name was derived from Fortran. And https://www.forth.com/resource... says that it was actually to "compute ephemerides, orbital elements, satellite station positions, etc. ", so I may have mis-remembered the original purpose. Or perhaps TIL got it wrong.

      Perhaps "derived from" (did I say that?) is too strong, and I should have said inspired by Fortran. (Inspired by Fargo would be more reasonable, but few had access to Fargo or even knew it existed. Fargo was a cut down Fortranish something for the IBM 1401. I never actually used it, so it might have been an interpreter rather than a compiler.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    6. Re:1st or 2nd generation ? by angel'o'sphere · · Score: 1

      This belongs into the 'biggest nonsense' collection of posts I ever have seen on /.

      Forth is extremely close to assembly, and has absolutely nothing to do with FORTRAN.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:1st or 2nd generation ? by K.+S.+Kyosuke · · Score: 1

      You could say that Forth started out as an stack based embedded/application-configuration language that eventually became a self-contained environment. Regarding the name, the sequence of "Forth was created as a cut-down attempt at Fortran ... Even the name is cut down" seems confusing in its implication.

      --
      Ezekiel 23:20
  36. That's an idiotic article by whitroth · · Score: 2

    Just from the quote.... Is that trying to suggest that C doesn't have functions?

    You can write good, modular code in almost any language. And I've *seen* spaghetti python, as well as enough other languages.

    And making the code clean and readable depends on the programmer, and whether they pay any attention to standards and best practices.

    1. Re:That's an idiotic article by chthon · · Score: 1

      Reminds me of someone I was in school with. We were learning Pascal, and the program he wrote was actually written like one would write Basic, i.e. one chunk and global variables. So you can write Basic in any language.

  37. Re: I call BS. Modern programming languages = bloa by K.+S.+Kyosuke · · Score: 1

    Case in point: non-memory managed languages don't need to manage memory - memory requirements for these programs are huge due to inadequate planning. How many programmers take into account object pooling?

    Sounds like several issues being conflated into one, badly. Case in point: Java and Smalltalk not having space-efficient headerless value types being a distinct problem from having automated memory management, or object pooling fucking up generational memory management schemes.

    --
    Ezekiel 23:20
  38. Re:Hey, hey, hey, don't recycle the charter of COB by DickBreath · · Score: 1

    As part of my retirement plan, I will seriously brush up on COBOL in the year 9995. In about the year 9997 everyone will start getting worried about the Y10K problem. People will think Y10K will be the end of civilization as we switch over to five digit years. There will be lots of COBOL work available.

    --

    I'll see your senator, and I'll raise you two judges.
  39. Not Modern at all by zifn4b · · Score: 1
    This description is not modern at all.

    I'll use Python as an example -- we use functions, objects, modules, and libraries to extend the language, and that doesn't just make programs better, it changes what programming is.

    Ok young whipper-snapper programmer that thinks you're all that and a bag of potato chips and you're using some new fancy language that supposedly has all these "new" features. Check out, just to name a few, these languages that have been around for several decades: C++, Pascal, Smalltalk, Java... even C# has been around for 15 years now. Do I need to continue? Even Python isn't really all that new.

    This article just makes the author sound like they have no clue what is currently going on in software engineering and complete and has a complete and utter lack of knowledge of what's happened over the past 30 years in software engineering and OOP.

    Hey look at the publishing date on this book. Oh snap it was published in 1995. I rest my case.

    --
    We'll make great pets
    1. Re:Not Modern at all by balbeir · · Score: 1
      Amen. Python does not represent progress. It represents consolidation, which may or may not be a good thing in itself. It's not too complicated for non-programmers to pick up but it's good enough for professionals to write decent code in it. Hence it's popularity.

      Languages like Rust and Swift and several others go beyond Python.

  40. Re:Hey, hey, hey, don't recycle the charter of COB by hughbar · · Score: 1

    Yes, I started with Fortran at school and then COBOL for my first few jobs. Fortran (or FORTRAN, if you insist) was generally used for science and maths (we had a big program to calculate UK tides, several expensive mainframe hours, for example) and COBOL for accounting, bill of materials etc.

    COBOL was/is a lot more readable because of the pseudo-english syntax. We used to try and write 'dirty' COBOL too: PERFORM UNNATURAL-ACTS VARYING PARTNERS FROM ...

    Those long winter evenings just flew by.

    --
    On y va, qui mal y pense!
  41. Re:Are any of the Slashdot editors also programmer by Anonymous Coward · · Score: 0

    Why would you expect the editors to be professionals programmers?

    Where in the GP comment does it say anything about them having to be "professionals (sic) programmers"? I'm seeing questions/sentences in the GP comment like:

    Have any of them done any sort of software development at all?

    Have any of them even written a line of code?!

    It's like the editors here have absolutely no practical or even hobbyist experience with programming or software development.

    Have any of them actually ever done any of it?

    I'd expect somebody who has taken even a single college programming course to do better than what we're getting around here these days.

    I don't think you can set the bar much lower, actually. Those are just asking if the editors have any experience at all, no matter how small. One of those questions even mentions "hobbyist experience", which is the opposite of professionalism! So I don't know where you're coming from with this "professional" stuff. It's like the GP is asking if they know even the most basic stuff about programming, and it's clearly not saying that they have to be professionals. Knowing a little bit about programming should be a prerequisite for anybody editing a news aggregation site that will have programming-related stories on it. They don't need to be professional programmers themselves, obviously, but they need at least some domain knowledge. The GP seems to be saying that the editors here don't seem to have much domain knowledge and that's why the stories they put up on the front page are so silly.

  42. C libraries by Roger+W+Moore · · Score: 1

    C does not just support functions - it supports libraries too. Arguably it also supports objects as well since you can put function pointers in a struct but by that point most people would just use C++. The only thing C does not support is a module.

    1. Re: C libraries by K.+S.+Kyosuke · · Score: 1

      *How* does C support libraries? About the only thing it has is static linkage for things you don't want to see outside a compilation unit. Everything else is open to individual implementations to make a mess of it. At best there is an assortment of implementation choices made by most implementors.

      --
      Ezekiel 23:20
    2. Re:C libraries by HiThere · · Score: 1

      C doesn't support libraries, that's done by the linker. But C does support modules. It's not even convoluted. You just make each module a separate file, and only disclose those you want visible in the header file. Static and external also help when used in various places.
      Note: The actual connection of the thus created modules is still done by the linker. But because of the definition of the header file and the static and external keywords it's fair to say that C supports them.

      That said, I don't like the complexities created by that style of programming, but C does support it.

      FWIW, *ANY* Turing complete language (and that doesn't take much) can probably be twisted into enabling any programming construct. The twists and turns required may be so horrendous that nobody would do it.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    3. Re: C libraries by K.+S.+Kyosuke · · Score: 1

      C most certainly doesn't support modules the way that Modula-2 does. Whatever C offers in this area is a bad joke compared to Modula.

      --
      Ezekiel 23:20
    4. Re:C libraries by Aighearach · · Score: 1

      OOP is only a style, not a thing. A language can have special features to support it, but code doesn't lack objects just because the language doesn't have special features for that.

      If it is programmed using OOP semantics then it is OO regardless of language. Lots of OO is done in C. Even the whole Gtk library is OOP in plain C. In the 90s I had all the headers printed out as a desk reference.

      So you don't need a struct. You could use one, but generally with OOP in C all you have to do is pass the reference to the object as the first argument, and only access anything through accessors. It doesn't matter if under the hood the reference is a struct containing the object data, or just a unique identifier that is used in some sort of table lookup. As long as you hide the implementation inside its compilation unit and the user has to pass the object-identifying reference into functions to do anything, then it will be "pure" OOP.

    5. Re:C libraries by Aighearach · · Score: 1

      OTOH, the C compiler doesn't even know about the existence of header files.

    6. Re:C libraries by Chris+Mattern · · Score: 1

      I think for purpose of this argument, most people would be willing to consider the preprocessor as part of the compiler. It's not like you would consider writing and compiling C code without it, except in very exceptional circumstances.

    7. Re:C libraries by angel'o'sphere · · Score: 1

      Historicaly preprocessing and compiling were two steps, done by two different programs.
      And there is a lint for a reason. Machines at that time had very low amounts of memory, so a C compiler e.g. would simly compile everything down to register sized ints and pointers, often completely ignoring the actual types. To type check your programs you would use lint.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:C libraries by angel'o'sphere · · Score: 1

      Smart, but wrong.
      That way of programming is called 'object based', not 'object oriented'.
      Most notably, because you have no objects, but only structs and functions.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:C libraries by Aighearach · · Score: 1

      It always seems to me that to make my code work I have to think about them as being totally separate steps and ignore the fact that gcc does everything. That way, it is all very simple; the preprocessor does its thing, and then the compiler compiles. It saves having to memorize a bunch of archaic rules for how header files and macros work.

      I don't want to know very much about how it works, it is too easy to accidentally do something clever in C.

    10. Re:C libraries by Aighearach · · Score: 1

      The Universe doesn't work that way. People call it Object Oriented. You can think that they're wrong to do so, but it will still be true that people call it Object Oriented.

      People also call a near hit a near miss. There is no way to stop that from having happened. And worse, there is no way to stop them from saying it again.

      People who disagree with you and think you're wrong about what it should be called are going to keep calling it what they called it before. Saying it isn't true is just insisting that you're ignorant, that you don't know it is called that by some people.

      If a word can mean two things, it means both those things. Here, what you misunderstand is the "object" in the original concept of object-oriented programming. The object is the abstract "object" that you're modeling in the software! The point is that you orient your code so that it has the same shape as the thing you're modeling. Language features for that are useful, but they're not the actual point of it.

    11. Re:C libraries by angel'o'sphere · · Score: 1

      If you use a non object oriented language like C and use tricks with manually constructed vtables (a table with pointers to function) to be 'pseudo object oriented', then this is called 'object based' and not 'object oriented'.
      I don't care how some people call it, as they are certainly not software developers or they would know the difference :)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    12. Re: C libraries by Roger+W+Moore · · Score: 1

      *How* does C support libraries?

      It allows calling of external functions located in libraries. I suppose technically it is the linker which actually links the call to the function (either statically or dynamically) but nevertheless the result is that you have well established libraries of C functions which you can call from C.

    13. Re:C libraries by Aighearach · · Score: 1

      Right, I'm not a True Scotsman. That said, you can't stop me from being a software developer that way.

      You can stop yourself from having a clue though, it is just as easy as you make it look.

      Understanding what things are called has nothing at all to do with your opinions about what things should be called, or what is a True Scotsman and what isn't, or if vtables had anything at all to do with object oriented programming. You apparently are ignorant of the basic theory involved. I wouldn't want you to strain yourself by actually reading Ivar Jacobson's book, or any of the others, but I'll give you a spoiler: it isn't about language features, it is about engineering practices.

    14. Re:C libraries by angel'o'sphere · · Score: 1

      If it was not about language features, we would not distinguish between:
      a) object oriented languages, e.g. SmallTalk
      b) procedural languages, e.g. C

      And we would not distingush between 'object based' and 'object oriented'.

      I suggest to read a book about it ...

      it isn't about language features, it is about engineering practices.
      Thinking object oriented and engineering with object oriented principles does not make your C program object oriented. It is still either only a procedural program or it is 'object based' at best.

      And have fun implementing polymorphisum in C without vtables. You could use generic functions though ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    15. Re: C libraries by K.+S.+Kyosuke · · Score: 1

      It allows calling of external functions located in libraries.

      That kind of muddles the meaning of "language X supports Y".

      --
      Ezekiel 23:20
  43. This is MTBS - Marketing-type BullShit by NReitzel · · Score: 1

    The people who write stuff like this also write mission statements like:

    DoIT’s mission is to empower the State of Illinois through high-value, customer-
    centric technology by delivering best-in-class innovation to client agencies fostering collabora
    tion and empowering employees to provide better services to residents, businesses, and visitors.

    Giveth me a break.

    --

    Don't take life too seriously; it isn't permanent.

    1. Re:This is MTBS - Marketing-type BullShit by networkBoy · · Score: 1

      you missed a spot: ... by using synergistic energies between stakeholders ... /*pukes*

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    2. Re:This is MTBS - Marketing-type BullShit by Anonymous Coward · · Score: 0

      I'd like to send the author a link to a 4 or 64k "modern" demoscene demo. Then ask him to even come close to that amount of power, in the same amount of space, using all of his "functions, objects, modules, and libraries". But he wouldn't see the point. This is because software development has nothing to do with advancement. Modern programming is about commerce. If it was about advancement, we would be developing "modern" languages and programming courses for exacting machine computational efficiency. The article is written to get new-comer coders and programmers comfortable with the idea that they write waste for the support of technology consumerism. But making money is important too. Some of us just want it to worth the money. Rather than just enough to keeps us buying into the new thing every three months to a year.

      64k https://www.youtube.com/watch?v=U9S4iV2KAE4
      4k https://www.youtube.com/watch?v=rML-KvlWk5s

  44. Let's "program" computers in English, or Latin by Anonymous Coward · · Score: 0

    The power of modern programming languages is that they are expressive, readable, concise, precise, and executable. That means we can eliminate middleman languages and use one language to explore, learn, teach, and think.

    I nominate English. It's "good enough" to explore, learn, teach, and think and I know it already.

    Most other well-used, not-brand-new, non-constructed human languages meet these requirements well enough for everyday use.

    Granted, sometimes you may need more precision than English or "living languages" offer. That's why for centuries lawyers used the "dead language" known as Latin.

    Call me when computers routinely understand English or other "human vernacular" languages as well as people do. I expect that to happen within my lifetime, but not this year.

    1. Re:Let's "program" computers in English, or Latin by Anonymous Coward · · Score: 0

      I nominate English. It's "good enough" to explore, learn, teach, and think and I know it already.

      Isn't that the idea behind BASIC?

    2. Re:Let's "program" computers in English, or Latin by Anonymous Coward · · Score: 0

      I thought it was the idea behind COBOL, too.
      But if you really want to see how far this idea can go, look at Inform 7.

  45. Garbage article. by HeckRuler · · Score: 1

    Absolute garbage.

    Baseless language holy war spoken from ignorance and a skewed vision of the past. "It uses libraries!" Really? Is that really all you're trying to bring to the table here? And he discovers that you can use actual code rather than pseudo code?

    Scrap away the buzzwords and the remaining statements are just plain false. Does he think C doesn't make use of libraries?

    It's garbage and shouldn't have made it's way to Slashdot. Come on msmash, are you just trying to get a rise out of us?

  46. Re:Are any of the Slashdot editors also programmer by eyepeepackets · · Score: 1

    Everyone loves a good train wreck. Just sayin'.

    --
    Everything in the Universe sucks: It's the law!
  47. And Verbose... by Sir+Holo · · Score: 1

    Poster forgot to include that modern languages are verbose.

    For example, Javascript is insanely verbose for even the simplest of things.

  48. Language Simplicity != Comprehension by Anonymous Coward · · Score: 1

    Abstracting problems to Yet Another Level Of Indirection can indeed simplify things, but this post assumes some difference between "modern" syntaxes and historical syntaxes. The actual performance of a language, including memory usage, I'll leave out of this argument (Summary: GC is no cure-all)

    Historical languages allow all the indirection, and re-use, one has in modern languages. They can even realize the logic-density per statement, once they have the framework for the problem they're modeling. It's a fallacy to assume that just because modern languages have pre-packaged some of these features that they are better (hint: most of the prepackaging has been done in the historical languages as well).

    I view many of the modern interpreted languages as a way of unifying the human learning experience for programming. This eventually breaks down because it leaves one thinking, mistakenly:
        - "Things not in my language are not as good/hard to understand." No, they may be built for specific reasons besides language syntax.
        - "Programming shouldn't have to span multiple contexts, or languages." Nope, they always have and will.
        - "My project is one program." Multi-program projects are more complex.

    To correct the above, every developer should keep in mind:
      - Each level of the program/network/hardware/OS has arisen from careful study, and serves a purpose. It may contain some vestigial cruft, but that is not reason to rewrite it in /my new shiny toy/ language.
        - Learning each level of the environment you're working within, including its language and mechanics, is what makes for a strong programming career. Write the SQL, tune it, redesign it in a new layer (perhaps inside the the DB), etc. Know JS, SQL, HTML, HTTP, and your favorite glue framework for web development, for starters. Don't just climb to the top of Python/Ruby/etc and ask that everything be exposed to your single program.
        - Think in "ecosystem" mentality. Try building your hobby website in CQRS style for OLTP, for a different flavor. Stay in the single-digit-miliiseconds-per-method realm. Keep your eye on memory from the start. If your interpreted program requires 600 libraries just to start, you may want to break it up - just from sheer dependency-entanglement.
        - To make your solution/website "work with this other thing" - don't just include another library and grow the monster. Build a solution to Do One Thing (retrieve info, send info) and keep it apart from the rest of your site. Think about shared storage, communication channels, IPC, etc.

  49. Re:Hey, hey, hey, don't recycle the charter of COB by oh_my_080980980 · · Score: 1

    Seriously? COBOL is a programming language developed for business NOT because there wasn't a graphic user interface but because it was developed to have functions used in business, finance, and administrative systems. No other programming language can easily do what COBOL does. That's why it has persisted for 57 years. Moron.

  50. PICAT - a newer language by Anonymous Coward · · Score: 0

    I cut my programming teeth on mostly 3GL/4GL languages like C, Scheme, C++. I recently came across the Picat language and came to realize how much progress has been made on programming language development. Take a look at Picat: http://picat-lang.org .

    1. Re:PICAT - a newer language by K.+S.+Kyosuke · · Score: 1

      Shouldn't it be possible to implement embedded Picat in Scheme? ;) Sussman already teaches 6.945, after all...

      --
      Ezekiel 23:20
  51. The beauty of the #define by MakersDirector · · Score: 0

    As a programmer since the beginning of time, one thing I've learned is the importance of simply finding a language which expresses the way YOU think best. For me, Visual Basic 6.0 was ideal for this, and when I went to industrialize my code, C and C++ were quick to follow.

    What I've learned over the years is - every generation thinks they have the best and most up to date languages. That's egocentrism, and while it's perfectly fine, it's important to understand that the same concepts and ideas that you can express in your language are expressible in any language given enough creativity by the programmer.

    For instance. The textbook concept cited in the article. Crap like that I never really got into. Hungarian notation. #define renaming variable concepts. The creation of objects, functions, and late bound versus early bound (strong) typing - are functions available to every language, you just have to understand the language and take the time to expand it where you aren't offered 'obvious' mechanisms to achieve these goals.

    Now you quoted the article "Programming used to be about translation".

    For you and maybe the author of the article, sure, that's possible. But don't assume this is how all languages are viewed, and don't assume your perspective of the past is the most accurate one. For me as a developer who got into programming as a hacker, the translational mechanisms came literally 14 YEARS after I got into it, and 6 years after being a legitimate consultant and programmer.

  52. I don't agree with what is a generation by Anonymous Coward · · Score: 0

    I consider FORTRAN, ALGOL, COBOL and LISP to be first generation. They influenced the next generation and lead to C, Pascal, BASIC, LOGO, and many more. Third generation would be more like SmallTalk, Prolog, FORTH, REXX, Ada and Icon. Fourth Generation would be C++, Objective-C, ML, and Tcl. Fifth would include Haskell, OCaml, Lua, PHP, Ruby, Python, JavaScript, REBOL, Oberon, and more. There tends to be less relation between the languages as generations progress, as the groupings have more to do with distance from their parent than with any similarities they might have. You could consider Haskell and LOGO to be cousins, just very distant cousins separated additionally by a generation.

  53. Slashdot.. are you just a mirror for hacker news? by Anonymous Coward · · Score: 0

    I swear it's faster to just go there instead, also there seem to be less trolls.

  54. Let's talk hammers by fyngyrz · · Score: 1

    When your only hammer is Python, all problems begin to look like they take huge amounts of memory via a parasitic interpreter, and can only be solved in trillions of low level compute cycles.

    And I say that as a huge fan of Python. But I would never let it be my only hammer, or make the ludicrous claims in TFS (nor does TFS give me any reason to spend time with TFA.)

    Finally: You can usually spot unqualified-in-c / c++ programmers by the claims they make about c / c++ that are based upon their own incompetence in and/or with these languages. A good c / c++ programmer isn't all that common, because, yes, these languages are demanding of significant skill levels, and such skill levels are rare. That's why the padded rooms of strongly typed and prophylactically declarative languages became so prevalent: To keep you from hitting your thumb. And in so doing, everyone else's thumb. However, those highly skilled people are still out there, thumbs intact.

    --
    I've fallen off your lawn, and I can't get up.
  55. I put a hex on you by fyngyrz · · Score: 1

    Octal was for people who hadn't learned their digits up to F.

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:I put a hex on you by Chris+Mattern · · Score: 1

      Octal is for people who don't have sixteen fingers.

    2. Re:I put a hex on you by fyngyrz · · Score: 1

      Nah, only if you're still stuck in base ten. You only need four fingers (and 8 gets you to a byte!) for hexadecimal. Plus carry and overflow bits. :)

      --
      I've fallen off your lawn, and I can't get up.
    3. Re:I put a hex on you by angel'o'sphere · · Score: 1

      That is why I'm 'nibbling' on my thumb when I'm thinking, what to type with my other hand :)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:I put a hex on you by Pseudonym · · Score: 1

      Octal was for computers which hadn't standardised on word sizes that were a power of two bits.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  56. Re:Hey, hey, hey, don't recycle the charter of COB by networkBoy · · Score: 1

    With just *how* entrenched some of the code is, that scenario is plausible (while still unlikely).

    --
    whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
  57. Re: Are any of the Slashdot editors also programme by Anonymous Coward · · Score: 0

    Editors here get paid? Jesus. How much do they make? I always thought they were actually crudely constructed Perl scripts.

  58. Re:Are any of the Slashdot editors also programmer by Anonymous Coward · · Score: 0

    Yep. Got everyone talking about SciAm.

  59. But Python meets none of those qualifications by Anonymous Coward · · Score: 0

    Python is expressive? No. Unless hammering the spacebar a zillion times to get through indentation hell is considered expressive.
    Python is readable? No. Try reading it to your child as a bedtime story. Let me know how that turns out.
    Python is concise? No. Try reading it to people on an elevator as your 30 second elevator speech.
    Python is precise? No. Python has yet to precisely prepare my breakfast for me let alone the piece of toast that's been promised to me since the 1960's.
    Python is executable? No. It's a goddamn interpreter/VM that will blow up on the first syntax or runtime error it encounters.

  60. Article is really about teaching/learning by Anonymous Coward · · Score: 0

    I think most of the comments here are really missing the point of the article. The authors point seems to be that "modern" languages that are often referred to as scripting languages can be useful tools for teaching and learning because they allow students to express ideas in programs without getting very caught up in the details of how those programs are represented in the machines executing them. So by playing around in Python with a DSP library it is possible to learn DSP concepts without knowing very much about computers and computer programming.

    I think that this a fair point, though not particularly insightful. He is not saying that Python is a better language for writing programs that have to perform well, or that are maintainable when scaled to millions of lines of code. He is simply saying that scripting languages are good for simple scripting. Who would have thunk it.

  61. Re:Hey, hey, hey, don't recycle the charter of COB by Carewolf · · Score: 1

    My dad was a COBOL programmer for more than 30 years, learned on an IBM System 36 in the late sixties and early seventies. He maintained that COBOL was very human-readable, especially compared to languages like C where something like

    for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

    will clean-compile.

    At least it will once you replace the double-quotes with single-quotes, otherwise you are doing adress offsets from the undefined pointers of string constants, which compilers will as minimum complain about.

  62. Re:Are any of the Slashdot editors also programmer by Darinbob · · Score: 1

    This isn't Scientific American, it was from a guest blogger.

    In the past though, Slashdot had more technical submissions. Ie, interesting stuff that nerds liked. Now it's just click bait but with easier to block ads. That is the editors are just modern journalists, meaning that they feel there is no need to understand the subject matter but instead just try to get lots of lots of people to read the first line before giving up.

  63. Re:Hey, hey, hey, don't recycle the charter of COB by TWX · · Score: 1

    That statement was pulled from an old joke fake press release:

    CREATORS ADMIT Unix, C HOAX

    --
    Do not look into laser with remaining eye.
  64. Re:Hey, hey, hey, don't recycle the charter of COB by Anonymous Coward · · Score: 0

    >No other programming language can easily do what COBOL does.

    Well, like what? I'm curious to hear an example or two.

  65. Not so sure by cjonslashdot · · Score: 1

    The thing I like most about today's languages is type safety - because type safety enables me to refactor without worry - and without having to write lots of tests as a safety net - but not all "modern" languages have type safety. Also, about two years back, I had to write a program to parse the output of tcpdump. I thought about writing in ruby, but that would mean that I would have to install ruby on the vm where the code would be running, so I wrote it in C. It took me about an hour to code, and was about 150 lines. It worked _the_ _first_ _time_. The first time. And I had not written a C program in 15 years. So I am not so sure that "modern" languages are that much better.

  66. Python sales pitch by OneHundredAndTen · · Score: 2

    Nothing much to see here - the author of the article is also the author of a book on Python and wants, understandably, drum up interest.

  67. More bullsh*t by Anonymous Coward · · Score: 0

    Come on, get a clue. Couldn't program your way out of a paper bag.

  68. Bullshit by Anonymous Coward · · Score: 0

    They are concise and expressive in a crippled subset of English.

    That doesn't make them generally concise and expressive, it makes them crippled and worse, limits the ability to express ideas to those ideas that can be expressed in a crippled subset of English as well. 1984++

    It's historically been a good way to stop the peasants from rocking the boat though, without a word for say 'freedom' then they can't demand that can they.

  69. The best thing with Perl by Anonymous Coward · · Score: 0

    ...is it scales well.

    1. Re:The best thing with Perl by Pseudonym · · Score: 1

      Yes, it scales to TWO-line programs, which are unreadable but do the job of 1000 lines of Python.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  70. Executable? by Anonymous Coward · · Score: 0

    In the land of Kim, anybody who is not PC (politically correct) is executable.
    Modern era: roughly from when the Americans discovered Columbus to 1970. Computer era: roughly from 1935 to present.
    The notion of computer generations faded with the Japanese 5th generation project. (you can supposedly buy 8th generation Intel processors now, and that's not counting from the 4004).

    Python is more object-oriented than C, but C++ is even more terse, expressive (expressive languages are equivalent to a Turing machine), precise and fast. The trouble with many recent languages is that they come in versions that add lots of functionality in ways that are not backward-compatible, thus creating new languages like ALGOL 60 and 68 are different languages, but FORTRAN IV and 77 are basically the same language.

  71. Concise my ass by osiaq · · Score: 0

    one line of my PLPQSQL function replaces 1 class in C#/.NET Core. Concise my shiny metal ass.

    1. Re:Concise my ass by osiaq · · Score: 0

      PLPGSQL, sorry

  72. No clippy by Anonymous Coward · · Score: 0

    Vigor

  73. Fortran and C rule by Anonymous Coward · · Score: 0

    Despite all the money funnelled into Python and what not, if you want numerical results and you do care about performance, nothing is better than Fortran.

  74. Re:Hey, hey, hey, don't recycle the charter of COB by Cro+Magnon · · Score: 1

    COBOL was/is a lot more readable because of the pseudo-english syntax. We used to try and write 'dirty' COBOL too:
    PERFORM UNNATURAL-ACTS VARYING PARTNERS FROM ...

    Those long winter evenings just flew by.

    I didn't see it myself, but one of my old cow-orkers told me about another old-timer who was going through a divorce at the time, and wrote this:

    Perform Beat-Your-Wife Until She-Screams.

    Sounded like fun.

    --
    Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
  75. Re:Hey, hey, hey, don't recycle the charter of COB by DickBreath · · Score: 1

    It sounds nice. But in the year 9995, the COBOL compiler is going to only accept punched cards. The cards must be punched on a keypunch machine that has the Windows 8 Metro user interface with no keyboard. Touch screen only.

    --

    I'll see your senator, and I'll raise you two judges.
  76. Language carbon footprint by Anonymous Coward · · Score: 0

    "Power of Modern Programming Languages is That They Are Expressive, Readable, Concise, Precise, and Executable" and many are extremely energy inefficient with relatively large carbon footprints. Software engineering productivity increases are not without cost.