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.
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
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
Translation was necessary because each language offers different capabilities.
Good thing all languages now offer the same capabilities, so translation is no longer necessary.
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.
Then what? You just stare blankly at your monitor? I don't think your manager would appreciate that.
I tend to rant.
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
"...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.
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!
This misses the most important part of modern languages: what is their code of conduct?
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
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.
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.
Out to prove that gender is a state of mind and that we don't need to teach math anymore
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
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)
Non-modern programming languages are not executable? What does that mean? They can obviously be compiled/interpreted into executable code, just like modern languages.
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.
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.
You mean the hobbit's leaf? ;)
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.
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.
So-called "modern" programming languages are for idiot hipsters that couldn't program without them.
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.
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.
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? :(
... 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...
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.
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!
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.
Have fun coding without understanding machines you n00b!
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)
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.
Looks to me the author of the article only knows Python.
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.
Wait, assembly is not first generation? Then FORTH would be 2nd generation.
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.
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
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.
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
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!
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:
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.
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.
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.
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.
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?
Everyone loves a good train wreck. Just sayin'.
Everything in the Universe sucks: It's the law!
Poster forgot to include that modern languages are verbose.
For example, Javascript is insanely verbose for even the simplest of things.
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: /my new shiny toy/ language.
- 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
- 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.
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.
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 .
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.
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.
I swear it's faster to just go there instead, also there seem to be less trolls.
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.
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.
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
Editors here get paid? Jesus. How much do they make? I always thought they were actually crudely constructed Perl scripts.
Yep. Got everyone talking about SciAm.
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.
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.
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.
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.
That statement was pulled from an old joke fake press release:
CREATORS ADMIT Unix, C HOAX
Do not look into laser with remaining eye.
>No other programming language can easily do what COBOL does.
Well, like what? I'm curious to hear an example or two.
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.
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.
Come on, get a clue. Couldn't program your way out of a paper bag.
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.
...is it scales well.
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.
one line of my PLPQSQL function replaces 1 class in C#/.NET Core. Concise my shiny metal ass.
Vigor
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.
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.
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.
"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.