Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

New Programming Languages Come From Designers

Soulskill posted more than 2 years ago | from the sprung-fully-formed-from-their-beards dept.

Programming 435

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

Sorry! There are no comments related to the filter you selected.

1st (-1)

Anonymous Coward | more than 2 years ago | (#39272939)

post

Examples include (-1, Troll)

ProgrammerJulia (2589195) | more than 2 years ago | (#39272957)

"PHP, JavaScript, Python and Ruby".. not convincing. Even C# and .NET are better languages than those (it really is). And give me back C/C++ or Assembly any day. But those 'examples' are worst of all.

Re:Examples include (3, Insightful)

freedumb2000 (966222) | more than 2 years ago | (#39273181)

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.

Re:Examples include (-1)

Anonymous Coward | more than 2 years ago | (#39273237)

PHP: register globals, magic_quotes, multiple function to add quotes to sql queries: add_slashes, mysql_escape_string and mysql_real_escape_string: only the last one is secure (unless there's a mysql_real_this_time_escape_string now). Meaning a program must first test if magic_quotes is on, if it is strip_slash the string before mysql_real_escape_string it back (with validation in the middle).

Re:Examples include (2)

mikael_j (106439) | more than 2 years ago | (#39273295)

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?

Re:Examples include (3, Insightful)

Richard_at_work (517087) | more than 2 years ago | (#39273355)

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

Re:Examples include (4, Insightful)

TheRaven64 (641858) | more than 2 years ago | (#39273409)

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.

Re:Examples include (2)

i_ate_god (899684) | more than 2 years ago | (#39273719)

indeed, good thing they are removed then isn't it

Quite obviously... (5, Funny)

Anonymous Coward | more than 2 years ago | (#39272965)

All you need to create a good programming language is a beard. The more epic the beard, the better your language will be

Re:Quite obviously... (1, Flamebait)

Chrisq (894406) | more than 2 years ago | (#39272977)

All you need to create a good programming language is a beard. The more epic the beard, the better your language will be

I personally look forward to the zombie Muhammad [huffingtonpost.com] programming language

Re:Quite obviously... (5, Funny)

MysteriousPreacher (702266) | more than 2 years ago | (#39273681)

It was tried, but failed. It had no support for graphics, and stability and a lack of standardization were major problems.

While the majority of programs ran reasonably fine, a significant minority would deliberately crash themselves and other applications. This instability is due to a feature by which Zombie Mohammed code ensures correctness. Unlike Catholic++, Zombie Mohammed certification is very decentralized, and has reached the point at which each individual program considers itself to be the sole arbiter of correctness. When a program encounters another that doesn't adhere perfectly to its own standards, it will attempt to crash it - which normally leads to both applications being killed. Although widely claimed that Zombie Mohammed code will only attack other languages, such as Borland's Turbo Presbyterian, the truth is that Zombie Mohammed code is far more likely to kill its kin than foreign languages.

To this day, many Zombie Mohammed developers claim their language to be stable, and that crashing programs are the result of the language being distorted or misused. Oddly enough though, the "stable" developers seem unable to explain exactly how the rogue developers' code is a misuse of the language, and are slow in condemning their actions. Even now in developed nations that have discarded archaic languages, criticism of these outdated languages attracts threats of violence - with many people and publications opting for self-censorship. Zombie Mohammed is gaining popularity in Europe, which some have likened to the idiocy of buying a top of the range modern PC in order to run Windows 3.11. Sensitivities considered, it would be a good idea if the immigration process would encourage those who wish to use modern languages. It doesn't mean that use of Zombie Mohammed in Europe should be prohibited - more than immigrants must understand that Zombie Mohammed is just one of many languages in use, and that it shall not be protected from criticism or ridicule. Really, how can they expect no criticism when they use a dysfunctional programming requiring an interpreter?

The language remains popular in some parts of the world considered socially backwards and unsophisticated, where pretty much anything is an excuse for a flag burning angry mob. Whether Zombie Mohammed is a cause or a symptom of social retardation is unclear, and certainly such issues are not restricted to this language. One of the largest and most developed countries uses JC (albeit in thousands of variations), yet there is regular in-fighting between various schools of JC developers, and antics that baffle the rest of the developed world, such as JC developers trying to have a programing language taught in religious ed. Thankfully thus far religious leaders have presented a united front in claiming that computer programming is more suited to science than to religious education.

Re:Quite obviously... (3, Insightful)

f3rret (1776822) | more than 2 years ago | (#39273705)

Dude, Sean, chill. You thought way to hard about that.

Re:Quite obviously... (1)

lvxferre (2470098) | more than 2 years ago | (#39272999)

This is only needed if you're programming games like Dwarf Fortress and Angry, Drunken Dwarves. In this aspect, more beard == better.

Re:Quite obviously... (2, Funny)

Anonymous Coward | more than 2 years ago | (#39273005)

Relevant [khason.net] .

I love lolcode (1)

Anonymous Coward | more than 2 years ago | (#39273001)

I love lolcode

Doomed (2, Insightful)

Joce640k (829181) | more than 2 years ago | (#39273007)

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.

Re:Doomed (5, Interesting)

Anonymous Coward | more than 2 years ago | (#39273051)

Not quite true. There are believed to be a very large number of possible models for computation, of which functional and imperative programming are but two.

Most of them are unlikely to be particularly useful, but there is plenty of scope for new languages which exploit them.

Re:Doomed (5, Insightful)

buchner.johannes (1139593) | more than 2 years ago | (#39273593)

I disagree. For me, there are three important points to discuss programming languages:

  1. Syntax
  2. Access
  3. Community

ad 1) We know all about and can analyse the syntax. Fine. All the discussion happens here.
ad 2) But what does the finest Haskell help me if I can't access a CD, Bluetooth or a XMPP server, and whether it makes a difference where I want to run the code (web server, mobile phone, mainframe, laptop). In principle, all languages are Turing-complete and equivalent, and I can write wrappers between languages, but as long as I can't *practically* do all the things I need, I'm stuck. The available libraries/access methods draw a picture of what is possible. Here C due to its age, Java with it's tendency to make package that are reusable and Python are among the best (from my experience). As an aside, .NET lacks here, and massively because there is no spirit to make libraries available to others for free causing a non-availability of free libraries.
ad 3) A language is also dominated by its users. This is most noticable with PHP. The background of users dominates what a language should do. Also, this determines the amount of help and easy-to-access documentation. Which again makes a language popular or not.

One individual is not capable of addressing (2). Also, whether a language is picked up by the masses (3), or whether you can build and hold this community, is not a rational, predictable process. When designing a language, you don't have full control over success.

When comparing two languages, don't just look at (1), also look at (2) and (3).

Re:Doomed (2, Insightful)

ledow (319597) | more than 2 years ago | (#39273103)

This.

Pretty much, after you learn your second or third programming language, they are all pretty much the same. There are some oddball ones for very specific purposes (e.g. PROLOG), but pretty much they are all the same things with different syntax and different libraries.

Some of them are slightly more suited to different tasks (e.g. LISt Processing, etc.) but there's really not much to choose between them. I'm not a fan of the newer languages - anything that LOOKS like gobbledegook from a distance usually does a good job of masking gobbledegook close-up. Just looking at some of the Ruby examples on the Wikipedia page makes my programming-mind want to vomit. I find C++ quite obtuse too. C99 is pretty much the best compromise that I've found between gobbledegook and flexibility.

Does your language compile to the target? Does your language run and compile from your development host? Does your language enable you to do the things you want without unnecessary hindrance? Almost every programmer who chooses a language asks themselves that and if they aren't satisfied it's true, will move to something else.

To an extent, OOP is just a formalisation of things that function programmers have been doing for decades into a space-saving syntax. Similarly for other "paradigms" of programming. In the end, the compiler still has to squeeze it all into the same instruction set and it's just whether it bothers to check for over-runs, abstract away certain details, make certain optimisations, etc. that makes any difference. The end code is usually pretty indistinguishable.

This is my answer when someone wants to choose a language to "start programming": Any of them. It doesn't really matter. Probably good to start with something you can understand immediately but it really doesn't matter what you do it in. It's like a child who's started learning to speak wondering what language they should speak - whatever is available, practical and you can manage.

Programming is communication of some instruction to the computer, that's why we call them "languages". What language you use is merely a practical consideration (i.e. verbosity, popularity, availability, what others can understand, etc.) that's pretty much made for you. Some languages aren't available, don't have a compiler (only an interpreter), need external libraries for everything, aren't cross-platform, etc. Beyond that, the only thing that matters is the message - the program itself - not the language.

Since I was a teenager, I thought of writing my own language that would pick bits I like out of each language and merge them. It would just create a hideous mess, of course, but if I've considered it, it usually means lots of other people have done it before me. Any language that purports to be the collation of the good points of others will be regarded by everyone else as a collation of the bad points of everything else.

A one-man language isn't, in and of itself, a bad thing. The problem comes when it literally does nothing you can't already do, albeit with slightly different syntax and slightly more work.

Basically, if you wanted, you could rewrite a C pre-processor to compile any of those languages directly to C syntax, and vice-versa. There's nothing "new", just some "shiny" things.

Things haven't moved on since C, really. Sure, we've prettied up the syntax, clarified some edge-cases, added some libraries, etc. but it's all just spit-and-polish on a language made in the 60's. The fact we use those slightly-cleaner versions for the vast majority of software today (including the compilers of most of those other languages) means that there really wasn't any huge paradigm shift, or change in the way we work, or need to move on.

The only thing I think might change the way we work in quantum computing. That's going to need a serious rethink and redesign in order for people to "program" them effectively. But, you know what? I have a suspicion that the first practical languages for that will be "C with knobs on".

Re:Doomed (1)

Anonymous Coward | more than 2 years ago | (#39273173)

Basically, if you wanted, you could rewrite a C pre-processor to compile any of those languages directly to C syntax, and vice-versa.

sure all *imperative* languages look and feel all the same, but please go ahead and do that with a declarative or a functional language.
Sure it's doable, because of Church, but that doesn't mean it's simple.

Re:Doomed (4, Interesting)

OeLeWaPpErKe (412765) | more than 2 years ago | (#39273353)

Compiling functional languages down to C is extremely simple. Functional code is imperative, it's just accepting the rule that you can never reassign a variable. It's the reverse that's hard.

But just because it's hard doesn't mean it's not done. Pretty much every C compiler with the partial exception of gcc compiles C code into a functional-style imaginary assembly-like language, because that allows more optimization algorithms to work. It's hard and complex, but it gains you a few percent of efficiency.

Most high-level programming languages easily "compile down" to C, in a straightforward and easy manner. Just look at the gnome source code to recoil in horror at the manual, convoluted and incomplete reimplementation of C++'s virtual method tables. Complete with the "your destructor isn't virtual" gotcha just waiting to bite you, except without the compiler warning when you do screw it up. Or the linux kernel's way of dealing with all sorts of datatypes, like a file handle. It *is* object-oriented, both gnome and the kernel, they just prefer to compile manually.

Want to give C "all the power of python" ? Just make all variables part of a huge dictionary, and do everything with symbolic lookups. ( x.y(z) => (*dict_get(dict_get(global, "x"), "y")) (dict_get(global, "z")), and all types reduced to "void *". There's people who actually do stuff like this (like, again, gnome).

The new linux iptables code looks like an extremely basic lisp implementation, because they know how to make that fast. The previous one looked like an interpreter for an extremely convoluted language (much slower because of the 2 strands of execution : first the interpreter itself, second the actual rules being executed. This hinders cache efficiency a lot).

Going down is never the problem. Compiling any highlevel language down to C is an easy exercise (I won't go as far as to say it's trivial, it's not). Imho it's not the best option. C is hard to optimize (but code is available to do that), so compilers necessarily miss a lot of opportunities. The compiler actually has to determine the programmer's intention, prove difficult properties about portions of code, before a lot of optimizations can be applied. Needless to say, this is very hard. Dataflow oriented languages, by contrast, are much easier to optimize and beat C in performance. But nobody knows them, and so actually coding such a compiler is a very hard, very lonely exercise.

Re:Doomed (4, Informative)

TheRaven64 (641858) | more than 2 years ago | (#39273435)

Pretty much every C compiler with the partial exception of gcc compiles C code into a functional-style imaginary assembly-like language, because that allows more optimization algorithms to work.

Really? Because I've worked on several C compilers, and that's not something I've ever seen. Unless you're talking about SSA form, in which case you're wrong on several counts. First, GCC does use SSA form and has for about five years. Second, SSA form is usually quite restricted: memory is not SSA, for example, so it's not very like a functional style at all. I'm not even going to talk about your conflation of vtables with object orientation.

Re:Doomed (5, Insightful)

Anonymous Coward | more than 2 years ago | (#39273227)

Good grief, what a profound misunderstanding of the entire field this post represents.

If you have an interest in this field, you need to spend some serious time with Haskell and LISP before you even begin to think about writing longwinded comments about how all languages are fundamentally the same.

It is trivially true that any program you can write in [language X] you can also write in assembler, and therefore C. If the entire field of programming languages could be summarized like this, why aren't we all using assembler?

The insight only comes when you understand this thing called "abstraction" and why it's useful. There is a reason I use Django templates, and don't usually write HTML-producing code in C. There is a reason I use LISP when I'm doing natural language processing. I can do more work in one line of Python than you can do in 100 lines of C. The right language for the job can make two orders of magnitude difference in productivity. If you don't understand that, please, STFU.

Re:Doomed (1, Insightful)

Viol8 (599362) | more than 2 years ago | (#39273381)

"Haskell and LISP"

Functional and list processing languages are not magic despite what the fanboys would have us believe. And if they were the best solution on a day to day basis they'd be used far more often than they actually are.

"I can do more work in one line of Python than you can do in 100 lines of C"

You must be a pretty lousy C programmer then. Python may be higher level than C but its not THAT mush higher.

Re:Doomed (3, Insightful)

JasterBobaMereel (1102861) | more than 2 years ago | (#39273543)

C was widely used because it was well supported on all platforms and had extensive libraries ..
C++ see above (and the syntax is similar to C)
Java - See above for cross platform (and the syntax is similar to C/C++)
JavaScript - See above for Web-browsers (and the syntax is similar to C/C++/Java)
C# See above (for Windows and some other systems) (and the syntax is similar to C/C++/Java)

Do you see a pattern here, can I learn a language similar to what I already know, that will be well supported on the platform I am using, and will have all the libraries I will need ...

Languages that are better in every respect will fall by the wayside if they don't meet these criteria regardless of how much better they are ...

C and it's descendents are not the universal perfect language that people suppose, they are just popular, and now are just popular because they are near ubiquitous ...

Re:Doomed (1)

dabadab (126782) | more than 2 years ago | (#39273301)

it's just whether it bothers to check for over-runs, abstract away certain details, make certain optimisations, etc. that makes any difference

Pardon?... Last time I looked checks, abstraction, automatic optimisation and stuff like that were the reasons to have computer languages too.
Unfortunately no programming language will bring world peace but none aims to do so - they are about the stuff you just trivilialized.

Re:Doomed (1)

PiMuNu (865592) | more than 2 years ago | (#39273305)

I basically agree. But I would say not just libraries - C++ was invented so that the compiler can do type checking for you. But yeah, looks like Turing was right after all.

Re:Doomed (1)

Joce640k (829181) | more than 2 years ago | (#39273417)

C++ compilers can do a lot more than check types. They automate an awful lot of programming work for you, eg. via stack unwinding.

Re:Doomed (2)

Joce640k (829181) | more than 2 years ago | (#39273401)

I find C++ quite obtuse too. C99 is pretty much the best compromise that I've found between gobbledegook and flexibility.

To an extent, OOP is just a formalisation of things that function programmers have been doing for decades into a space-saving syntax.

The big advantage of C++ over C is resource management (using "RIAA").

With C++ you can define a smart pointer type, use STL containers and strings and everything pretty much manages itself. With C you simply can't do that. Writing big/complex programs in C is an awful lot more work than in C++.

Exceptions too. If you're parsing a complex data file several layers deep then error handling will make C code enormously complex. With C++ you just throw an exception and let stack unwinding free all the temporary data for you.

Re:Doomed (5, Funny)

Anonymous Coward | more than 2 years ago | (#39273673)

The big advantage of C++ over C is resource management (using "RIAA").

I think you meant RAII (resource acquisition is initialisation), also known as SBRM (scope-bound resource management). The RIAA would just disable all your copy constructors to stop copyright infringement.

Re:Doomed (4, Insightful)

TheRaven64 (641858) | more than 2 years ago | (#39273125)

Aren't the basic programming concepts understood and defined now? All a new language can really bring to the table is a different syntax.

If you really believe this, then you've been stuck in Algol-derivative land for far too long.

Re:Doomed (1, Insightful)

aaaaaaargh! (1150173) | more than 2 years ago | (#39273201)

Aren't the basic programming concepts understood and defined now?

Not when it comes to parallel programming with the inherent synchronization issues. Particularly the attempts to automatically parallelize seemingly sequential programs are still in their infancy and even if these are more problems of compiler optimization these need a certain amount of support in the core language such as immutable data structures in the right place or a particular synchronization model.

But yeah, it is annoying that many recent languages are worse than what was there before in terms of readability, security, or practical expressivity. I'm not a big fan of Ada because of its sometimes arcane syntax and its verbosity, but you've got to admit that many modern languages barely have half of its features. Or, take those languages who shall remain unnamed whose inventors try to sell dynamic scoping as a good thing (whereas in reality they were probably just unable or too lazy to implement lexical scope).

That being said, in the end it's the libraries that count, and another big problem is that libraries are constantly being rewritten for each language or interfaced from inherently buggy and unsafe languages like C and C++. It's understandable and somewhat unavoidable but still idiotic.

Re:Doomed (2, Insightful)

Nursie (632944) | more than 2 years ago | (#39273309)

C/C++ inherently buyy and unsafe?

No more buggy than code written in any other language, and only unsafe in the hands of people that don't know what they're doing. Arguably these people shouldn't be allowed near any programming language anyway.

Re:Doomed (1)

GiganticLyingMouth (1691940) | more than 2 years ago | (#39273445)

Yes. C/C++ are inherently predisposed towards being buggy and unsafe, relative to more modern languages. They trade runtime checks for minimal runtime overhead (and I'm not saying that's a bad thing), but they don't make any effort to assist the programmer in the area of code correctness. Even the few compile-time systems in place to prevent programmer error (i.e. the type system) is pretty easy to circumvent. Take for example assigning one struct to a (completely different) one (which is an illegal operation); type1 t1; type2 t2; t1 = *(type1 *) It's as easy as that to completely subvert the type system. This is because C assumes the programmer knows what they're doing/is always right, which more often than not is not the case. However, if as you say, people who write unsafe code "shouldn't be allowed near any programming language anyway", then we'd have precious few (i.e. zero) programmers. You can never tell that there's a security vulnerability in your code until it's been found, and you can never conclusively prove your code to be security-hole free. In addition, very often in industry software security is an afterthought, as it's not as tangible as implementing new features. As a result, no one spends any meaningful time on detecting vulnerabilities (which can be very subtle). This is why having a language that makes it easy to write good code and hard to write bad code is so important. C will always have a place in embedded systems and OSes because of its flexibility and speed, but it's high time that we moved away from such low level languages in other software contexts.

Re:Doomed (2, Insightful)

Joce640k (829181) | more than 2 years ago | (#39273689)

Just because it can be done, doesn't mean you should do it.

Most arguments against C++ are of the "Look, I can do this and it's bad!!!" type. Real C++ programmers just ignore them and carry on writing code which doesn't do that.

Yes. C/C++ are inherently predisposed towards being buggy and unsafe, relative to more modern languages. They trade runtime checks for minimal runtime overhead (and I'm not saying that's a bad thing), but they don't make any effort to assist the programmer in the area of code correctness.

Modern C++ implementations usually have run time checking on by default. eg. In Visual C++ std::vector checks the range of all indices to see if they're legal. If you do C++ right then the only memory error you'll is a null pointer (just like super safe Java).

C++ isn't problem-free, but all the old mid-1990's arguments aren't applicable any more, sorry.

PS: C and C++ are completely different languages, writing "C/C++" only shows your ignorance.

Re:Doomed (3, Interesting)

Mabhatter (126906) | more than 2 years ago | (#39273421)

This is like arguing for good Engineering. The Efiel Tower is a great piece of engineering and applied sciences. It is also a terrible house or car factory.

What these "bad" languages provide are tools to do a TASK well. The classic case of a well designed and engineered language would be Java. The underlying computer science is excellent.... But it doesn't SOLVE PROBLEMS PROGRAMMERS ACTUALLY HAVE. Java is like a store full of Craftsman tools of every type.. A langauge like Perl is a master lockpicker's toolset... Not much to look at, but get the job done.

Re:Doomed (1)

cptdondo (59460) | more than 2 years ago | (#39273589)

I learned to program at a time when structured programming was just coming into view. There was a huge amount of experimentation going on. I still think fondly of languages like SNOBOL, which was absolutely awesome in its text handling. Most of the regex concepts were tried and tested in SNOBOL.

Seems like a lot of the new languages are scripting languages, written to scratch an itch; sometimes they stick. NASAL comes to mind. Great scripting, limited applicability.

I really wish that people would take off their blinders and really, really *try* radical new concepts.

Everything that can be invented has been invented.
Charles H. Duell, Commissioner, U.S. patent office, 1899 (He didn't really say that but it's a great quote anyway).

C isn't dead...yet. (2, Interesting)

Anonymous Coward | more than 2 years ago | (#39273013)

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.

Re:C isn't dead...yet. (3, Interesting)

durrr (1316311) | more than 2 years ago | (#39273085)

Convenient programming should be prioritized nowadays, most people at an entry level don't plan to code anything massive and performance critical anyway.
While I do love ruby(and processing, and ruby processing) I think there's a lot of room for improvment in convenience, perhaps at a massive expense of performance, but most people have a core or two, or five sitting idle most of the time anyway.

Ideally, programming should be a playground accessible to all, not like today where it's more of a military discipline camp accessible to all.

Re:C isn't dead...yet. (5, Insightful)

TheRaven64 (641858) | more than 2 years ago | (#39273149)

It's also worth remembering that performance doesn't mean the same as it used to. An Erlang program, for example, typically runs at about a tenth the speed of a C program doing the same thing... when you have one core. On the other hand, it's pretty easy to write Erlang programs that scale up to 1024 processors (I've written Erlang code that, without any special effort, scaled almost linearly when moved from my single-core laptop to a 64-processor SGI machine and the profiling data indicated that the load was still pretty evenly distributed between Erlang processes so going to 512 or more CPUs would have been easy). When even mobile phones are multicore, this matters a lot more than single-threaded performance. There are lots of things in C that make it very difficult to get good performance when you go beyond about 16 threads (e.g. no differentiation between thread-private and shared data, no immutable-after-creation data types) but which were not a problem for single-threaded performance.

Re:C isn't dead...yet. (2)

bertok (226922) | more than 2 years ago | (#39273415)

Good grief... so you're saying that by using Erlang you need a minimum 20 cores to get a measly 2x speed-up over a single-threaded program, which is probably easier to write too?

Multi-threaded programming is not unique to Erlang, writing parallel code in Java, C#, or even C++ is not exactly rocket surgery, so the comparison to strictly single-threaded code is unfair. I can get a program in any one of those languages to scale up to at least hundreds processors without breaking a sweat. Heck, any web application is automatically multi-threaded with both Java and C#, and with version .NET Framework v4.5 or later it can be trivially made asynchronous as well on top of that! You don't need a single lock or threading primitive of any kind to achieve that. If you want to get more advanced, all three platforms give you easy to use and powerful libraries to make multi-threading safe and efficient.

It's only the crappy open-source platforms written by non-professionals that struggle to scale, which is why Erlang looks so good in comparison to a lot of beginner programmers, and why Node.js is so fascinating to them. Ooo... look... we've invented asynchronous calls, which is brand new and fascinating, because clearly nobody has ever done that before [microsoft.com] ...

The real benefit of Erlang is not speed, but reliability and online maintainability. It's designed for non-stop systems where uptime is more important than performance. This is explicitly stated in its documentation as the primary design goal of the language! Using Erlang to improve the performance of code is asinine. If speed matters, any of the three popular languages will run circles around Erlang.

That fancy 64-processor SGI box of yours? You've lost 90% of its performance to Erlang's inefficiency, so I could get the same performance out of a 6-core computer with an efficient programming language. I have 6 cores in my desktop. I bet it cost a few digits less than your SGI box.

Re:C isn't dead...yet. (1)

TheRaven64 (641858) | more than 2 years ago | (#39273459)

It's only the crappy open-source platforms written by non-professionals that struggle to scale, which is why Erlang

Uh, what? You realise that Erlang is from Ericsson and was specifically designed for high-availability systems? If you've made a telephone call in the last 10 years, odds are that at least one leg was routed by some Erlang code...

Re:C isn't dead...yet. (1)

gl4ss (559668) | more than 2 years ago | (#39273547)

It's only the crappy open-source platforms written by non-professionals that struggle to scale, which is why Erlang

Uh, what? You realise that Erlang is from Ericsson and was specifically designed for high-availability systems? If you've made a telephone call in the last 10 years, odds are that at least one leg was routed by some Erlang code...

from the paren-parentt: "The real benefit of Erlang is not speed, but reliability and online maintainability. It's designed for non-stop systems where uptime is more important than performance. This is explicitly stated in its documentation as the primary design goal of the language! Using Erlang to improve the performance of code is asinine. If speed matters, any of the three popular languages will run circles around Erlang."

the point of the rebuttal was that erlang is no magic bullet that would make your linear problem get solved faster with more parallel cpu's and that parallel problems are easy to share over multiple cpu's in plenty of languages. basically that 64 cpu sgi box was still just running at 1/10th of what it would have with even a friggin java implementation.

Re:C isn't dead...yet. (1)

bertok (226922) | more than 2 years ago | (#39273633)

I phrased that part of my point somewhat poorly: my point was that Erlang looks good to programmers used to shitty languages like PHP. Erlang itself is a good language that is well designed for a specific task.

When you're used to using only a single blunt instrument, everything looks better in comparison, even a tool that's still not the appropriate one for the task at hand.

Re:C isn't dead...yet. (3, Insightful)

Viol8 (599362) | more than 2 years ago | (#39273453)

"There are lots of things in C that make it very difficult to get good performance when you go beyond about 16 threads"

What on earth are you on about? The language has nothing to do with threading, thats down to the OS. The pthreads API on unix scales to any number of threads and if the threads arn't being spread evenly among cores than thats down to a problem in the OS kernel , not the C library.

Also I suspect Erlang is a managed language and would therefor probably be pretty hopeless when used for multi process as opposed to multi threaded.

Re:C isn't dead...yet. (4, Informative)

TheRaven64 (641858) | more than 2 years ago | (#39273463)

What on earth are you on about? The language has nothing to do with threading, thats down to the OS

Nonsense. Well, sure, if you have 1024 threads doing totally unrelated things then the language doesn't matter, but then you may as well be using separate OS processes and getting some isolation for free.

Back in the real world, threads need to communicate and they need to share data. How the language represents this has a massive impact on scalability.

Re:C isn't dead...yet. (5, Insightful)

alex67500 (1609333) | more than 2 years ago | (#39273249)

Ideally, programming should be a playground accessible to all, not like today where it's more of a military discipline camp accessible to all.

I very strongly disagree. Good programming can't allow for lack of discipline. People who go for more "elaborate" languages, with loads of libraries available, should be forced to understand what goes on behind the scenes.

I remember a researcher in a biotech company I used to work for, who tried to get help on forums on the Internet, and published parts of her ruby code (she'd had a 4 hour lessons of ruby once at university). The code included (read-only) account passwords to a research database and her own AD password in the company. Plus the variable names left little doubt as to what she was working on at the time.

Bottom line is: she didn't know what she was doing, but someone trusted her with code, and put the company's research at risk. So 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.

Re:C isn't dead...yet. (4, Insightful)

durrr (1316311) | more than 2 years ago | (#39273413)

I did not advocate abolishing good coding practice or the "hard" languages, or intelligent thought.

I mean there ought to be a programming language my little sister could use casually. An intially level and smoothly steepning ramp to ease users into the world of coding. Not the current case where it's pretty much a solid veritical wall that is only slowly chipped down.

Example of inexperienced people doing stupid thing with professional grade stuff is common, your example is equivalent to some dense person in a workshop that ruins some woodworking tool by putting metal it in. Which is not an argument for banning all entry grade powertools. It's just an anecdote about a stupid guy, or girl in your case.

Mod parent up (2)

Viol8 (599362) | more than 2 years ago | (#39273425)

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

Re:C isn't dead...yet. (-1)

Anonymous Coward | more than 2 years ago | (#39273123)

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.

Ummm, no. The implementation is fundamentally a turd. [ruby-lang.org] .

Re:C isn't dead...yet. (0)

Anonymous Coward | more than 2 years ago | (#39273185)

I meant language semantics, implementation that's another story :) .

Popularity... (0)

Anonymous Coward | more than 2 years ago | (#39273023)

Yes, new languages come from "lone programmers". Academic people basically suck at making languages popular, which is why languages like PHP are incredibly popular depite offering litte more than "being good enough" (what a feature...) and repeating mistakes from the past.

oh! (0)

Anonymous Coward | more than 2 years ago | (#39273065)

was just what was missing! now that we have almost everything done by people who knows shit about that domain (ie: music), we'll have computer languages designed by people who understand shit about programming logic. COOL!

They are not really new either (2)

DarkOx (621550) | more than 2 years ago | (#39273077)

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

Re:They are not really new either (1)

TheRaven64 (641858) | more than 2 years ago | (#39273157)

slight twists like Ruby where everything is a object even things like literal ints

Uh, slight twists? You mean something Ruby copied from Smalltalk, i.e. the first object oriented programming language? That's not a new feature or a twist, that's a return to older ideas. Ruby is Smalltalk with some extra convoluted syntax tacked on top.

Re:They are not really new either (1)

nsupathy (515587) | more than 2 years ago | (#39273391)

Smalltalk, i.e. the first object oriented programming language?

Simula is the first object oriented programming language

Re:They are not really new either (1)

TheRaven64 (641858) | more than 2 years ago | (#39273617)

No, Simula was the first class-based language. This is not the same thing.

Re:They are not really new either (1)

borgar (31365) | more than 2 years ago | (#39273499)

Just to keep the record straight, Simula 67 is considered the first object oriented programming language.

Re:They are not really new either (1)

TheRaven64 (641858) | more than 2 years ago | (#39273639)

Depends on who you ask. If you ask Alan Kay, who invented the term 'object oriented' then he disagrees, and I'm more inclined to take his word for it than anyone else. Simula had classes (which are also in Smalltalk, but not required for object orientation, as Self showed), but it did not have the late binding and message passing required for an object oriented language.

Reinvention of LISP (2)

Compaqt (1758360) | more than 2 years ago | (#39273079)

> '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 [c2.com]

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

Re:Reinvention of LISP (0)

Anonymous Coward | more than 2 years ago | (#39273101)

(they '(are {afraid [of (all the brackets)]}))

(though in reality, it's mostly not number of brackets, but their position)

(here, count them)

{define (foo x) (if x (g x) (f)) } ; Valid Racket Scheme

function foo(x) { if (x) g(x); else f(); } // Valid JavaScript

Re:Reinvention of LISP (1)

icebraining (1313345) | more than 2 years ago | (#39273211)

Now try running Racket Scheme on a browser without addons.

Re:Reinvention of LISP (0)

Anonymous Coward | more than 2 years ago | (#39273407)

LISP is dead (or at least, resting, after a very long squawk) because practical implementations have a monolithic philosophy (the whole program is in LISP) rather than bowing to the same pressures that every other language bows to in that you might maybe one day need to call some code not written in the source language.

I love LISP, I think it's the most beautiful, powerful, awe-inspiring language ever devised. Do I use it for practical purposes? Hell, no. One project it's unsuitable because I need a lot of SIMD code; one project I can't use it because I need to call Direct3D; one project I can't use it because I need to run on iPhone; one project I can't use it because I need to subclass things in MFC; and so it goes, on and on. The list of two-week jobs I could do in four weeks in LISP by writing bindings is huge!

And if I did write bindings, for which LISP am I writing them? You can't contribute "to LISP". You can contribute to clisp, or Corman Lisp, or SBCL, but not all at the same time.

Re:Reinvention of LISP (0)

Anonymous Coward | more than 2 years ago | (#39273441)

If using the JVM is not an issue, Clojure might be a good option for you, given that it is a LISP and can use Java libraries.

Re:Reinvention of LISP (1)

mikera (98932) | more than 2 years ago | (#39273515)

The future of Lisp is with languages like Clojure that avoid the monolithic approach and happily embrace and extend the Java ecosystem.

This is why Clojure (and and other Lisp that takes a similar approach) will have a huge advantage - you get the power of Lisp *and* a great library ecosystem.

Re:Reinvention of LISP (0)

Anonymous Coward | more than 2 years ago | (#39273631)

I think it is naive to believe that LISP is strictly superior to all other language famillies. Sure, LISP-style meta-programming (code is data) is extremely expressible, but there are other issues than expressibility which must be considered in a programming language, such as efficiency and safety. One traditional way of increasing efficiency and safety is static typing, which seems very difficult to practically combine with a LISP, giving other language families an edge. Can those disadvantages of LISP be solved? I think that is an open question. Efficiency has been improved by advances in hardware, software, compiler and VM technology. And safety can for instance be somewhat improved by a stricter focus on functional programming, such as seen in Clojure with immutable data structures and safe language primitives for concurrent and parallel programming. But whether those advances are sufficient remains to be seen.

Personally, I prefer languages that provide static typing. Being able to disprove certain bad behaviours if I design my program properly is nice. There have been many advances in programming language design that has increased the expressivity and productivity of languages without excluding static typing. For instance, with type inference, the productivity penalty of static typing is lessened considerably. But I must admit that newer LISPs such as Clojure does seem attactive.

Wrong premise (5, Informative)

Anonymous Coward | more than 2 years ago | (#39273093)

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

Re:Wrong premise (5, Insightful)

Anonymous Coward | more than 2 years ago | (#39273191)

By "from academia" they probably meant just "pure and untainted by worldly matters".

Some time ago, Pacal and BASIC came from professors and were quite popular until recently.

And this one is undeniably "from academia" in literal sense:

History

The design of Scala started in 2001 at the Ãcole Polytechnique Fédérale de Lausanne (EPFL) by Martin Odersky, following on from work on Funnel, a programming language combining ideas from functional programming and Petri nets.[5][not in citation given] Odersky had previously worked on Generic Java and javac, Sun's Java compiler.[5]

Scala was released late 2003 / early 2004 on the Java platform, and on the .NET platform in June 2004.[3][5][6] A second version of the language, v2.0, was released in March 2006.[3]

On 17 January 2011 the Scala team won a 5 year research grant of over â2.3 million from the European Research Council.[7] On 12 May 2011, Odersky and collaborators launched Typesafe, a company to provide commercial support, training, and services for Scala. Typesafe received $3 million investment from Greylock Partners.[8][9][10][11]

Anyways, it's just too opinionated, from his 4 examples - PHP, JS, Python, Ruby - only PHP and JS are really widespread, with Ruby still rather rare and Python somewhere inbetween.

And then there's this pearl:

the languages designed by academics who are obsessed with internal consistency and correctness include a bunch of mostly dead tongues: Fortran, Cobol, Lisp, C and Smalltalk.

TL;DR: This dude doesn't know shit about history (well, and present as well)

Re:Wrong premise (1)

BrentH (1154987) | more than 2 years ago | (#39273655)

And now get off my premises!

what a croc - they never heard of Greenspuns 10th? (1)

intronic (942593) | more than 2 years ago | (#39273099)

did anyone get through all that? I gave up after the intro which I found based on opinion rather than facts.

How many more 'new' languages do we have to wade through until we fintd one with something significantly more interesting than already found in Lisp?

So we have to forever endure individual designers who never heard of http://en.wikipedia.org/wiki/Greenspun's_tenth_rule [wikipedia.org] ?

Re:what a croc - they never heard of Greenspuns 10 (1)

serviscope_minor (664417) | more than 2 years ago | (#39273193)

How many more 'new' languages do we have to wade through until we fintd one with something significantly more interesting than already found in Lisp?

Sooner or later, everyone will realise LISP is the best language (Since 1985 (tm)).

Lisp is wonderfully flexible, but the trouble is it has not syntax and you basically write your program as an AST (there's a reason for the A in AST in most languages).

There's no parser for nice syntax, so you basically have to do undo the process of writing it in AST notation in your head to understand semantically what's going on.

To me and many other people this makes it really a pain in the neck to read and therefore hard to use. It puts too much of a load on the programmer.

The concrete syntax of other languages makes them much easier to read (and therefore write/debug). Sometimes, the benefits of being able to happly mess with the tree before running the program outweighs the benefits of being LISP. As other languages get better and more expressive, the times when the flexibility of LISP is a benefit get fewer and fewer.

The virtue of solving your own problems (4, Insightful)

jholyhead (2505574) | more than 2 years ago | (#39273129)

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.

Article contians junk (5, Interesting)

serviscope_minor (664417) | more than 2 years ago | (#39273155)

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

Re:Article contians junk (1)

mapkinase (958129) | more than 2 years ago | (#39273505)

>And major important packages are still written in FORTRAN.

Like what. I love FORTRAN as any other scientist that grew up in 70s, and there are a lot of wonderful and honorable computational biology programs in FORTRAN but I haven't heard of anything new being written in FORTRAN.

The package I worked with in 90s was transformed into f95, but this is hardly new.

Give us some examples of new stuff written in FORTRAN

Re:Article contians junk (2)

serviscope_minor (664417) | more than 2 years ago | (#39273529)

Like what.

Well, LAPACK, which is central to quite a lot of things, for one. It's not new, but development is in no way static either, especially with SCALAPACK, etc.

I dodn't mean large new widespread things are being developed, but there are important things which are undergoing continuous development.

Also FORTRAN is best at maths which rules it out for quite a bit of popular things. Certainly supercomputer people still work in FORTRAN for new stuff from time to time.

Most visible programs don't do mathematical heavy lifting, and when they do, it's well hidden. Doesn't mean it isn't around, though.

Re:Article contians junk (1)

mapkinase (958129) | more than 2 years ago | (#39273523)

>And COBOL being an academic language

and

>Languages designed by academics

are essentially two opposite statements (that both can be true).

First means that language is _used_ mostly by academics

Second means that language is _created_ by academics.

Re:Article contians junk (2)

serviscope_minor (664417) | more than 2 years ago | (#39273609)

are essentially two opposite statements (that both can be true).

And both can be false :)

Such as in the case of COBOL.

In fact COBOL is the perfect example of a language that was designed to be easier to use (I doubt the concepts of consistency and correctness for programming languages had been crystalized into something so formal by that time). Which is why it proved to be incredibly popular for many years.

Re:Article contians junk (0)

Anonymous Coward | more than 2 years ago | (#39273669)

Except that COBOL is neither. Author does not know her history. Article is junk.

All I want is one GOOD programming language. (1)

blcss (886739) | more than 2 years ago | (#39273177)

A programming language that doesn't have any irritating flaws or omissions, that's all I want. Am I asking too much?

Okay, maybe two. One optimised for system programming to replace C, and another, higher level, for applications. Give them both very similar syntax and semantics, except where differences are called for by their different purposes.

Instead, we get dozens upon dozens of languages that are distinguished only by their various flaws, limitations and arbitrary differences in syntax and semantics. Why? Is no one even TRYING to get it right?

Re:All I want is one GOOD programming language. (1)

jholyhead (2505574) | more than 2 years ago | (#39273233)

Programming languages are tools. You pick the best one for the job, but no language is every going to be ideal for every possible application. It would be like a builder saying 'all I want is one good screwdriver'

No one ever designed a language intending for their to be flaws or omissions.

Re:All I want is one GOOD programming language. (0)

Anonymous Coward | more than 2 years ago | (#39273341)

Programming languages are not like tools at all. A tool serves a purpose. A programming language represents the solution of a set of problems.

In your analogy, the problem is "mechanical assembly", and the set of problems is "manipulation of physical objects". The screwdriver is just one function within one library.

I'm sorry but... (2)

blcss (886739) | more than 2 years ago | (#39273671)

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.

It's the libraries and frameworks, stupid (1, Interesting)

Anonymous Coward | more than 2 years ago | (#39273189)

We don't really need any new languages. We need libraries and frameworks that are simple, flexible, minimalistic and don't force you into their own unintuitive way of doing things just so they can claim to have cobbled together 300 design patterns into a buzzword compliant mess. All the libraries and frameworks are complete ass. Java and .NET, C and C Sharp. All crap. We've actually gone backwards in the last 15 years. It use to be relatively easy to put together a program that did simple IO and database work. Now you have to create mappings and configuration that makes things slow and cumbersome. The solution when you get bogged down? Lightweight cobbled together languages that can't scale for shit. When I was programming int he mid 90s it use to take 2 hours to prototype a screen to show a customer. Now you're lucky if it takes a week, and you spend another week on test cases that have less to do with actually being useful than meeting some damn coverage quota. Programming, like most things has regressed in the last decade and a half.

Compilers (0)

Anonymous Coward | more than 2 years ago | (#39273209)

I am still wondering why there are such huge differences in performance between the languages. We should have gotten to a point now where it doesn't matter what language/design pattern/paradigm you employ to solve your particular problem, therefore the language of choice would be the most legible/reusable etc. The ideal should be not to worry about the how and focus on the what; an application developer should focus on his application's functionality. Any specific optimization for whatever platform should be done by the respective compiler, i.e. should be only the concern of the programmers that write the compiler. There is no real reason why something written in Python or Ruby couldn't be compiled to a binary with the same performance as something written in C/C++.

Compiled vs. scripting languages (3, Interesting)

Lazy Jones (8403) | more than 2 years ago | (#39273221)

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?

Re:Compiled vs. scripting languages (0)

Anonymous Coward | more than 2 years ago | (#39273623)

Go is not carefully crafted.

"coercing developers" (1)

Daniel Dvorkin (106857) | more than 2 years ago | (#39273223)

So is that where someone puts a gun to your head and says "develop in my new language or else," or where you sit down to try out a new language only to discover that it's changed you into a completely different type of developer?

Re:"coercing developers" (3, Funny)

jholyhead (2505574) | more than 2 years ago | (#39273235)

You've never been to a Rails convention have you?

Re:"coercing developers" (3, Funny)

Anonymous Coward | more than 2 years ago | (#39273289)

No. As a woman, I'm pretty sure I'm not allowed to attend.

How coercing works (1)

blcss (886739) | more than 2 years ago | (#39273691)

"You code in the language we tell you to, or you're fired."

Screw this, I'm gonna go look for another job.

So you go on dice.com...

"You code in the language we tell you to, or you don't get hired."

horses for courses (5, Insightful)

HarryatRock (1494393) | more than 2 years ago | (#39273243)

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.

Re:horses for courses (2)

JoeMerchant (803320) | more than 2 years ago | (#39273715)

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.

Hmmmph.... I guess that's what I've been doing with .XML (and, things very much like .XML before it was named as such) all these years.

True creation is from a person alone, usually (2)

hcs_$reboot (1536101) | more than 2 years ago | (#39273323)

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.

Languages (1)

Anonymous Coward | more than 2 years ago | (#39273331)

You have to keep an open mind about things like this. I can see where the person comes from... PHP is always getting ragged on by the more seasoned programmers who can't get over themselves, but lo and behold, it's used in practically every damn website on the internet and then-some. So it's apparently doing something right--and PHP is still pretty young.

It's great to be an old fart with skill and experience. It's great to be young and full of ambition... But both fail every time when they close their minds off to new concepts and ideas. You may think that one programming language is the same as the other 3 or 4 you've recently learned through the past however many years, but chances are you're not paying attention enough to see something that would otherwise make you think differently.

(But I'm not sure if these languages come from designers... I'm sure some designers might've had their hand in them, but chances are most if not all had at least SOME programming experience. I mean, c'mon, you don't create languages without having that kind of experience.)

Translation: (1)

Anonymous Coward | more than 2 years ago | (#39273365)

For all of you that don't want to spend a minute reading this shit:

"Computer Science is boooooring! Look at me! I'm a designer!!! I'm cool!"

what does not? (2)

mapkinase (958129) | more than 2 years ago | (#39273481)

>New Programming Languages Come From Designers

What does not nowadays?

familiar and unfamiliar languages (1)

Black Parrot (19622) | more than 2 years ago | (#39273571)

The summary lists several popular languages as examples. Do her results hold if you include less popular, exotic, and experimental languages?

Is she right? (1)

JoeMerchant (803320) | more than 2 years ago | (#39273685)

'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?

Absolutely on point #1 - what dope smoking communist closet did she just stagger out of to come up with point #2? If it works and you like it, use it.

Of course, of the languages listed (PHP, JavaScript, Python, Ruby), I've never done anything "real" in any of them (meaning, sustained development & support > 6 man months) though JavaScript is trying to weasel its way into my Qt world via Quick....

I dont need to to learn another language just yet (1)

Anonymous Coward | more than 2 years ago | (#39273687)

10 PRINT "Hello, world!"
20 GOTO 10

I'm still waiting for this to finish running so I can move on to lesson 2.

So efficiency is no longer a worthy characteristic (3, Interesting)

Jawnn (445279) | more than 2 years ago | (#39273697)

FTA:

...marred them with ultra efficient syntax in the name of hardware...

I stopped reading right there.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?