New Programming Languages Come From Designers
eldavojohn writes "A very lengthy and somewhat meandering essay from Crista Videira Lopes has sparked off some discussion of where new programming languages come from. She's writing from the viewpoint of academia, under the premise that new languages don't come from academia. And they've been steadily progressing outside of large companies (with the exception of Java and .NET) into the bedrooms and hobbies of people she identifies as 'designers' or 'lone programmers' instead of groups of 'researchers.' Examples include PHP by Rasmus Lerdorf, JavaScript by Brenden Eich, Python by Guido van Rossum and — of course — Ruby by Yukihiro Matsumoto. The author notes that, as we escape our computational and memory bounds that once plagued programming languages in the past and marred them with ultra efficient syntax in the name of hardware, our new languages are coming from designers with seemingly little worry about the budget CPU being able to handle a large project in the new language. The piece is littered with interesting assertions like 'one striking commonality in all modern programming languages, especially the popular ones, is how little innovation there is in them!' and 'We require scientific evidence for the claimed value of experimental drugs. Should we require scientific evidence for the value of experimental software?' Is she right? Is the answer to studying modern programming languages to quantify their design as she attempts in this post? Given the response of Slashdot to Google's Dart it would appear that something is indeed missing in coercing developers that a modern language has valid offerings worthy of their time."
All you need to create a good programming language is a beard. The more epic the beard, the better your language will be
Aren't the basic programming concepts understood and defined now? All a new language can really bring to the table is a different syntax.
The successful new 'languages' these days are those that include a big set of libraries, eg. Java and C#. People use them for the libraries more than the language. Without the libraries Java and C# are nothing more than reinventions of the UCSD p-system.
No sig today...
Well there is always been two sides of the medal balancing each other - convenience and performance, and i doubt it will ever change. And i think Ruby is really stands apart from other mentioned languages, a lot more sophisticated and carefully designed.
Ruby and python are really just variants of Object BASIC yes they have their unique syntax sugar and slight twists like Ruby where everything is a object even things like literal ints. None of that much matters having an itor on something like 5 does not really alter the design of my program it's just little shorter to type than for I=0 to 5; dosomething(I); endfor.
None of this bad as developer I rather like it, but I agree with the author it's not really innovative
Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
> 'one striking commonality in all modern programming languages, especially the popular ones, is how little innovation there is in them!'
http://c2.com/cgi/wiki?GreenspunsTenthRuleOfProgramming
"Every sufficiently complex application/language/tool will either have to use Lisp or reinvent it the hard way."
So why do people (hotshots) keep reinventing the wheel, instead of contributing to libraries for LISP and/or Scheme?
For non-hotshots, get back to rowing at bottom of the ship with PHP and Java business-logic oars!
I'm not a lawyer, but I play one on the Internet. Blog
>under the premise that new languages don't come from academia
http://en.wikipedia.org/wiki/Guido_van_Rossum :
>Van Rossum was born and grew up in the Netherlands, where he received a masters degree in mathematics and computer science from the University of Amsterdam in 1982. He later worked for various research institutes, including the Dutch Centrum Wiskunde & Informatica (CWI), Amsterdam, the United States National Institute of Standards and Technology (NIST), Gaithersburg, Maryland, and the Corporation for National Research Initiatives (CNRI), Reston, Virginia.
Wrong premise.
http://en.wikipedia.org/wiki/Yukihiro_Matsumoto
>He graduated with an information science degree from University of Tsukuba, where he was a member of Ikuo Nakata's research lab on programming languages and compilers.
Again wrong premise.
When someone designs a programming language to solve a problem that they have, they are designing a programming language that will likely solve the problems of a lot of other people (unless you have particularly esoteric problems).
Matz has said that he built Ruby because he wanted a scripting language more powerful than Perl but more object oriented than Python. He solved his own need and that coincided with the needs of other people, making it a popular language.
Design-by-committee languages tend to feel like they've taken a blind guess at what problems need to be solved without consulting the people experiencing those problems.
"Languages designed by academics like FOTRTAN, COBOL, C"
Were apparently desighned by academics obsessed with internal consistency and are now mostly deat tounges.
These are contrasted with languages hacked up by people to get stuff done.
WTF?
FORTRAN was the first ever language and was hacked up by someone who wanted to get stuff done because ASM was too much of a pain in the neck. It was unlike the author's bizzare assertion the easiest to use language at the time of being written. That was the entire point! While its use may be on the decline, it has been in use for 55 years! And major important packages are still written in FORTRAN.
And C? Seriously? Yet another language which was hacked up by a bunch of hackers to get stuff done. Apparently it's mostly dead. Even though it is the main implementation of 3 of the "less academic" languages listed.
I'm surprised there isn't a "c++ is dieing haha lol!1!111" in there too. I'm glad the author never tried to argue that C++ has internal consistency (I do love C++, but...).
And COBOL being an academic language? Oh dear.
Conclusion: article is crap.
SJW n. One who posts facts.
You should at least provide some arguments as to "why" you think those are bad examples. Otherwise do not be surprised to be modded flamebait.
The article seems to ignore modern compiled (and carefully crafted) languages like Scala, Limbo, Go and tries to criticize the wide adoption of scripting languages among people who aren't really pure developers (as if they mattered!) and those developers who value development speed over quality, maintainability and performance or in places where network and/or human input latency abolish any other performance concern.
I would worry if important projects with large budgets and generous timeframes switched from Java to e.g. Ruby, but this won't happen. The existing compiled languages for such purposes are obviously very good already, so why should it matter that a new compiled-to-JS-language pops up every day?
"I love my job, but I hate talking to people like you" (Freddie Mercury)
You've never been to a Rails convention have you?
I have programmed professionally in more than 30 languages including machine codes, assemblers, FORTRAN, COBOL, Algol, C,C++, lisp, Prolog, and a variety of "4GL"s. I have used Java and Python since retirement and I can say one thing for sure about them all. Choose the right one for the job and you're half way done, choose (or be forced into) the wrong one and you you are going to pay for it in blood, sweat and eventually tears. On at least two projects (each being more than 50 man years of design and coding effort) it was worth devising a new language with a syntax suited to the problem and writing the compiler. For some jobs, readability of the code by non IT staff can give a huge payoff, for others raw performance is the only criteria. Real time interaction with physical systems usually needs a "lower" level, C or even assembler, Complex data requires object orientated structures and for once off "need it today" jobs, Java might be the answer. Maintainability brings another load of constraints, as does the intended "longevity" of the project, and don't get me started on the whole domain of "proof of correctness".
It is very easy to forget that a language is just a tool. If you only have a hammer you will find screwing a problem, but then you are reading this on slashdot.
nec sorte nec fato
No. As a woman, I'm pretty sure I'm not allowed to attend.
Register globals has been off by default for I don't know how many years.
Magic quotes is officially deprecated.
What serious developer doesn't use PDO/mysqli and prepared statements?
Greylisting is to SMTP as NAT is to IPv4
I had to create a few simple languages during my developer years. I see the creation of a language like the writing of a novel. There is a direction, a style, a set of consistent syntax and rules. C, C++ or Java are for me good examples of consistent languages, lisp and Perl also.
And unlike the examples given in TFA, I don't think PHP represents a language created by a unique person - being too inconsistent on many respects.
Slashdot, fix the reply notifications... You won't get away with it...
The problem isn't "serious developers", it's those that aren't taking it seriously.
You can take all the precautions you like, but short of getting your own dedicated server and running nothing but your own code (or code you have audited), you are always at risk of the issues introduced by someone else. On a shared host, an exploit in someone elses code is only one local exploit away from your data...
Any Turing complete language provides an infinite number of ways of solving any given problem. The difference between a good language and a bad one is whether the easiest and most obvious way of doing something is the correct way. The existence of things like register globals and magic quotes that can only be used incorrectly is a good sign of poor design.
I am TheRaven on Soylent News
"o no, programming is not a playground, it's a serious matter. And as far as you don't understand what a buffer overflow is (and a load of other things), your employer shouldn't allow you to code."
Amen to that. If only more people had the same views. Code is what keeps modern society running and the last thing thats needed is amateur hour when writing in critical systems. Just because any idiot can write simple code with a bit of training doesn't mean any idiot SHOULD be writing code. Any idiot could probably learn to fly a plane but I wouldn't want them at the controls of a 747 I'm in.
>New Programming Languages Come From Designers
What does not nowadays?
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
there's no way "the best tool for the job" can justify any of:
Java's badly designed core class library, with its lack of logical consistency and its abuse of structured exceptions.
C's preprocessor. There are better ways to implement constants and macros.
Multiple inheritance and operator overloading in C++. *
PHP semantics changing with each configuration.
Perl's horrible syntax. *
SQL's numerous security vulnerabilities.
LISP's non-procedural pretensions, and the contortions that result.
Nearly every language's dependence on its own class libraries, because interoperability is unthinkable. What's the point of living if you can't reinvent the wheel?
* "Well, just don't use those features!" Go tell that to the guys who wrote the code I'm expected to debug. If you can manage to track them down somehow. They're long gone.
We don't need yet another new programming language. Let's just pick an existing language and fix its flaws.
...marred them with ultra efficient syntax in the name of hardware...
I stopped reading right there.
indeed, good thing they are removed then isn't it
I'm god, but it's a bit of a drag really...
Register_globals was completely removed in the latest PHP version out in the world a couple of days ago
I'm positive, don't belive me look at my karma
Which is something that affects every single computation ever done, from meta programming to processor microcode to pen and paper multiplication.
So, yes it is true but also irrelevant.
As is the question of the AC that spawned this debate.
As is the story really (in my very honest opinion). I don't care where the language I program comes from as long as it behaves as I want it to. today languages are designed instead of being engineered. Ok, I'm pretty sure that when some mega corp or institute finds itself in dire need of creating a language, to solve all their computational problems, they will engineer one or design one depending on their needs. Compiler creation guidelines flow freely on the net and are available in books as well, Why wouldn't someone create a new language if he felt like it? And why wouldn't other people adopt it if they felt like it.
Whoever thinks that all technological progress should come out of universities is fooling himself, nothing bad is happening here.
-- no sig today
The difference between a good language and a bad one is whether the easiest and most obvious way of doing something is a correct way.
Come on Raven, this isn't even an argument. The two settings you talk about had a reason to be there, they provided functionality. Sure it is common sense now that this type of functionality has way too many drawbacks and this is why it is being iterated out of the language. All I see being talked about in this whole thread is features of languages that when used by some half informed programmer can have a bad effect.
Dear everybody: Please, get over it. Every language will bite you in the ass if you are going to create a big enough program in it. Every C writer in history has at some point written a buffer overflow, every code monkey an SQL injection, every rails genius a mass assignment vulnerability and don't even get me started on MicrosoftLand...
The fact of the matter is this: "It's not the language it is the DEADBEEF in front of the keyboard."
-- no sig today
Hey! You plagiarized MY first program!
No, it's not irrelevant, infact it's as far from irrelevant as it's possible to be.
You can use all the correct methodologies you want, but if you haven't secured the environment then you are trusting everything else to be correctly coded.
Now, with OSes etc that's always going to be a factor to a degree, but the situation here is when you are trusting every other developer hosting their code in a shared platform - in that case you can do everything correctly, you can use PDO, you can turn off Globals, but you can't trust someone else to have done the same.
So its utterly relevant that the issue is not just applicable to "serious developers", it's the 14 year old who has banged something out before bedtime and uploaded it to their host - a compromised account is still a compromised account, whether it's a "serious developers" account or not, and their compromised account can expose your data without you ever doing anything wrong (other than picking a bad shared host).
The problem isn't people creating new languages, its people creating new languages with gaping holes to start off with - register Globals should have been rejected from the outset, instead it became ingrained into the language to the point where it's taken a decade to get rid of it in the latest versions.
What serious developer doesn't use PDO/mysqli and prepared statements?
What serious developer uses mysqli? (Just kidding of course!)
But really, all of our business data is on SQL Server or DB2/400. And the PDO drivers for either SQL Server or ODBC (DB2) are buggy and incomplete. Hell, the entire PHP implementation of ODBC is buggy, it intentionally trashes all numeric data types and instead treats them as strings.
PHP is my bread and butter, but it's also kind of a ghetto.
I went to eat some animal crackers and the box said, "Do not eat if seal is broken." I opened the box and sure enough..
Sounds like someone's mad that they spent a lot of time getting a PhD only to find out that a PhD wasn't necessary to be successful in computing.
From TFA: "[T]here appears to be no correlation between the success of a programming language and its emergence in the form of someone’s doctoral or post-doctoral work. This bothers me a lot, as an academic. It appears that deep thoughts, consistency, rigor and all other things we value as scientists aren’t that important for mass adoption of programming languages. "
If someone doesn't come from a scientific background it's simply impossible for them to have deep thoughts and rigor in what they produce? I doubt it. I'm fairly certain that deep thought, consistency, and rigor were put into the programming languages mentioned in the article.
We need less elitism like that shown in this article. I may be jaded by the fact that at my university, our professors were horribly clueless about seemingly every modern computing concept and were still using Pascal to teach programming. When all academia taught was Pascal and even worse languages and old concepts, it's no wonder that people created other languages to get things done.
Come on Raven, this isn't even an argument. The two settings you talk about had a reason to be there, they provided functionality. Sure it is common sense now that this type of functionality has way too many drawbacks and this is why it is being iterated out of the language.
But these are the sort of universal errors that computer science has been thumping on about for decades. New languages from within academia are generally rejected because they try to eliminate hacky coding and force good practice from the ground up. Meanwhile languages from outside academia are designed around the coder's own bad habits and reinforce those habits in others.
So what's not an argument? Even if the original designer of PHP wasn't thinking about shared services, the academics were, and people refused to listen to the academics, even going so far as to tell them to enter "the real world".
But sorry, if a job's worth doing, it's worth doing right.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
It doesn't have a data-type-independent exponentiation operator. It's got plus, minus, division, multiplication... but no exponentiation. Sorry, but that omission is just fundamentally retarded.
And I am a big fan of C, incidentally - I prefer it above other languages for its efficiency and near-universal portability. Only perl comes close to being as portable, and perl is a nightmare of overlapping, gibberishy TMTOWTDI syntax.
C's got serious problems. So does perl. Neither one is anything close to perfect, but they are almost certainly the best languages to write in because of their extreme portability. Using C, I can run code written for a PDP-8 on an MVS mainframe, a linux PC, or a DEC Alpha. Using perl, I can run the exact same code on windows and unix. It doesn't make sense for me to throw away that portability unless I am purposely writing a niche solution to compensate for a specific OS's problems.
LISP loses, and will continue to lose until they address the fact that the imperative-c-style is the right choice 90% of the time, and that the core advantages of lisp apply only to the other 10%. Which is why the languages that focus on getting the 90% right, and finding some way to manage the other 10% effectively will forever be leaving LISP in their wake.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
The fact of the matter is that not just programming languages, but entire concepts, frameworks and practices in computer science are completely untested for efficiency, human factors and most importantly, return on investment!
Examples include: ... I like them!"
1) Patterns (Please include a measured, verifiable example of anyone who has saved or made money on this).
2) Agile (See parenthetical above. Extra points on why it's better than just meeting every day and discussing the problems and schedule).
3) The *new* programming language [insert favorite here]!
4) Programming languages with radically different syntax and models. Please don't bother with responses like, "They're *better* because... um....(mutter mumble)
5) Unit testing (Qualifier: It is possible to make this useful, except that most developers don't and don't know how to.)
Please do not read this sig. Thank you.