Warning: sem_get() [function.sem-get]: failed for key 0x152b: Permission denied in /home1/wfbassoc/public_html/billbusen/wp-content/plugins/wp-cache/wp-cache-phase2.php on line 98
Bill Busen » 2007 » December

Archive for December, 2007

The Top 50 Code Bases

Monday, December 31st, 2007

Anthony Cangiano had a post I liked that did an estimation of programming language popularity by Amazon Rank of the bestselling corresponding book. OK, everybody that thinks of that as unscientific rather than fun, leave now.

Using Amazon Bestseller Rank is biased toward new, hot languages and languages popular among people just learning programming. This is fine; I appreciated that and took the post on its own terms. You can also get fancy and make up some popularity index based on number of programmers, courses, and vendors like these guys. But recently, I took a high-level look at my own skill set. Inspired by Anthony, I wanted to come up with my hard-knocks, generalist view of the actual code base out there in a fun way, what you might run into to maintain. So, dedicated to the apologetic project manager who introduces your new assignment with, “Remember the aerodynamics library Elmer did in Ada before he retired…”

Presenting: The Top 50 Code Bases, as ranked by the Google hits on the phrase “written in language“. The term language here is ridiculously broad, encompassing any programming, scripting, query, or markup language, and even meta-applications; anything you’re likely to be faced with updating something in, and thus might have to understand. (This is my rationale for including markup languages.) If you might have to fix it, I counted it.

Rank Language Refs (K) Cangiano Rank
1 C++ 1,290 6
2 Perl 1,120 11
3 Python 748 9
4 PHP 667 10
5 C 523 7
6 C#1 381 5
7 ASP 292  
8 HTML 282  
9 Assembly 277  
10 Visual Basic 225 8
11 XML 188  
12 JavaScript 177 1
13 Flash or ActionScript2 162  
14 BASIC 160  
15 SQL 141 4
16 Java 137 2
17 Delphi 117 19
18 FORTRAN 112  
19 Excel 107  
20 SQL Server or Microsoft SQL Server2 101  
21 .NET 97.7  
22 Ruby 94.4 3
23 Access 82.9  
24 Scheme 76 17
25 Visual C++ 70.7  
26 MySQL 67.3  
27 D1 65.2  
28 Tcl 58.0  
29 Pascal 57.1  
30 Oracle or PL/SQL 55.3  
31 COBOL 49.2  
32 AJAX 47.2  
33 LISP3 46.2 20
34 MATLAB 44.0  
35 Ada 36.5  
36 Prolog 34.7  
37 VBScript 33.9  
38 Haskell 33.6 18
39 bash 33.3  
40 Smalltalk 32.7 22
41 CSS 31.5  
42 PostScript 28.2  
43 sh or Bourne shell1,2 22.1  
44 Turbo PASCAL 21.4  
45 Common LISP 20.2  
46 ColdFusion or Cold Fusion 20.1  
47 Erlang 19.6 12
48 Objective-C 18.9 13
49 Lua 18.4 16
50 UML 17.6  

1These were corrected for false positives such as “written in C# minor”.
2Both search terms’ totals were added together.
3Sorry, Paul.

For comparison, I have included Anthony’s rankings, so you can see how his hot languages compare to the spectres who will haunt your nightmares in years to come. I decided that dialects of languages should be ranked separately, since you might only initially be told that a program is in LISP, and that might require you to first identify that Common LISP library calls are present; this is a harder problem than being told initially that it is in Common LISP.

I was surprised at what didn’t make the cut. If you’re wondering if I forgot:

  • awk
  • sed
  • XHTML
  • SOAP
  • XSLT
  • ksh, csh, and their variant names
  • OpenGL
  • Mathematica
  • Forth
  • ALGOL, PL/I and those other 60s hits

and about three dozen other also-rans, um, no.

Don’t take this all too seriously, as when I checked back a week later, there were unlikely changes in some of the totals. Google’s count estimation is very rough, apparently. These numbers were retrieved on December 14, 2007, in all but a few instances.

Tests Passed and Unpassed: A Jascha Heifetz Memorial: Part I

Monday, December 10th, 2007

Jascha Heifetz died twenty years ago today. I have sometimes joked that I studied double bass with Jascha Heifetz, but the underlying truth is that the fascinated and endless analyses of his otherworldly effects were the major musical influence in my life. The effects, after much loving consideration, sometimes led to the means, and as these jewels accumulated, people meriting respect said incredible things about my playing, words that far outstripped my limited technical means.

The treasures cast their magic as I travelled to other shores as well. I was accepted as a college piano performance major without ever having had a piano lesson (although I did have most standard violin concerti accompaniments and much of the Grieg Concerto in my fingers at that time) . They have blessed Russian folk music, and recently, choral performances, Dvorak Stabat Mater, Bruckner Mass, Messiah. If they did not transcend my incredibly limited vocal resources, I would have no business in a chorus at all - my voice cannot musically reach up even to middle C.

How does someone without the fluency for 16th note scales end up in All-State Orchestra? Why, since my life path led me away from music as a career, do my talented friends even seek my views when I have not played in an orchestra in decades? The answers await you in the discography of Jascha Heifetz, where you will discover that:

  • Moving music must have an emotional program; a sequence of emotions that might naturally occur in a moving story. Desolate might lead to anguished, which might lead to angry, which might lead to steely resolve.
  • Emotional effects have technical means, and these are consistent enough for you to build a vast library of effects. What does desolate imply in terms of the range of vibrato and dynamics and rubato?
  • You must have every speed and width of vibrato available, as each combination says something else. You should be able to produce a joyous or peaceful or defiant vibrato.
  • Color is more important than convenience when choosing fingerings. Which string’s color do you want?
  • To hold people spellbound, you must not be averse to peaceful moments or silence. Or fury, at the opposite end of the spectrum.
  • Phrasing must be conceived at many scales, shaping notes, phrases, sections, and entire works.
  • You need most all of the sounds your instrument can produce and you need to map them onto emotions. Try out all the sounding points between the bridge and the fingerboard, with all the pressure, bow speed, and articulation combinations.
  • You can make a story out of anything; you can do it with an oom-pah bass line. In fact, I judge college basses on their musicality in those passages specifically.
  • In making up the story, one of the first things that takes shape is the important notes. You should decide which notes are important and what you will do about that, in anything you are learning. Often no one in a section can even project an important note because of the ongoing rush of the notes. There will always be less important notes from which to steal attention for the effect that must be produced, if the note is truly important. Sudden changes are often important notes. The top notes of passagework are often important notes.

But I am glad I studied with his discography, instead of personally with the artist I regard as my musical father. The wisdom I received was transmitted to his students the same way he obtained it, by means of stark tests. More tragically, the eternal challenging and testing he imposed on himself to attain mastery of his art ran out of its banks in a torrent, engulfing his personal life and his friendships. A biographer, Herbert Axelrod, gently responded to Heifetz’s outrage (”Ask the students!”) over his stark reporting of his personal life with a plaintive question, “Which students do you believe you have a personal relationship with?”

“With all of them!”

The interview continues; he “does not care to discuss” his relationship with Erick Friedman. His other famous student, Eugene Fodor?

“I do not want to discuss my personal relationships with these people.”

“But you criticized my “malicious” caption and said you have meaningful relationships with your students…”

In this series, I will look at Jascha Heifetz’s tests. The ones he passed, the ones he failed, the ones he imposed on others to their lasting bitterness, and the ones he imposed on others to their lasting gratitude.

Thank you, Mr. Heifetz. For the great changes you began in my life.



Warning: sem_acquire(): supplied argument is not a valid SysV semaphore resource in /home1/wfbassoc/public_html/billbusen/wp-content/plugins/wp-cache/wp-cache-phase2.php on line 107

Warning: sem_release(): supplied argument is not a valid SysV semaphore resource in /home1/wfbassoc/public_html/billbusen/wp-content/plugins/wp-cache/wp-cache-phase2.php on line 116