Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Mark Kretschmann: I make no secret of being a very strong Ruby supporter. In fact I even consciously forced Ruby to be a hard dependency of Amarok; partly for technical reasons, partly simply for using my leverage to promote this language more. For me Ruby programming was an eye opener: it's so smart and wonderful on so many levels, and yet easy to learn. I tend to be vocal about such things, and I openly fight Python (which is of course the antichrist) wherever I can. Give Ruby a try, it's just a work of art, and actually useful. I use it whenever I'm not forced to use C++, and I'm even known for my wilds plans to rewrite part of Amarok in Ruby. Maybe with Amarok 3.0, we'll see :)"
Posted Feb 8, 2008 21:55 UTC (Fri)
by tjc (guest, #137)
[Link] (37 responses)
Posted Feb 8, 2008 22:41 UTC (Fri)
by sbergman27 (guest, #10767)
[Link] (4 responses)
Posted Feb 9, 2008 17:22 UTC (Sat)
by rfunk (subscriber, #4054)
[Link]
Posted Feb 9, 2008 17:27 UTC (Sat)
by nas (subscriber, #17)
[Link] (2 responses)
Posted Feb 9, 2008 19:27 UTC (Sat)
by and (guest, #2883)
[Link]
Posted Feb 11, 2008 14:23 UTC (Mon)
by smitty_one_each (subscriber, #28989)
[Link]
Posted Feb 8, 2008 23:13 UTC (Fri)
by zooko (guest, #2589)
[Link] (4 responses)
Posted Feb 9, 2008 0:32 UTC (Sat)
by njs (subscriber, #40338)
[Link]
Posted Feb 9, 2008 14:57 UTC (Sat)
by Cato (guest, #7643)
[Link] (2 responses)
Posted Feb 9, 2008 17:45 UTC (Sat)
by zooko (guest, #2589)
[Link] (1 responses)
Yes, these are some of the most exciting parts of the Python world to me right now:
These were certainly inspired by CPAN and by Ruby's "rake" tool.
Posted Feb 11, 2008 14:26 UTC (Mon)
by smitty_one_each (subscriber, #28989)
[Link]
Posted Feb 9, 2008 1:53 UTC (Sat)
by dilinger (subscriber, #2867)
[Link]
Posted Feb 9, 2008 6:24 UTC (Sat)
by kripkenstein (guest, #43281)
[Link]
Posted Feb 9, 2008 16:40 UTC (Sat)
by eean (subscriber, #50420)
[Link] (4 responses)
Posted Feb 9, 2008 19:40 UTC (Sat)
by and (guest, #2883)
[Link] (2 responses)
Posted Feb 11, 2008 7:55 UTC (Mon)
by drag (guest, #31333)
[Link] (1 responses)
Posted Feb 11, 2008 14:35 UTC (Mon)
by smitty_one_each (subscriber, #28989)
[Link]
Posted Feb 12, 2008 18:47 UTC (Tue)
by rfunk (subscriber, #4054)
[Link]
Posted Feb 9, 2008 17:52 UTC (Sat)
by rfunk (subscriber, #4054)
[Link] (8 responses)
Posted Feb 9, 2008 21:02 UTC (Sat)
by tjc (guest, #137)
[Link]
Posted Feb 10, 2008 0:41 UTC (Sun)
by jmtapio (guest, #23124)
[Link] (6 responses)
Care to elaborate on that? What is missing from Python that _prevents_
functional programming?
And Python does not _force_ opening up one-liners, but it does promote
clear code. Just google up "obfuscated python" and there will be a
plethora of code examples where "every little action" is not separated.
Posted Feb 10, 2008 16:09 UTC (Sun)
by rfunk (subscriber, #4054)
[Link] (5 responses)
Posted Feb 10, 2008 21:30 UTC (Sun)
by jmtapio (guest, #23124)
[Link] (4 responses)
With regards to lambda I disagree. I find there are very few cases where
even using a lambda at all is an advantage over giving the function a
name. And if you are going to be using statements within the function,
why not go all the way and define that function with a statement? After
the introduction of list comprehensions several years ago I personally
stopped using lambdas, and I do prefer a somewhat functional style
myself.
If side effects bother you, don't use functions that operate in-place.
For example instead of mylist.sort() do sorted(mylist). Note that you do
not have to do something like templist = mylist[:]; templist.sort() as
would have been the case a few years ago. I think it is a good thing for
a language to have both types of operations available because sometimes
there are good performance justifications for using in-place-algorithms.
The first example URL that you gave seems to point to a quite old page.
The examples there would have been valid for some really old Python
versions. The first example could nowadays be written like this:
And calculating the sum of a sequence can be done by callind
sum(sequence) without defining any functions or without any temporary
variables. I would like to again reiterate that Python does not _prevent_
using functional style and it does give quite a lot of syntax and tools
to make it easier, but fundamentally there are always the procedural and
object oriented parts of the language available as well. And the generic
mentality among pythonists is to avoid dense hard-to-read code, even if
it were mathematically beautiful. I used to write much more functional
code in the past until I got more interested making code easy to read for
non-wizard people.
Python does have a ternary operator.
Ruby is often mentioned as better than Python based on something that
Python did not support in the past. For some reason language knowledge
travels very poorly between the two camps and that has in the past years
caused a lot of unnecessary rumors and unfounded claims of
inferiority/superiority. (I am not accusing you per se, I'm just trying
to note that a lot of people over the years have brought up the same
points you did, and most of them have been "fixed" years ago in Python.)
Posted Feb 11, 2008 1:23 UTC (Mon)
by ikm (guest, #493)
[Link] (2 responses)
Posted Feb 11, 2008 6:52 UTC (Mon)
by jmtapio (guest, #23124)
[Link] (1 responses)
That syntax was added in 2.5.0 (released in September 2006). It is in
Debian stable (python2.5) but the default version still has not been
migrated even in unstable.
Posted Feb 11, 2008 11:08 UTC (Mon)
by drag (guest, #31333)
[Link]
Posted Feb 11, 2008 14:43 UTC (Mon)
by smitty_one_each (subscriber, #28989)
[Link]
Posted Feb 9, 2008 22:29 UTC (Sat)
by Nelson (subscriber, #21712)
[Link] (5 responses)
Programming is hard, I think it was Knuth that said that. As I get older, I really appreciate that sage wisdom of that statement more and more. The language seems like such a tiny part of that after a while. I just can't get that excited over the differences in Ruby and Python, I can't think of a problem that one makes substantially easier than the other.
Posted Feb 10, 2008 14:10 UTC (Sun)
by oak (guest, #2786)
[Link] (3 responses)
Posted Feb 10, 2008 15:12 UTC (Sun)
by Nelson (subscriber, #21712)
[Link] (2 responses)
I think what would be more compelling is a very mainstream app written in either language. I was trying to suggest looking at the fruit to compare the greatness. Maybe the most compelling is Anaconda, that's some python that millions of people have used, whether or not they know it. i know large programs have been written in both, I think large size in complexity/code as well as large size in use is what I meant. If they are so much better than, say, C, then why isn't a really common and important part of GNOME or KDE or Firefox or OpenOffice of GIMP written in them? Or some other app? GNOME-Menu could be python or ruby. Surely there must be a substantial advantage if language X is so much better, or are these just vocal community folks that don't produce apps like that? Even the guy who started this said he might use Ruby in Amarok simply to force Ruby in to more common use, why not bang out the whole app in it if it's so great.
If they are such great languages (and I like them both, they are great, for some things) then why would that killer always or only be app be a web app (still neither has anything on PHP there..) in my mind, that'd be the first major limitation and strike, if your language is only good at producing little web apps, then that seems kind of lame when talking about the greatness of the languages, especially compared to so many that do so much more. Is there a good Ruby IDE written in Ruby? How about Python, I know a some things like that have been written but I've never seen it deployed for crap, it seems my wxPython from OpenSuse or Fedora is never quite good enough or something.
Posted Feb 10, 2008 21:28 UTC (Sun)
by oak (guest, #2786)
[Link] (1 responses)
Posted Feb 11, 2008 18:06 UTC (Mon)
by Nelson (subscriber, #21712)
[Link]
So basically, if memory and speed are of a concern, both of these languages may be unsuitable.
The other thing that kind of rubs me with this kind of advocacy is that "ease of development" is placed high on the list but something as complex as a Browser or OpenOffice are sort of out of their range. Is it just me or is there a certain logical flaw to that? Do these languages really ease development if they are only used on a subset of applications that don't require start up speed, frugal memory usage, or any highly optimized portions? It seems to me that they "ease development" on a set of tasks that are pretty easy to begin with (not that that isn't a worthy use) which kind of begs the issue if you ask me. I'm not trying to be too argumentative but if we were to try and compare the relative "power" of Ruby and Python a good place to start might be by looking at the set of applications they are capable of being used for and those which they are ill-suited and looking for overlaps and exclusive portions.
Posted Feb 10, 2008 18:00 UTC (Sun)
by zooko (guest, #2589)
[Link]
Posted Feb 10, 2008 21:28 UTC (Sun)
by muwlgr (guest, #35359)
[Link] (3 responses)
Posted Feb 11, 2008 2:09 UTC (Mon)
by ikm (guest, #493)
[Link] (2 responses)
Posted Feb 11, 2008 19:31 UTC (Mon)
by muwlgr (guest, #35359)
[Link] (1 responses)
Posted Feb 12, 2008 1:07 UTC (Tue)
by ikm (guest, #493)
[Link]
Posted Feb 11, 2008 16:40 UTC (Mon)
by southey (guest, #9466)
[Link]
Posted Feb 9, 2008 3:42 UTC (Sat)
by kjp (guest, #39639)
[Link] (22 responses)
Posted Feb 9, 2008 5:48 UTC (Sat)
by nicku (guest, #777)
[Link] (19 responses)
Posted Feb 9, 2008 10:31 UTC (Sat)
by khim (subscriber, #9252)
[Link] (18 responses)
Can you give a few details explaining why the Perl language is inherently the antichrist? Oh, it's easy, but it's not in any details. Design details can not make the language "antichrist" - no matter how ugly. It's design principle that is evil: the infamous "There is more than one way to do it". Why it's evil ? It's easy: if you are writing something to "use and forget" then "there is more than one way to do it" is good principle: I like that in most GUI programs you can use menus, shortcuts, sometimes mouse gestures and so on. You choose your own style and can forget about other approaches. Programming languages are different. They use constructs to write text. Poems, essays, novels. The fact that there are happy accident (computer can read and execute them) is irrelevant. The main consumer is the next programmer, not computer. Computer is your secretary, stenographer, not consumer. And in this case "there is more than one way to do it" is disaster: every programmer should learn approaches of all other programmers or else he or she can not understand the code. You can try to create lingua franca this way: just combine English, Spanish, Mandarin, Arabic, Hindi, Bengali, Portuguese, Russian, Japanese, German and two dozen other languages and allow the speaker to choose. Is this the way to greatness ? Not at all: you'll just make the combined language unusable. But this is exactly what the Perl does! More: it's not an accident but design philosophy! Gosh. I have nothing against having two or three ways to something - little variety helps in a lot of cases. But to raise disparity and ambiguity to the rank of design philosophy ? Ugh. That's "antichrist".
Posted Feb 9, 2008 16:17 UTC (Sat)
by rsidd (subscriber, #2582)
[Link] (14 responses)
Posted Feb 9, 2008 16:56 UTC (Sat)
by jzbiciak (guest, #5246)
[Link] (7 responses)
Let's ban C then... #include <stdio.h>
Posted Feb 9, 2008 20:52 UTC (Sat)
by tjc (guest, #137)
[Link] (6 responses)
Posted Feb 9, 2008 21:08 UTC (Sat)
by jzbiciak (guest, #5246)
[Link] (5 responses)
Surprised you didn't jump on the opportunity to point out that the latter two loops are flawed, in part because they aren't idiomatic... ;-)
I was actually making two points: The first is that allowing for many ways to approach a problem can be valuable, and second is that mindlessly straying from idioms makes it easy to make mistakes and harder for others to understand your code.
It's like goto: It is very easy to use it to turn your code into spaghetti. At the same time, it's probably a mistake to outright ban its use, as there are times when the alternative is less clear. (Escaping a nested loop comes to mind.)
Posted Feb 10, 2008 7:53 UTC (Sun)
by khim (subscriber, #9252)
[Link] (4 responses)
If there are two (or more) ways to do something (like for and while cycles in your samples) but they are used often in real programs - it's not a big deal: reader will remember both and it's easy to understood both. The constructs usable once per a blue moon must be rejected unless they are doing something which will be impossible or very-very hard to do otherwise. Now about goto: while it's not very useful it's still quite simple to understand because we have "goto in disguise": return. But of course plain old goto is so rare that ban makes sense. But any choice must be justified from reader's position, not from writer's one. This is not how perl chooses the constructs...
Posted Feb 10, 2008 11:57 UTC (Sun)
by filipjoelsson (guest, #2622)
[Link] (3 responses)
Posted Feb 10, 2008 13:48 UTC (Sun)
by nix (subscriber, #2304)
[Link]
Posted Feb 11, 2008 3:26 UTC (Mon)
by pflugstad (subscriber, #224)
[Link] (1 responses)
I use it quite often for things like mutexes, but it can be used in
many other situations - any time you hold a resource in a function
that must be cleaned up when the function exits, including when throwing
an exception.
It's a fairly common design pattern for C++ these days - I think I started seeing it a year or two ago...
Posted Feb 11, 2008 8:19 UTC (Mon)
by nix (subscriber, #2304)
[Link]
Posted Feb 9, 2008 18:02 UTC (Sat)
by nix (subscriber, #2304)
[Link]
Posted Feb 9, 2008 19:48 UTC (Sat)
by jordanb (guest, #45668)
[Link]
Posted Feb 11, 2008 4:59 UTC (Mon)
by ikm (guest, #493)
[Link]
Posted Feb 11, 2008 10:35 UTC (Mon)
by forthy (guest, #1525)
[Link] (2 responses)
Tss, the English language is a lingua franca because the two last
superpowers were Great Britain and the USA. So for two centuries, English
was spoken by the most powerful nations in the world - no wonder it is
now spoken by many people in ex-colonies or allies of these superpowers.
France might think it is a superpower, but its century of power was the
18th. It's power is long past. This century will be dominated by China, and you can expect that
Chinese will be a lot more important at the end of this century than
English. That's just how powers work.
Posted Feb 11, 2008 14:52 UTC (Mon)
by smitty_one_each (subscriber, #28989)
[Link] (1 responses)
Posted Feb 11, 2008 22:50 UTC (Mon)
by man_ls (guest, #15091)
[Link]
Not sure what you refer to with "atonal speech", but if you refer to intonation English and Scottish people certainly speak in a highly tonal way. In comparison, the Spanish (from Spain) or the Russians speak with much less intonation fluctuations. It is only in the US and only in certain areas with massive immigration where accents have been washed out.
As to vocabulary, English speakers always boast of their ample choice of words, but I believe what you really have is excellent dictionaries. In dictionaries for other, more formalized languages only "official" terms spoken by the majority are collected. The huge amount of slang terms which are produced in any geographically dispersed language is mostly lost on them.
In fact the best selling point of English is its almost trivial grammar rules, but you only get to appreciate them when you have learned the thing. So we are left with market penetration, which is of course why we are all learning English like crazy. Not one century ago people were praising French for its expressivity and musicality; at least now we can be honest about it. English (and in particular the US variety) is the language of business and technical endeavors, which is perfectly fine if you ask me.
Posted Feb 9, 2008 18:38 UTC (Sat)
by nicku (guest, #777)
[Link] (2 responses)
Posted Feb 9, 2008 20:17 UTC (Sat)
by chromatic (guest, #26207)
[Link]
Yes, but that means that your team members have to be able to communicate with each other, discuss maintainability issues, and agree on some sort of coding standard, else they'll have a lot of trouble writing code -- as if syntax were the difficult part of understanding existing code. (If syntax were the difficult part of understanding existing code, the mantra for comments would be "Comment what the code does, not why.") Apparently devising loose coding standards is so difficult that some people want the language to enforce them.
Posted Feb 9, 2008 22:58 UTC (Sat)
by krishna (guest, #24080)
[Link]
Posted Feb 9, 2008 19:08 UTC (Sat)
by oever (guest, #987)
[Link] (1 responses)
What's so bad about being antichrist? According to wikipedia
Posted Feb 10, 2008 18:05 UTC (Sun)
by man_ls (guest, #15091)
[Link]
With "X is the anti-Christ" the meaning is probably not profane, but a way to say that X is an enemy and that it must be actively fought. Since there is no need to fight perl anymore, the anti-Christ is indeed C. QED. :D
Posted Feb 9, 2008 14:42 UTC (Sat)
by lmb (subscriber, #39048)
[Link] (7 responses)
Posted Feb 9, 2008 16:42 UTC (Sat)
by eean (subscriber, #50420)
[Link]
Posted Feb 9, 2008 17:29 UTC (Sat)
by rfunk (subscriber, #4054)
[Link]
Posted Feb 9, 2008 20:32 UTC (Sat)
by TxtEdMacs (guest, #5983)
[Link] (1 responses)
Posted Feb 12, 2008 15:18 UTC (Tue)
by ikm (guest, #493)
[Link]
Posted Feb 10, 2008 18:41 UTC (Sun)
by man_ls (guest, #15091)
[Link] (2 responses)
If you want hard numbers, data has been tabulated from function point statistics. Now, function points may not be as precise as they are often sold, and these measures vary a lot; but they definitely give some perspective. Even if a good programmer is proficient in any language in a few weeks, writing web applications in low-level languages or writing graphic applications in assembler is madness. And just try to write a hello-world in Brainfuck.
Now, all of these languages (Ruby, Python, Perl) are in a similar league, so it may be hard to see the differences; but your blanket statement:
Posted Feb 10, 2008 21:15 UTC (Sun)
by i3839 (guest, #31386)
[Link] (1 responses)
Posted Feb 10, 2008 21:40 UTC (Sun)
by man_ls (guest, #15091)
[Link]
Posted Feb 11, 2008 13:25 UTC (Mon)
by icin (guest, #28193)
[Link]
Posted Feb 11, 2008 15:20 UTC (Mon)
by frazier (guest, #3060)
[Link] (5 responses)
Posted Feb 11, 2008 15:45 UTC (Mon)
by aleXXX (subscriber, #2742)
[Link] (4 responses)
Posted Feb 11, 2008 17:10 UTC (Mon)
by frazier (guest, #3060)
[Link] (2 responses)
Distributions in general install too much software by default. Adding dependencies adds to the problem.
The end user isn't going to notice whether the music player is using Ruby or something else to function. They will notice (and wait for) updates from Synaptic (or whatever) come down the pipe for updates on Ruby.
Systems in general run too much software as is. Adding to the problem should see more thought and resistance in my opinion.
Posted Feb 12, 2008 7:49 UTC (Tue)
by aleXXX (subscriber, #2742)
[Link] (1 responses)
Posted Feb 12, 2008 8:57 UTC (Tue)
by frazier (guest, #3060)
[Link]
The thing that bothers me most is the end users. Lots of people, thousands of people, are going to have extra software they really shouldn't need installed because one guy likes it and made it a dependency. We're talking desktop here, and there's going to be a lot of people who aren't dealing with the guts of their system and will work with what, for most practical purposes, gets handed to them.
The decision of adding a library should have a barrier of entry higher than it currently has. Perhaps as Linux desktops pick up in popularity this will occur at the distro level. There's a threshold where it is worth the distro paying someone to rewrite out a dependency vs. the hit to user experience and load on update servers.
In this instance, the people who want added software the most are the ones most likely to be able to add it, and the far more common recipients (common users) are the ones who don't have the ability to remove it. Worse, the users far outnumber the developers.
Ruby seems like a nice choice if the developer has the "I write this for me and if the rest of the world wants it I'll share" mindset, but if he's genuinely looking at the end users, adding an unneeded dependency is a selfish act.
Posted Feb 12, 2008 13:05 UTC (Tue)
by tzafrir (subscriber, #11501)
[Link]
Posted Feb 11, 2008 21:53 UTC (Mon)
by egoforth (subscriber, #2351)
[Link] (1 responses)
As someone who started with BASIC, moved to Pascal and FORTRAN in college, prefers Ada83, and has been programming in C for 15 years, can I solicit a recommendation from practitioners of both languages? I can read and understand most languages, but haven't written in anything besides C, Bash, JavaScript, HTML and EmacsLisp in a long time. Which is better for learning both, sequentially or in parallel? What's the single best teaching reference for each or both?
Posted Feb 11, 2008 23:07 UTC (Mon)
by tseaver (guest, #1544)
[Link]
Posted Feb 13, 2008 20:02 UTC (Wed)
by intgr (subscriber, #39733)
[Link]
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
> I openly fight Python (which is of course the antichrist) wherever I can.
I'd like to see a reasonably unbiased comparison between Python and Ruby. Every one I've read
has been pimping one and dissing the other, either overtly or on the sly.
I know Python well enough to know that I really like it, but I don't know Ruby well enough to
make a fair comparison. Anyone out there without religious affiliation who can make a
reasonable comparison?
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Well, I prefer Python. So don't be surprised that the random thoughts I throw out here favor
it. But I've used both.
They are both dynamically typed languages and have much similarity with each other. In the
Python culture being "explicit" is strongly preferred. Ruby fans tend to like some
implicitness. Ruby looks a bit more like Perl. There are tons more libaries and support for
things like dbus, beagle, tracker, etc. for python. (Just do a "yum list" or whatever and grep
for ruby and python. There *is* no comparison. (I find this to be a significant point in my
work.) If you are doing web development, Rails is more popular than all the Python based
frameworks put together. But in my opinion, Django toasts Rails for quality and good design.
Outside of web development, python is used a lot more and Python programmers are in a lot
greater demand. Python runs circles around Ruby for speed. But neither is a race horse.
Sometimes, the speed of the language is important, and sometimes not. Ruby has a JVM based
runtime "on the way", but it's been "on the way" for years, and last I tried it, the
performance didn't seem that great. With python, you have Iron Python (which is quite fast, I
hear) for .Net integrategration. And Jython, which gives you access to the world of java
class libraries, but is always a release or two behind CPython.
Rails popularity cannot be denied. (Just go to Amazon and type "Ruby On Rails" in the search
bar.) But I suspect that if it *weren't* for rails, people would be saying "Ruby? What's
Ruby?"
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Most of Ruby's libraries are in gems rather than in distribution
packages, and gems don't seem to work well as distribution packages.
JRuby is pretty mature and fast now. And if you want .Net there's
IronRuby too.
It's true that Rails has driven the rise of Ruby, but personally after
being part of that wave I'm more impressed with Ruby than with Rails.
Some thoughts
from someone who knows Python quite well. I think he's relatively unbiased, however.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
I'm also more familiar with python, but the speed argument doesn't seem to
be valid anymore. Benchmarking the same two scripts on contemporary
interpreters on my decidedly non-contemporary 800MHz Athlon yields:
and@glotze:~> python -V
Python 2.4.4
and@glotze:~> time python sieve.py 300000 > /dev/null
real 0m1.121s
user 0m1.092s
sys 0m0.032s
and@glotze:~> ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux]
and@glotze:~> time ruby sieve.rb 300000 > /dev/null
real 0m1.579s
user 0m1.568s
sys 0m0.008s
(yeah, I know python 2.5 is out, but debian stable and gentoo still use
2.4 per default)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
It's dated: Oct 25 2002, 3:59 pm
Possibly a good template for subsequent research...
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
disclaimed: I'm biased towards Python.
Ruby may be a better language. Or it may not be -- I'm not entirely sure. But Python has a
richer library of mature tools. This is the deciding factor for me, currently when I choose
to start a new coding project.
I don't just mean the Python Standard Library, although it is good. I mean also the CPython
interpreter, and the many, many mature, high-quality, well-tested open source Python tools out
there such as the Twisted framework, and, well, just too many to name. See
http://pypi.python.org for starters, or just type "<PROGRAMMING TASK YOU WANT TO DO> Python"
into google.
Note that part of the reason for this cornucopeia is Python's long tradition of re-using C/C++
code instead of rewriting it into Python code. Also, of course, the several mature, high
quality tools to ease and automate re-use of C/C++ code. ;-)
Regards,
Zooko
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
> Also, of course, the several mature, high quality tools to ease and automate re-use of C/C++
code.
Indeed. Ctypes is amazing, and Pyrex, a revelation.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Of course, Perl's CPAN library of modules is still far larger than either Python or Ruby's -
and with Perl 6 it should be easier to use such Perl modules from other languages. It's not
just the existence of libraries with Perl, it's being able to type 'cpan -i Useful::Module' on
any Linux or Windows box - or in the case of Ubuntu/Debian the most useful ones are already
packaged. I think some other languages are doing this as a result of Perl's success with CPAN
- the Python Package Index (PYPI link) is a good example.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
http://aspn.activestate.com/ASPN/Python/Cookbook/
bears mention
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Honestly, I don't understand the "Python is the anti-christ" mentality from Ruby people. When
I'm starting a project, I'll use Ruby if I don't need to collaborate with anyone, because it's
more fun. I'll go with Python if I feel the need to attract other developers (as Python has
*much* more momentum), or if co-workers need to understand it. However, they're both close
enough that switching between the two isn't a big deal.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
I think the "Python is the antichrist" sentiment stems from a sort of sibling envy. Python and
Ruby are similar enough to compete for the same 'niche', and Python has been 'winning' in the
sense of # of people using it, of libraries, integration with other tools, etc. Some Ruby
people resent that, and I can sort of understand them - if Python didn't exist, Ruby might be
where Python is now. Still, I hope that the 'antichrist' sentiment is only held by a minority,
because it is quite unproductive and inappropriate.
Regarding the languages themselves, again, the similarities are fairly big, when you compare
them both to, say, C. Perhaps the main practical difference is, as mentioned above, far more
support for Python with libraries, development of fascinating projects like PyPy, and so
forth. Syntax-wise, the most immediately-noticeable difference is Python's enforced
indentation, which most people either love or hate. Personally, I like it; both Python and
Ruby do well to remove the curly braces popular in other languages, but only Python goes one
step further and also removes the need to close indentations with "end" and so forth. Anything
that makes code shorter is good in my book.
There are lots of other small syntactical differences, that people argue about quite a lot
online, but again I'd stress the similarities.
humor detectors b0rked
I'm amazed by all the comments here. Apparently Mark missed that calling a language the
"antichrist" has become a serious way to talk about programming languages. You guys realize
that the term Antichrist refers to an embodiment of pure evil? The being in Christian
mythology that will bring about the end of the world? Mark was obviously exaggerating a bit.
To some extent its the LWN's editors wanting to stir something up for picking this part of the
interview (is a C++ developer's opinion on Ruby vs. Python that pivotal?), but it's everyone
elses fault for not reading it in the full laid-back context.
humor detectors b0rked
> You guys realize that the term Antichrist refers to an embodiment of
> pure evil?
Only for christians, and of these probably mainly for those of the
american variety. I see this statement in contexts like this more as an
winking way of expressing one's affiliation.
humor detectors b0rked
I donno.
I would figure that almost all Christians, or those who belong to more or less conventional
variations on the faith, believe that Satan is pretty much evil. As evil as evil gets.
It's certainly a interesting term. Something that has more depth to it then just 'the
embodiment of all evil'.
Antichrist refers to the fact (take it the bible context, not saying that you or anybody else
assumes it's fact) that the 'Antichrist' is not 'opposite of Christ' or anything like that.
It's that he wants you to think that he is your savior, that he _is_ Jesus. The Antichrist is
a trick to make you think that he is there to save you from the bad things that happen in the
world.
So in the book of revelations the Antichrist comes shining down from heaven into Jerusalem. He
comes all floating down, all shining with lights and all that sort of thing. He performs
miracles, stops armed conflict, heals the sick, feeds the poor, etc etc. All in a fairly
supernatural (magical-seeming) way. Pretty much what everybody expects Jesus or
$favorite-deity-thingy to do in the end times.
Since most of the world is ignorant of all of this because they don't know the bible or follow
whats going on then they all fall in line behind this false savior.
Hence, the Antichrist. Tricking people into following him rather then the true Christ.
So in a sense what is he actually saying, in a obviously tongue-in-cheek manner, (and whether
he realizes it or not) is that Python programming language is in fact a false idol.. A
deception perpetuated on the Linux-going public. That Python promises to be what Ruby is, and
is able to perform most of the tasks that people think that a OO language should be able to
do.
However the fact (according to Mark "Markey" Kretschmann) is that Python is deceiving people,
turning them away from the one true Ruby. The Ruby that will ultimately save them and provide
them the river of knowledge that will lead programmers out of suffering ignorance and into a
thousand years of fairly productive learning and general success.
Darn that old Antiruby, Python.
humor detectors b0rked
In a word: 'hyperbole'.
You can be a famous hacker, and you can call an operating system "utter crap", but the real
metric is money, irrespective of any architectural purity arguments you'd want to make.
Programming language tensions are the same argument in miniature.
Continuing the oddly apropos religious thread, the Python/Ruby tension boils down to religious
denomination X picking on denomination Y about sacrement Z.
Note that, by the time you're on a JVM, CLR, or parrot, you're really just thumb-wrestling
over choice of syntactic sugar at the parser level.
Aren't Real Programmers supposed to see past the tool-fetishism and focus on the results,
anyway?
picking part of the interview
I read the interview, and it was mostly content-free unless you care about
beer preferences. This was the most interesting part of it.
Python/Ruby
Well, I'm probably more "religiously affiliated" than you'd like, but I
try to be fairly objective about these things....
I was a Perl and C programmer for a long time. I've played around with
Python a bit, and kept getting annoyed by its object model. It's
inconsistent, and required using class methods where I expected to be
able to use object methods. Then there's the seemingly pointless
dichotomy between tuples and arrays; and the limit of one expression
inside a lambda also seems pointless.
I also don't like Python's inability to be programmed functionally;
side-effects abound, and it forces separating every little action into a
temporary variable and another line.
I don't care about the syntax. Much. Significant indentation is fine,
though in Python I do tend to miss having some sort of definite markers
to show where blocks end.
Then I discovered Ruby, and finally found a language with a complete
object model -- *everything* is an object. Ruby is the first language I
used where the OO was complete enough to be both sensible and useful.
Methods can be quickly and easily chained together (though watch out for
potentially nil objects). Functional programming is easy, though not
required.
And I've only scratched the surface of what Ruby is capable of; its
meta-programming capabilities give quite a bit of power.
Basically Ruby has Lisp's power, Smalltalk's OO, Perl's
programmer-friendliness (or better), but it fixes most of the problems of
all of those.
Python has more popularity now because its popularity started earlier
(and because Perl stagnated), and there are definitely major surface
similarities between Python and Ruby (dynamic, OO), but Ruby is capable
of so much more.
As far as I'm concerned, Ruby's biggest problems are its slowness and its
library immaturity. Improving the speed is a major goal of the
developers now, and the next version should have much better speed; in
addition there are other implementations with better speed, including
Rubinius and JRuby. The libraries are quickly catching up to Python,
and if you use JRuby you get the benefit of Java libraries.
Python/Ruby
> the limit of one expression inside a lambda also seems pointless.
> I also don't like Python's inability to be programmed functionally; side-effects abound, and
it forces separating every little action into a temporary variable and another line.
Are either of these issues addressed by Python 3.0? I've googled around a bit, but not found
anything conclusive.
Python/Ruby
I also don't like Python's inability to be programmed functionally;
side-effects abound, and it forces separating every little action into a
temporary variable and another line.
Python/Ruby
Um, you quoted some, and I mentioned another you didn't quote.
1. Lambdas are limited to a single expression.
2. Too many operations have side effects -- they change their argument rather than
returning the changed version leaving their argument unchanged.
3. This in turn requires lots of separating of operations and defining temporary variables
if you don't in fact want the original thing changed.
There's actually a web page I found on programming Python functionally, and it mentions
Python's abilities and limitations in that area (as well as giving some workarounds).
http://scott.andstuff.org/FunctionalPython
(For example, it mentions Python's lack of a ternary operator; tricks with and/or are
definitely obfuscation.)
Another one that gets more to my points, but from a Pythonists's perspective:
http://withoutane.com/rants/2007/01/embrace-the-heresy
"But if you try to write your whole program in a functional style, you always seem to be
going against the grain of the language."
Take a look at the operators (well, methods) in the standard Ruby classes, and you'll see
that support for clear, concise functional programming abounds, with no need for
workarounds or obfuscated-looking code. Ruby combines OO and functional
programming nicely and elegantly, without forcing functional on you.
I do notice, however, that Python has added more support for lists than it had the last
time I delved deeply into it.
Python/Ruby
[x for x in [1,2,5,6,8,12,15,17,20,23,24] if x % 2 == 0]
(For example, it mentions Python's lack of a ternary operator; tricks
with and/or are definitely obfuscation.)
>>> 'foo' if True else 'bar'
'foo'
>>> 'foo' if False else 'bar'
'bar'
Python/Ruby
> Python does have a ternary operator.
> >>> 'foo' if True else 'bar'
>'foo'
> >>> 'foo' if False else 'bar'
> 'bar'
Which version of Python is that? The one I have right now as a system default (2.4.4, Debian
sid) barfs at the given syntax.
Python/Ruby
Python/Ruby
Python 2.5 is certainly a good thing. I am Debian user and habitually specify python2.5 when
working on my own stuff.
Hopefully Python 3000 will be even better.
Python/Ruby
>language knowledge travels very poorly
Ignorance is power, when deriving counter-arguments. ;)
What's to compare? They are both Turing complete, the can both express the same programs.Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
> Except for a few really great Ruby guys and a couple of really great
Python guys the vocal parts of community at large, in my opinion, seems to
think that their tool is a programming panacea in spite of no really
substantial projects of size really being done in either language..
How large should be a program of a substantial size be?
There are for example (UI) applications done in Python with > 100 K-lines
of code (which corresponds to significantly larger C-program), I think
both in Gtk (e.g. Gramps) and Qt. Python is the programming language in
the latest Civilization (IV) game[1]. Zope CMS is done in Python and
there are several projects done on top Zope also (e.g. Plone).
And it's not the only one, there are even Python game programming
environments like: http://www.panda3d.org/
I knew when I said that I'd probably take some flack. There is a lot of substantial and important code written in both in use a lot of places.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
> If they are so much better than, say, C, then why isn't a really common
and important part of GNOME or KDE or Firefox or OpenOffice of GIMP
written in them?
For all of these the reasons should be fairly obvious.
Gnome and KDE: I think the main thing is platform bindings, if the
platform would be done in some given higher level language, how you would
provide bindings for lower level languages?
As to Firefox, JS virtual machine and HTML rendering are performance
critical functionality. Writing VM in higher level language could also
have "interesting" memory usage issues... I think performance are also
issues why OpenOffice and Gimp *core* functionality is in C.
Note that except for Firefox (which extension language is quite
understandably JavaScript), all of your examples provide Python bindings.
In Gnome you can e.g. do panel applets in Python.
You find higher level languages where the ease of development and code
maintainability are more important than their performance. Performance
includes startup speed which on higher level languages is higher due to
need to load more things upfront.
For long running services, startup speed doesn't matter that much. Also,
on servers you don't run that many processes and you just add memory if
it's needed whereas on Desktop too many services taking more memory starts
to be noticeable. That's why higher level languages are more used on
servers and in education.
> if your language is only good at producing little web apps, then that
seems kind of lame when talking about the greatness of the languages,
especially compared to so many that do so much more.
Little? What you consider little? 10 KLOCs? 100 KLOCs? Millions of
lines of code?
There are GNOME and KDE bindings for Ruby and Python and there are some little things done in Python, I'm not aware of any Ruby applets though. I'm not aware of any really standard and common GNOME or KDE things written in Python, just some more fringe kinds of elements, like gDesklets.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Yes, PyPy can use LLVM for a backend. Go have fun!
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Both Python and Ruby, at least in their original native-C implementations, are pretty poorly
thought out in regard to multithreading. Multicore CPUs are steadily becoming things of today,
so initial design flaws of these languages are quite alarming as they are going to make them
useless in the new world. AFAIK, their Java&.Net rewrites (Jython/JRuby/IronPython/Ruby.Net)
use underlying threading facilities so they have more chances to succeed. But such
reimplementations significantly change their original class/modules system also to adapt it to
the underlying platform. As well this reduces their "dynamicity" in some extent.
As to "dynamicity", Ruby feels much more flexible and ductile than Python (the whole Rails
framework is largely built upon these features). But the resulting "overly-dynamic" programs
often consume more CPU time and RAM to run than equally-functional but somewhat dumbed-down
and task-specific implementation in Python.
And the last my word would be about Amarok. I tried to use version 1.4.7 as provided by Ubuntu
gutsy, and it has been capable to eat the whole my CPU (Duron 1800) just sitting idle. You
know, it likes to redraw a matrix of small grey/blue squares on its spectrogram indicator.
Completely useless bling, but this keeps Amarok and X server busy all the time. I would like
this to be turned off by default. Else, so far I prefer xine&mplayer as much lighter
solutions.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
> Both Python and Ruby, at least in their original native-C implementations, are pretty poorly
thought out in regard to multithreading. Multicore CPUs are steadily becoming things of today,
so initial design flaws of these languages are quite alarming as they are going to make them
useless in the new world.
Multithreading is mostly to gain more speed, and these kind of languages are not really
created for speed. If you waste your CPU time already, you can as well waste some wall clock
time as well -- after all, you're supposed to waste just a neglectible amount of time anyway,
or else it'd be stupid to write the program in a scripted language in the first place. The
only realistic use for multithreading in a scripted language I can think of is to run some
other process/blocking syscall and wait for it to finish, and these tasks are handled quite
alright already. Otherwise, if some guy would ever proudly tell me that he had successfully
parallelized his Python program and it now runs two times faster, I'd be rolling on the floor
laughing, even with tears in my eyes, because it's just hilarious!
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
At the same time, other systems using portable bytecode (Java, .Net) throw a lot of efforts
into JIT compilation and runtime optimization (like Hotspot JVM), as well as multithreading
performance (have a look into JDK/JRE sources, you'll notice a lot of low-level tricks there).
What make their developers do so ? In fact, reimplementing your dynamic language in Java
instead of C often allows you to use these processor- and system-specific optimizations
implemented by JDK/JRE developers itself.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Start with JIT first, then do proper multithreading. Guido haven't done the first, neither he
cared much about the second -- apparently, the speed didn't matter to him. For me, it's a sign
of a sane person, a person who understands his objectives. After all, no one is writing JIT
compilers for shell scripts. Actually, I think shell scripting is an outstanding example of
what scripted languages are good for; not that I like shell syntax, implicit vars etc -- but
the idea is just right.
You may want to check out "The Computer Language Benchmarks Game" at http://shootout.alioth.debian.org/
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
No, perl is the antichrist. And I'm never going near it - or anything inspired by it- again.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
No, perl is the antichrist. And I'm never going near it - or anything inspired by it- again.
Okay. Can you give a few details explaining why the Perl language is inherently the antichrist? I enjoy good Perl programming. As with all languages, there are ways of abusing it.
Oh, it's easy
Oh, it's easy
I entirely agree with what you say about computer languages. But as far as human languages
are concerned: the French language is tightly controlled by the Académie Française. It has a
smallish vocabulary and well-defined rules of grammar and pronunciation. The English language
has no controlling authority and freely borrows from languages from all over the world -- so
that the Oxford English Dictionary has 20 volumes and still doesn't cover everything -- and
grammatical rules range from incomprehensible to non-existent. How many people in the world
speak English? How many speak French? How many speak Esperanto?
Similar to English, Perl is still the most widely used of the scripting languages, but I think
that's a first-mover advantage. If Python had appeared first, nobody would have been
impressed by Perl. You are quite right that "there's more than one way to do it" is a terrible
idea for programming languages.
More than one way to do it...
int times_two_a(int x) { return x * 2; }
int times_two_b(int x) { return x << 1; }
int times_two_c(int x) { return x + x; }
int main(void)
{
int i, j;
char buf[3];
for (i = 0; i < 10; i++)
printf("%d times two is %d\n", i, times_two_a(i));
i = 0;
while (i < 10)
{
j = times_two_b(i);
printf("%d times two is %d\n", i, j);
}
i = 0;
do
{
sprintf(buf, "%d", i);
fputs(buf, stdout);
fputs(" times two is ", stdout);
sprintf(buf, "%d", times_two_c(i));
fputs(buf, stdout);
} while (++i < 10);
return 0;
}
More than one way to do it...
The different ways of doing the same thing in your example arise in part from properties of
arithmetic (addition and multiplication) and the binary representation of numbers (bit
shifting). Granted, "for" loops are syntatic sugar, but a useful and common idiom.
More than one way to do it...
It's not a mistake to ban goto... it's not a mistake to keep it...
It's not a mistake to ban goto... it's not a mistake to keep it...
The last time I saw goto in serious use (where last is defined as most recent instance of
coding - not last time I viewed ancient code), was in some DirectX example code (shipped with
DirectX in ca 1999 - so it is a half way ancient, and it is MS being responsible).
Anyway, the way they used it was to skip to a dtor-like section of a function. Not
particularly elegant, not particularly object oriented, but not outright heresy either -
which, since I thought it _was_ outright heresy confused me.
Ever since, I have been trying to solve it in more elegant ways (using C++). Nested ifs,
functors, exceptions, you name it - it's not very elegant either. Anybody know a better way to
free resources in a C++ function when failing? (I tend to think the nested ifs are the least
evil - but they do eat the line width at an alarming rate.)
EORant ;)
It's not a mistake to ban goto... it's not a mistake to keep it...
The Linux kernel uses goto in this manner all the time. It's useful if you
can't do it by splitting the non-ctor-dtor stuff into a separate function.
Are you looking for RAII?
freeing resources
freeing resources
In C++ it's probably two decades old: I know it was landing in published
textbooks ten years ago.
I didn't see it in C outside the Linux kernel before about 2004.
Oh, it's easy
The Academie Francaise likes to think that it controls the French
language. (This is about as accurate as saying that the Pope controls the
world's Christians.)
Oh, it's easy
The Acadamie has about as much control over how French people speak and write as the MLA has
over Americans, and while English has a larger vocabulary, French has a much larger collection
of tenses so that comparison isn't at all relevant.
I don't know how useful it is to compare a formal programming language to a natural language.
ALL natural languages are as much a collection of cultural references, idiomatic expressions,
notions, subtexts, and connotations as they are a grammar framing a set of semantics. That is
because that is how humans naturally communicate with eachother, but it is very imprecise and
not at all suitable for a machine interface.
I think setting out to try to 'deformalize' a computer instruction language to make it more
like a natural language is, essentially injecting imprecision and complexity into it such that
the semantics eventually are no longer reasonably deterministic and the behavior of the
machine becomes difficult to control and predict.
Oh, it's easy
> How many people in the world speak English? How many speak French? How many speak
Esperanto?
You know, I speak English not because I love it so very much and want to marry it, but just
because I have to, it's better at solving my particular communication problems with the
particular audience than other languages are, no matter how simple or hard it is. If I had to
pick a language from the same group, I'd rather pick German -- I like the way it sounds. But
it's not about choosing a language, it's about choosing an audience which you want to
communicate with.
With the programming languages, the situation is somewhat different -- while the language is
still a way to communicate with other people, they are limited to the people who are involved
in the same project, and as such, the less their number is, the easier it is for you to pick
the language you actually like. If you're going solo, you can use whatever that pleases you.
But if you're joining linux kernel development, you have to do C with the specific coding
styles and practices.
With spoken languages you're like doing one big project in English, one big project in French,
etc. So, yes, it's different. While with spoken languages we aren't really in a position to
choose, with programming languages we still can choose, and have criteria of our own.
Oh, it's easy
Oh, it's easy
Your idea may carry out, but keep in mind that key features of English are:
-Roman alphabet
-atonal speech
-massive vocabulary
-extensive market penetration
Coming 'round to the Department of Unfair Analogies, English==Python and Ruby==Chinese. Not
sure what the Rails equivalent for Chinese is, but the sooner they work that out, the better
their chances of growing their market share.
The roman alphabet was shoehorned into English and it feels -- that is why its devilish pronunciation is a major barrier to learners. In comparison, Spanish, Italian or German are spoken much as they are written, and even French has more or less rigid rules.
[OT] English features
Oh, it's easy
It's design principle that is evil: the infamous "There is more than one way to do it".
Yes, though it enables us to write code that meets this aim:
"Make it concise, have it explain itself, and document it." All our team's code seems to converge to a very similar style, where conciseness with readability are paramount. But yes, your comments are reasonable. Thank you.
Oh, it's easy
All our team's code seems to converge to a very similar style, where conciseness with readability are paramount.
Oh, it's easy
And Perl::Critic allows your group to enforce one of those ways. Or not. It's your team's
choice, not the language designer's.
No, perl is the antichrist.Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
such anti-Christs (or opponents of Christ) would deny: "that
Jesus is the Christ"; "the Father and the Son"; and would "not confess
Jesus came in the flesh."
which seems like a very reasonable position to take.
What you cite is "an anti-christ", not "the Anti-Christ". The former is a position, while the latter is another way of referring to Satan, the Devil itself: the embodiment of all which is evil, so it is supposed to be bad. It is a medieval conception with biblical origins (based on fallen angels). Mentioning Satan, the Devil or Hell is offensive in most Christian cults (ranging from mildly profane to positively offensive). In some protestant churches it is likewise offensive to mention God; while it is definitely not in Catholic and other Christian denominations.
the Anti-Christ
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Whenever I see a seasoned programmer not merely express a preference for a language (which is
natural to have, I guess), but a strongly biased opinion and dissing other languages, I know
I've meet someone who still is naive enough to believe in silver bullets.
The cases where the language chosen makes a really significant difference to programmer
productivity are exceptionally rare. Sure, some languages fit certain problem domains better,
or have better libraries for given tasks, or you've got this big existing project to interface
with.
But I'dn't trust a "seasoned" programmer who got hung up about that. A seasoned programmer
should be able to program in all of the major languages within at most a few weeks to get upto
full speed.
That said, everybody knows that the Gods in their infinite wisdom wrote the universe in Perl,
and that God is anxiously waiting on Perl6 so he can end all evil and banish the snake and
mammon's tempting gems, so we shall be back in paradise.
Amarok is C++
You know that Amarok is written in C++ right? Mark obviously doesn't believe Ruby is a silver
bullet.
But thanks for not taking this seriously at least. ;)
The universe
http://xkcd.com/312/
http://xkcd.com/224/
On the other hand.... http://xkcd.com/353/
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
I would not be so quick to hope to banish the snake from the world. In some versions of text
from which the old testament was selected; it was the snake that spoke the truth. Hence, the
credo that no good deed goes unpunished seems to be the more valid lesson. Therefore, I would
suggest less religiosity, let's base our arguments on observable facts. That is, even when
they are our deeply held preferences. Remember, we are talking about a scripting language not
a panacea to the World's ills.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
> I would not be so quick to hope to banish the snake from the world; it was the snake that
spoke the truth
Keep the python.
But it is a proven truth that, while programmer productivity measured in lines of code is more or less constant in any language, the functionality provided does indeed change a lot depending on the language. It takes more lines to write something in low-level languages than in high-level languages. That is why high-level languages exist, and why assembler is only used rarely nowadays.
Language productivity
The cases where the language chosen makes a really significant difference to programmer productivity are exceptionally rare.
gives the wrong impression, even if you probably know better. Language does make a huge difference in productivity and it should be chosen carefully.
Language productivity
You may be right if you only consider the time coding something. But the time spend writing
code is in general only a small part of the whole thing. And that SLOC/FP count thing is
silly, because it doesn't consider how much time it takes to write those lines. Many lines of
simple code is often better than less, more complex lines of code, and takes less time
writing.
When writing something like a web application, it doesn't really matter what language you use,
what's important is what framework you use. And that's true for most things, existing
libraries and frameworks are the ones reducing the amount of work most, not the language
choice itself. So the huge difference comes from there. I don't say that language choice
doesn't matter, it does, but it's much less than the impact of the included standard libraries
and easily available libraries.
I wonder if there are Python bindings for C...
Language productivity
I don't say that language choice
doesn't matter, it does, but it's much less than the impact of the included standard libraries
and easily available libraries.
In that you are completely right. Witness Arc's challenge: the inventor of this new language, Paul Graham, is challenging people to come up with a shorter version of a barebones web application. And the responses: of course the framework is what counts, not the language.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
*Competition is good*
All businesses/languages/individuals/musicians benifit from healthy competition. While this
can manifest in possibly "unhelpful" remarks from people who follow one camp or another, it's
not a big deal. From Beatles are better than the Beach Boys, to Ruby is better than Python,
the debates will continue to rage. But it will ensure that both camps will strive to be the
best, and that can only be a good thing :-)
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Interesting there's all this talk about languages, yet little if no talk about adding a
dependency to a lot of people's production systems because one programmer likes Ruby.
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
I think that's his purpose, as a main developer of amarok who likes ruby
he uses this power to get people install Ruby on their machines (...and
hopefully discover its beauty). This also means that more distributions
will install ruby by default.
But actually the same happens with other software too all the time, if
some more or less important project adds a new requirement, distros will
install it. It's just that the developers usually don't express it that
way.
OTOH, I guess amarok simply needed a scripting language, so they decided
for Ruby, what's wrong with that ?
I'm biased, I like Ruby too. :-)
Alex
Interview: Too much software
OTOH, I guess amarok simply needed a scripting language, so they decided for Ruby, what's wrong with that ?
We sometimes wonder why our systems get so large. It's things like the music player requiring a scripting language not needed elsewhere in the system that have to be at least some of the problem.
Interview: Too much software
My main system runs Slackware, which is somewhat smaller than other
distros (and has the best dependency checking - none :-)
Anyway, every box should have Ruby installed ;-)
Alex
Every box should not have Ruby installed.
Interview: Too much software
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
If they simply needed a scripting language, what's wrong with lua?
(what's right with lua? the runtime library is around 50 times smaller)
OT: Learning both (a request)
OT: Learning both (a request)
I wouldn't venture to guess which is better to start with: I learned
Python originally ten years ago, and have been using it to earn my
keep daily since then.
I recommend Mark Pilgrim's "Dive Into Python" as the best tutorial for
experienced programmers:
http://diveintopython.org/
Interview: Mark "Markey" Kretschmann (Not the Gentoo Weekly News)
Yes, I completely agree with Markey: Amarok isn't bloated enough yet as it is.