Do people really only programme in one language? The simple act of connecting to a database and retrieving data by definition requires knowledge of 2 languages. What I think people do do, is silo themselves onto specific technology stacks (e.g. Microsoft solutions).
There are one-stack programmers that use only Java/C# with an ORM and all the SAP ABAP developers. Some seem to prefer such jobs, I am not one of them, but to each his own.
I'm shocked you're asking that question. Most programmers are vocational and work for corporations. Most corporations try to force standardization. As a result, most programmers are significantly stronger in one language/platform than any other (whether they have any experience in others or not, which they usually will).
As a dumb example, when XMLHTTPREQUEST hit the streets, it was a paradigm shift in enterprise, but a pretty easy one for web developers to add to their toolbox. Years pass.... When everything became javascript, that was much harder, especially for the .Net folks who came from a VB6 background rather than a pure HTTP/TCP/CGI background. Lots of companies are still in infancy with adoption of modern front ends, mostly because their programmers are not polyglots and actively resist learning new things... and you can't just abandon hundreds of legacy apps through hiring better educated, modern web developers with the limited budget most companies have.
A few years ago we made a decision to shift from a .Net (+MSSQL+JQueryUI) stack to a Java stack, mostly for licensing cost avoidance after MS raised the price of SQL Server dramatically with 2012. More than three years later, >90% of our internal apps are still .Net and only a handful have been released on our new preferred stack (Java/PostgreSQL/Bootstrap/Angular) and probably only 10% of the programmers are competent enough to work independently using the new tooling.
This sad state is an area where there's a lot of naivete among young programmers and startups. The corporate world just doesn't work in remotely the same way. ... ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.
I'm shocked you're asking that question. Most programmers are vocational and work for corporations. Most corporations try to force standardization. As a result, most programmers are significantly stronger in one language/platform than any other (whether they have any experience in others or not, which they usually will).
As a dumb example, when XMLHTTPREQUEST hit the streets, it was a paradigm shift in enterprise, but a pretty easy one for web developers to add to their toolbox. Years pass.... When everything became javascript, that was much harder, especially for the .Net folks who came from a VB6 background rather than a pure HTTP/TCP/CGI background. Lots of companies are still in infancy with adoption of modern front ends, mostly because their programmers are not polyglots and actively resist learning new things... and you can't just abandon hundreds of legacy apps through hiring better educated, modern web developers with the limited budget most companies have.
A few years ago we made a decision to shift from a .Net (+MSSQL+JQueryUI) stack to a Java stack, mostly for licensing cost avoidance after MS raised the price of SQL Server dramatically with 2012. More than three years later, >90% of our internal apps are still .Net and only a handful have been released on our new preferred stack (Java/PostgreSQL/Bootstrap/Angular) and probably only 10% of the programmers are competent enough to work independently using the new tooling.
This sad state is an area where there's a lot of naivete among young programmers and startups. The corporate world just doesn't work in remotely the same way. ... ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.
> ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.
I've been in exactly that situation, working on a small 'startup' team inside a large, traditional organisation. The friction between the 'old' and 'new' camps was heartbreaking.
While I'm certainly stronger in one language I'd say it's quite normal to use at least 3 programming languages daily. As a Unix guy it's even more. If I just want to write a Python hello world I need to know some Python, some Bash, some Vimscript, some Terminal I/O. Many of my projects also have Makefiles, additional bash scripts (which includes SED and AWK besides Bash). Interaction with databases, APIs, JSON or XML or INI configs, HTML, etc is also common. And let's not forget that most systems that have grown over the years have a few DSLs to interact with their tools.
So before I finish my first coffee I've probably used 6 languages already on a typical work day. I think most coders in my company are fluent in at least 10 programming (&related) languages. And while our software development team is certainly better than my last gig I still hope it's not the top of what software dev teams can be.
And your most prevalent point is that company enforces some language usage. It's often not the same if you switch. So if you have more than 5 years you probably can increase the typical programming language fluency about 50%.
Also your example about switching stacks. Your first stack had .Net, C#, SQL, JS and JQuery. Now you at least sometimes also use Java, and whatever Bootstrap/Angular require.
I know exactly what you mean and I agree, but your scenario doesn't cover most enterprise web developers, who likely live in Visual Studio or Eclipse/NetBeans/IntelliJ 95% of their day, especially if there's strict separation of duties and they aren't allowed to directly touch the DB server/admin console.
I got fed up with this state of affairs a few years ago and stopped looking for .Net or Java developers and started looking for self-described hackers, assuming that would increase the odds that they had some passion for programming and could/would/had pick up whatever tools they needed for the job. It has worked well.
As an aside, though, especially in countries like India, Brazil, Mexico, Chile, Bulgaria, Poland, and others which are low cost recipients of outsourcing dollars, "software factories" are common, and in places like this it absolutely is common for an individual programmer to literally spend their time all day, every day doing the same one type of thing. Imho, the higher the CMMI number, the worse this gets (the pinnacle is the "just write a function to pass this test. No, it doesn't matter what it's doing or what this software is for. Just pass the test.", where developers on the front line are plug & play cogs who don't even know what they're working on).
I don't live in startup world, but some stuff comes over the transom and lands on our desks. In a given month I might work in PL/SQL, T-SQL, JavaScript, VB.NET, C#, and maybe Perl and Python. Am I stronger in some than others? Absolutely.
Some people are not only limiting themselves to one set of technologies, but are actively hostile to anything that's not a part of their comfort zone. I'm sad when I think about it.
Formally defining is always tricky. For example, I hate seeing "C/C++" and would assume by proxy of the equally absurd but rarely used "C/Objective-C" that I have magically become a C/Objective-C/C++ programmer.
I would consider a polyglot as able to express a full domain of ideas in multiple languages. (For example, knowing latin for biology or religious recitation doesn't make you a normal polyglot, while being able to use it at the breakfast table does.)
So, only if you are one of the few who regularly enjoys the thrill of forcing SQL to do your general computations, would it count in my book towards making you a polyglot in the context of general purpose computing. Similarly, how you choose to use shells would determine whether they count and whether they are each distinct.
I don't work in web development, and write 99.99999% of my code in C++. Every now and again I have to write a config script in batch, but other than that yes
I know a really smart guy who refuses to do anything other than Java. Baffling. I get that he really loves Java, but there's so much other cool stuff out there!
I know people who only know one language - some Java, some ActionScript... I think it can be easy to get comfy and not bother learning new languages. After all, Blub is enough for what they do, why would they bother spending time learning a new one?
The irony is that one of my Java friends told me that he could pick up any language on a need basis, and that I was ignorant for not knowing design patterns such as Factory, Visitor, Observer/Observable, etc.
What is a Polyglot programmer? A programmer who speaks more than his native language (e.g., for me it's German, English, Chinese)? A programmer who codes in more than one language?
Good conference to have in general. I'd suspect most programmers have a natural interest for different languages/paradigms but practically using them in concert often reveals subtle problems.
I have a decent background in Prolog (hardly an expert) and know it's often a good tool for the job but often shy away from using it regardless.
I hope the "Erlang in multi-lingual systems" talk (all of them for that matter) will be available later :)
"Why should you learn to program Commodore 64 this year?" sounds like the exact kind of talk I'd enjoy.
Prices seem very fair and I love that a %age goes to CodeStarter.
Nothing against this conference but on the "now have", aren't things like OSCON or Strange Loop technically multi-language cross-pollinated programming conferences? Or is the way some of the talks are about joining two languages the unique draw?
PolyConf founder here; the title is indeed misleading, OP exaggerated. There are many great conferences in the same spirit that existed before. And Strange Loop is our primary inspiration.
Programmers should obviously be polyglots to some extent, but the question here is if conferences should be. Basically do you want 14 high level introductions to 14 different languages or 14 presentations digging deeper and deeper in to one specific language? I can certainly see advantages to both.
I'm sure even your golfer might be interested in attending a masterclass that only covered putting.
Good point. A conference where different challenges are solved with different programming languages and the people can present their results and conclude the advantages of a certain language for a certain challenge. I believe this always existed in tech world, but, its good that it is getting formalized as a conference. Maybe it could turn out to be like a programming language expo :)
Only if you think of programming languages as an individual golf-club.
Put it this way: Is there a conference for professional basketball, baseball AND ice hockey players? I'm not even aware of anyone who managed to go pro in two of those, not to mention all three.
Most programmers have a preferred domain and language. Once you scale past a pet project and have a decently sized team, specializations start to occur, especially as the code base grows beyond what one person can hold in memory.
I'm reminded of the saying "jack of all trades, master of none".
Felt the need to remind you whippersnappers about Bo Jackson!
I'd also argue that the skills needed for multilanguage competency as a programmer aren't as mutually exclusive as some of the physical traits needed for pro-level athletic talent.
Somebody has already mentioned Bo Jackson. There was also Deion Sanders (at least I think he made into MLB briefly), and long before either Dave DeBusschere, who pitched a season or two in the big leagues and then had a good career in the NBA.
> Only if you think of programming languages as an individual golf-club.
Which is a more accurate analogy than a whole sport.
> Put it this way: Is there a conference for professional basketball, baseball AND ice hockey players? I'm not even aware of anyone who managed to go pro in two of those, not to mention all three.
Among athletes that have gone pro in more than one sport, baseball/basketball seems to be a not-unusual combination:
Michael Jordan is probably the best known example, but also Danny Ainge, Scott Burrell, Nathaniel Clifton, Dave Dubusschere, Cotton Nash, and Bill Sharman.
Hockey is a pretty rare combination with either baseball or basketball.
"Jack of all trades, master of none" applies to situations where the trades are not terribly related to each other. Beyond a certain basic level of knowledge that applies to everything, being a good plumber isn't going to contribute to your being a good farmer, which won't contribute to your being a good therapist. To be sorta good at all those things and others besides requires that you can not have put in the time to master any of them.
Programming languages are different. For one, they all run on the same hardware. For another, the basics of logic and such are the same. And for the coup de grace, we have the well-known acecdata that learning a language of a significantly different paradigm than your "main" language generally improves your ability to program in your "main" language, to the point where I and others routinely recommend to people that they learn (or implement!) other language paradigms as a routine, expected part of their programming career. Learning Haskell to the point you can effectively use it can and will improve your PHP.
In the programming field, I don't think you can be a master programmer without being a fairly effective polyglot, as a bare minimum requirement. That is, if someone claims to be a master but they only have fluency in one language, even if that language is C++ or something, I would not consider them a "programming" master, only a C++ master.
I think they should be (especially as a polyglot myself), but there's also a lot of pressure to super specialize, and not just from employers. Having a network of like-minded developers is an invaluable psychological and career resource.
I did an interview at QCon this year (http://www.infoq.com/interviews/John-Graham-Cumming-Polyglot) where I was specifically asked about 'polyglot programming'. The question totally surprised me because I'd never thought of myself like that because it doesn't seem to me that it's anything special at all.
Using the right language (and technology say, NoSQL vs SQL) for the job: polyglot shouldn't differ from normal software development - it should be the norm. No one language is the right tool for all tasks.
The counterargument is that each time you add a new language to a project you add complexity, maintenance overhead and interop. problems. Sometimes a good enough tool is good enough and 'buying' the best tool is too expensive to be worth it.
We're not talking about using a tool for something that it wasn't designed to do, rather using a tool for something it was designed to do, but which might still only be second or third best tool for your particular job.
Calling a Common Lisp function from your Rail project might not be the best solution to your problem all things considered even if the Ruby version of that function is both slower and less elegant than the CL version.
In that case it comes down to economics, specifically: do the benefits of using a second or third best tool outweigh the costs of using a tool that is not the ideal. Or would the benefits conferred by using the best tool outweigh the costs.
It doesn't come down to it: it was about economics all along. All these philosophies -- polyglot, more monoglot, etc. -- have costs. You can choose to ignore it sometimes by staunchly recommending one approach over another in generic settings. But the underlying costs are still there.
Although cost/benefit varies based on who is doing the programming. As someone who hasn't worked in CL, debugging CL is going to take an order of magnitude longer than debugging python.
Polyglot approach involves picking the 'best' language for each micro-task and then trying to get them all to interact and play nicely to each other. The more 'normal' approach is to pick 1-3 languages that are "good enough" at all the necessary tasks.
But then wouldn't this require a bigger team with vast expertise or a lot of time compared to a more normal approach, and it will only result in marginal performance improvement, which might not be important in most of the regular projects?
"Best language for a task" isn't meant to refer to performance of code (except secondarily when the task is highly performance sensitive) but rather the language in which it is easiest to accomplish the task.
Does anyone know of a conference that takes a wider view of the job of programming? It has always felt to me like the focus is all about our tools, because tools can look cool, but I'm interested in the process of starting with a messy list of requirements and getting to a completed project in the most successful way, which is often the real challenge in my work.
I'm interested in programming languages. But I don't know if I'm really a polyglot programmer. Ideally I want to be able to rely on a handful of languages for the vast majority of things that I want to do. If I'm being idealistic, maybe it would be possible to rely on two, or even just one.
But this "one" language would probably have the power to express its own EDSLs for different domains and problems (like Lisps). So in effect, maybe you could say it's many different languages in one. So why not just use many different programming languages instead of one extensible one...?
Because general purpose programming languages seem to end up feeling too monolithic when considering that they might only be used by you for that one thing. Consider two approaches: have one language that solves problems in domain A really well. Then you want to solve problems in domain B really well. But the first language is not suited for that. So you use a totally different language for that. Maybe it has its own interpreter/compiler/library and specification. Maybe you need to interoperate between these languages. What do you do? Inter-language communication seems to be in a sorry state, if the Unix philosophy of "strings anywhere" is the prevailing philosophy. I guess we're supposed to use Json now, perhaps? Corba is dead. I saw a thick old book about it where I work and didn't feel inspired.
Compare that to having a language where you can express domain B more clearly in the first language. It turns out that there was some friction and ceremony with expressing domain B in the first language, but being able to express this as as EDSL -- maybe by using something like macros -- gets you 90-100% of the benefits of using a totally new language. Additionally, there is less underlying complexity -- you have one language derived from the other using constructs from the original language. And ideally you can inspect and unfold this implementation; go through a few layers of macros, perhaps. Contrast this with having two wholly separate languages with their own runtimes, libraries and what have you.
This might be a philosophy of building layers of languages -- actually, probably more like a tree. Or maybe a DAG if you have several implementations that express the same DSL. Contrast this with several distinct implementations of monolithic languages, which probably have no knowledge of each other (languages tend to end up shallowly similar, but subtle in many many small ways; probably Turing Complete which makes analysis tricky or at least not straightforward, certainly not reliable...). But when looked at in isolation they look simple; hey this language is really good at expressing X. It doesn't have that many user-visible constructs. Simplicity! Only when you look at the bigger picture, you see how much effort and code that goes into implementing software that is subtly different, only to give the feeling of simplicity when looked at more in isolation from the whole overarching system.
Some people will look at you in horror if you suggest using a powerful and expressive language. A language that can effectively express a lot of 'languages'. They find things like operator overloading disgusting, because code should look uniform and it should be "obvious" what it is doing. Then they choose to involve 12 different programming languages on a project, because that is obviously good engineering practice. The right tool for the job! The fact that they have to learn and deal with so many languages is apparently trivial to them. The difference between the semantics and ecosystems of a dozen different programming languages is simpler then learning about and judiciously using operator overloading, I guess.
I am not trying to diminish the need for programming languages -- they seem incredibly hard to design, and the more I read about them the more I get convinced of that. There are ever more considerations that they can...
Did anybody else read through the (English language) conference website for the (presumably English language) conference, and wonder to themselves, "Why ... Poland?"
I'm not knocking Poland, but it seems strange to have an English-language conference there and not offer anything in the way of explanation for the choice.
I mean, I'm sure there is a reasonable explanation (central location, picturesque setting, low costs, fits the ethos of a polyglot conference, offers the possibility of both a conference and a vacation) but I find it strange that the explanation isn't more visible.
Is an English-speaking conference in a non-English speaking country in this day and age really that weird? I don't get why. I guess conferences tend to have an explanation? Except when the explanation is "obvious" (warm subtropical/"Mediterranean" setting...).
Alternative, glib answer: because computing shouldn't be confined to the US, or I guess places like London in this case.
I don't really understand why it needs an explanation. I presume the organizers are Polish, but the international language of tech is still English in Europe. It's very normal to have international events in English, here.
I spoke at a Ruby conference in Poland some years ago. All the talks were in English, and there were attendees from a number of different countries, including two busloads from Germany. Same thing for conferences in Norway, Sweden, and Spain. It seems that English is the default language for tech conferences in Europe.
That may not always be so, and one day I might be giving my talks in Mandarin. But for now, this does not seem unusual.
You know, it would be very boring if all conferences were held in English-spoken cities, eg. New York or London. You should come to PolyConf and check one Poznan, one of the most beautiful cities in Poland. :)
Set a variable in one language and use it in another, work with multiple languages on the same page, including javascript, and run them all interactively.
Thanks! It's a joy to work on and we are hiring, especially front-end and full-stack web developers. Work on open source on github, use angular, based in NYC.
89 comments
[ 4.5 ms ] story [ 161 ms ] threadAs a dumb example, when XMLHTTPREQUEST hit the streets, it was a paradigm shift in enterprise, but a pretty easy one for web developers to add to their toolbox. Years pass.... When everything became javascript, that was much harder, especially for the .Net folks who came from a VB6 background rather than a pure HTTP/TCP/CGI background. Lots of companies are still in infancy with adoption of modern front ends, mostly because their programmers are not polyglots and actively resist learning new things... and you can't just abandon hundreds of legacy apps through hiring better educated, modern web developers with the limited budget most companies have.
A few years ago we made a decision to shift from a .Net (+MSSQL+JQueryUI) stack to a Java stack, mostly for licensing cost avoidance after MS raised the price of SQL Server dramatically with 2012. More than three years later, >90% of our internal apps are still .Net and only a handful have been released on our new preferred stack (Java/PostgreSQL/Bootstrap/Angular) and probably only 10% of the programmers are competent enough to work independently using the new tooling.
This sad state is an area where there's a lot of naivete among young programmers and startups. The corporate world just doesn't work in remotely the same way. ... ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.
Oh, it's a mad, mad world.
As a dumb example, when XMLHTTPREQUEST hit the streets, it was a paradigm shift in enterprise, but a pretty easy one for web developers to add to their toolbox. Years pass.... When everything became javascript, that was much harder, especially for the .Net folks who came from a VB6 background rather than a pure HTTP/TCP/CGI background. Lots of companies are still in infancy with adoption of modern front ends, mostly because their programmers are not polyglots and actively resist learning new things... and you can't just abandon hundreds of legacy apps through hiring better educated, modern web developers with the limited budget most companies have.
A few years ago we made a decision to shift from a .Net (+MSSQL+JQueryUI) stack to a Java stack, mostly for licensing cost avoidance after MS raised the price of SQL Server dramatically with 2012. More than three years later, >90% of our internal apps are still .Net and only a handful have been released on our new preferred stack (Java/PostgreSQL/Bootstrap/Angular) and probably only 10% of the programmers are competent enough to work independently using the new tooling.
This sad state is an area where there's a lot of naivete among young programmers and startups. The corporate world just doesn't work in remotely the same way. ... ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.
Oh, it's a mad, mad world.
I've been in exactly that situation, working on a small 'startup' team inside a large, traditional organisation. The friction between the 'old' and 'new' camps was heartbreaking.
This was after I'd moved on, but I'm led to believe that things have improved greatly since that change.
While I'm certainly stronger in one language I'd say it's quite normal to use at least 3 programming languages daily. As a Unix guy it's even more. If I just want to write a Python hello world I need to know some Python, some Bash, some Vimscript, some Terminal I/O. Many of my projects also have Makefiles, additional bash scripts (which includes SED and AWK besides Bash). Interaction with databases, APIs, JSON or XML or INI configs, HTML, etc is also common. And let's not forget that most systems that have grown over the years have a few DSLs to interact with their tools.
So before I finish my first coffee I've probably used 6 languages already on a typical work day. I think most coders in my company are fluent in at least 10 programming (&related) languages. And while our software development team is certainly better than my last gig I still hope it's not the top of what software dev teams can be.
And your most prevalent point is that company enforces some language usage. It's often not the same if you switch. So if you have more than 5 years you probably can increase the typical programming language fluency about 50%.
Also your example about switching stacks. Your first stack had .Net, C#, SQL, JS and JQuery. Now you at least sometimes also use Java, and whatever Bootstrap/Angular require.
I got fed up with this state of affairs a few years ago and stopped looking for .Net or Java developers and started looking for self-described hackers, assuming that would increase the odds that they had some passion for programming and could/would/had pick up whatever tools they needed for the job. It has worked well.
As an aside, though, especially in countries like India, Brazil, Mexico, Chile, Bulgaria, Poland, and others which are low cost recipients of outsourcing dollars, "software factories" are common, and in places like this it absolutely is common for an individual programmer to literally spend their time all day, every day doing the same one type of thing. Imho, the higher the CMMI number, the worse this gets (the pinnacle is the "just write a function to pass this test. No, it doesn't matter what it's doing or what this software is for. Just pass the test.", where developers on the front line are plug & play cogs who don't even know what they're working on).
I would consider a polyglot as able to express a full domain of ideas in multiple languages. (For example, knowing latin for biology or religious recitation doesn't make you a normal polyglot, while being able to use it at the breakfast table does.)
So, only if you are one of the few who regularly enjoys the thrill of forcing SQL to do your general computations, would it count in my book towards making you a polyglot in the context of general purpose computing. Similarly, how you choose to use shells would determine whether they count and whether they are each distinct.
Back when I was learning, I had Timex 2068 Basic and Z80.
Then at technical school, each class had its own programming language.
Followed by CS degree, with loads of programming languages.
First job, TCL, C, C++, JavaScript, C#, Java, SQL dialects.
Every single job afterwards required proficiency in multiple languages, even JVM/.NET (interaction with OS, languages that target those runtimes).
Timex's Basic really only added a few extra commands (on err, stick, delete, free, reset and sound IIRC.) Everything else was identical.
However the demos for the sound chip were great.
The irony is that one of my Java friends told me that he could pick up any language on a need basis, and that I was ignorant for not knowing design patterns such as Factory, Visitor, Observer/Observable, etc.
That would have been... frightening.
I don't think we needed an example in order to understand "speaks more than his native language".
See here http://www.techrepublic.com/article/developers-are-calling-i... for instance
Or here http://radar.oreilly.com/2013/11/polyglot-programming-what-i...
Basically the big G is your friend?
I have a decent background in Prolog (hardly an expert) and know it's often a good tool for the job but often shy away from using it regardless.
I hope the "Erlang in multi-lingual systems" talk (all of them for that matter) will be available later :)
"Why should you learn to program Commodore 64 this year?" sounds like the exact kind of talk I'd enjoy.
Prices seem very fair and I love that a %age goes to CodeStarter.
(disclaimer: the author is my friend, but still highly recommended!)
I'm sure even your golfer might be interested in attending a masterclass that only covered putting.
Put it this way: Is there a conference for professional basketball, baseball AND ice hockey players? I'm not even aware of anyone who managed to go pro in two of those, not to mention all three.
Most programmers have a preferred domain and language. Once you scale past a pet project and have a decently sized team, specializations start to occur, especially as the code base grows beyond what one person can hold in memory.
I'm reminded of the saying "jack of all trades, master of none".
I'd also argue that the skills needed for multilanguage competency as a programmer aren't as mutually exclusive as some of the physical traits needed for pro-level athletic talent.
[1]http://en.wikipedia.org/wiki/Bo_Jackson [2]http://en.wikipedia.org/wiki/List_of_multi-sport_athletes
There are a handful of athletes that have played both pro football and baseball, Bo Jackson probably being the most famous.
Michael Jordan played pro Baseball and Basketball, but was never a good baseball player
Well, a particularly large hand:
If you are even narrower than "pro" and restrict it to just MLB and NFL, there are several dozen [0]
[0] http://en.wikipedia.org/wiki/List_of_athletes_who_played_in_...
Do you have different people in your team: one focused on nginx, one on bash, one on Python, one on PHP, and one on algo design?
> Most programmers have a preferred domain and language.
A preferred domain perhaps. But a preferred language? That smells of sticking to one's (tightly drawn) comfort zone.
I prefer to speak English. Yes, "language is arbitrary", but pointing that out is kind of missing the point, isn't it?
http://en.wikipedia.org/wiki/Bo_Jackson
Not to discredit your argument even a bit, but Michael Jordan (MJ23) had a short stunt with pro baseball away from basketball.
That was so easy man :)
Which is a more accurate analogy than a whole sport.
> Put it this way: Is there a conference for professional basketball, baseball AND ice hockey players? I'm not even aware of anyone who managed to go pro in two of those, not to mention all three.
Among athletes that have gone pro in more than one sport, baseball/basketball seems to be a not-unusual combination:
Michael Jordan is probably the best known example, but also Danny Ainge, Scott Burrell, Nathaniel Clifton, Dave Dubusschere, Cotton Nash, and Bill Sharman.
Hockey is a pretty rare combination with either baseball or basketball.
Programming languages are different. For one, they all run on the same hardware. For another, the basics of logic and such are the same. And for the coup de grace, we have the well-known acecdata that learning a language of a significantly different paradigm than your "main" language generally improves your ability to program in your "main" language, to the point where I and others routinely recommend to people that they learn (or implement!) other language paradigms as a routine, expected part of their programming career. Learning Haskell to the point you can effectively use it can and will improve your PHP.
In the programming field, I don't think you can be a master programmer without being a fairly effective polyglot, as a bare minimum requirement. That is, if someone claims to be a master but they only have fluency in one language, even if that language is C++ or something, I would not consider them a "programming" master, only a C++ master.
Calling a Common Lisp function from your Rail project might not be the best solution to your problem all things considered even if the Ruby version of that function is both slower and less elegant than the CL version.
It doesn't come down to it: it was about economics all along. All these philosophies -- polyglot, more monoglot, etc. -- have costs. You can choose to ignore it sometimes by staunchly recommending one approach over another in generic settings. But the underlying costs are still there.
Anyone who advocates pure monoglot or always using the best tool is not being pragmatic. Decisions should be driven by cost/benefit and not religion.
But this "one" language would probably have the power to express its own EDSLs for different domains and problems (like Lisps). So in effect, maybe you could say it's many different languages in one. So why not just use many different programming languages instead of one extensible one...?
Because general purpose programming languages seem to end up feeling too monolithic when considering that they might only be used by you for that one thing. Consider two approaches: have one language that solves problems in domain A really well. Then you want to solve problems in domain B really well. But the first language is not suited for that. So you use a totally different language for that. Maybe it has its own interpreter/compiler/library and specification. Maybe you need to interoperate between these languages. What do you do? Inter-language communication seems to be in a sorry state, if the Unix philosophy of "strings anywhere" is the prevailing philosophy. I guess we're supposed to use Json now, perhaps? Corba is dead. I saw a thick old book about it where I work and didn't feel inspired.
Compare that to having a language where you can express domain B more clearly in the first language. It turns out that there was some friction and ceremony with expressing domain B in the first language, but being able to express this as as EDSL -- maybe by using something like macros -- gets you 90-100% of the benefits of using a totally new language. Additionally, there is less underlying complexity -- you have one language derived from the other using constructs from the original language. And ideally you can inspect and unfold this implementation; go through a few layers of macros, perhaps. Contrast this with having two wholly separate languages with their own runtimes, libraries and what have you.
This might be a philosophy of building layers of languages -- actually, probably more like a tree. Or maybe a DAG if you have several implementations that express the same DSL. Contrast this with several distinct implementations of monolithic languages, which probably have no knowledge of each other (languages tend to end up shallowly similar, but subtle in many many small ways; probably Turing Complete which makes analysis tricky or at least not straightforward, certainly not reliable...). But when looked at in isolation they look simple; hey this language is really good at expressing X. It doesn't have that many user-visible constructs. Simplicity! Only when you look at the bigger picture, you see how much effort and code that goes into implementing software that is subtly different, only to give the feeling of simplicity when looked at more in isolation from the whole overarching system.
Some people will look at you in horror if you suggest using a powerful and expressive language. A language that can effectively express a lot of 'languages'. They find things like operator overloading disgusting, because code should look uniform and it should be "obvious" what it is doing. Then they choose to involve 12 different programming languages on a project, because that is obviously good engineering practice. The right tool for the job! The fact that they have to learn and deal with so many languages is apparently trivial to them. The difference between the semantics and ecosystems of a dozen different programming languages is simpler then learning about and judiciously using operator overloading, I guess.
I am not trying to diminish the need for programming languages -- they seem incredibly hard to design, and the more I read about them the more I get convinced of that. There are ever more considerations that they can...
I'm not knocking Poland, but it seems strange to have an English-language conference there and not offer anything in the way of explanation for the choice.
I mean, I'm sure there is a reasonable explanation (central location, picturesque setting, low costs, fits the ethos of a polyglot conference, offers the possibility of both a conference and a vacation) but I find it strange that the explanation isn't more visible.
Alternative, glib answer: because computing shouldn't be confined to the US, or I guess places like London in this case.
That may not always be so, and one day I might be giving my talks in Mandarin. But for now, this does not seem unusual.
http://lwn.net/Articles/646594/
What Poznan does have going for it is that it is the economic motor of a very large part of Poland.
Set a variable in one language and use it in another, work with multiple languages on the same page, including javascript, and run them all interactively.
Email me for more info.
I use LiveComment for same purposes.
https://github.com/d08ble/livecomment
http://acpul.tumblr.com/image/116725190130