Kurzfassung: Wenn du noch gar nicht programmieren kannst und es vor allem um linguistische Zwecke geht, lern Python oder Perl -- und nimm Abstand von C und C++ (sorry, Kevin;) ) Java steht so dazwischen; ich habe da Vorurteile, aber das ist in der Lehre und der Industrie sehr verbreitet.
Perl wurde halt von einem Linguisten entworfen, hat aber einen etwas zweifelhaften Ruf, da es sehr viele Spezialregeln, Ausnahmen etc. enthält, die, wenn man sie mal gelernt hat, die Arbeit sehr vereinfachen können, aber für Anfänger als Hürde empfunden werden und zu schwer lesbaren Programmen führen können. Perl ist außerdem für die gute Integration von regulären Ausdrücken bekannt (quasi eine Minisprache für Muster-basiertes Arbeiten mit Zeichenketten). Python hat den Anspruch, möglichst einfach und elegant zu sein. Der Kontrast von Perl und Python wird daher manchmal durch die Phrasen:
"There's is more than one way to do it" (Perl) vs.
"There should be one-- and preferably only one --obvious way to do it" (Python) zum Ausdruck gebracht.
Beide Sprachen haben gemein, dass sie relativ komfortable Programmierung erlauben und insb. auch in Hinblick auf die Arbeit mit Texten-basierten Daten gut ausgerüstet sind. Sie bieten generell viele Möglichkeiten, Dinge, die in traditionelleren Sprachen wie C relativ aufwendig wären, schnell zu erledigen. Für zahlreiche Anwendungszwecke gibt es daher auch schon fertige Pakete, auch für linguistische Zwecke. Für Python beispielsweise
NLTK.
Langfassung:
Das ist so 'ne Frage, die in einschlägigen Foren immer wieder gestellt wird und da wird dir auch jeder was anderes sagen (hier hatten wir das aber glaube ich noch nicht ;)) Ich weiß auch nicht, ob wir als Linguistikforum dazu die beste Anlaufstelle sind, um fachlich-fundierte Meinungen zu erhalten (vielleicht kann aber @
robert ja ein wenig aushelfen ;) )
Wie so oft gibt es dazu keine einfache Antwort, die Frage ist halt, wie Kevin auch schon meinte, was du vor hast und was dir vorgegeben wird. Man kann Programmiersprachen in diverse Typen einteilen. Eine Einteilung ist beispielsweise die nach dem Abstraktionsniveau. C ist beispielsweise eine sehr hardware-nahe Sprache, wo man sich um alle möglichen Dinge selbst kümmern kann -- und muss. Wenn du z.B. nicht gerade Treiber, rechenintensive Sachen oder Mikrokontroller programmieren möchtest, oder dich intensiv für unixode Systeme interessierst, würde ich das eher nicht lernen. Das ist nicht mehr zeitgemäß, unnötig umständlich (ähnliches gilt übrigens für Pascal, was lange als Einstiegssprache verwendet wurde) und fehleranfällig. Am anderen Ende der Skala rangieren moderne dynamische Sprachen wie Python, Perl oder Ruby, die vergleichsweise elegant zu schreiben und relativ einfach zu lernen sind. Sie bieten sehr viele komfortable Features, die man sich in C selbst herbei programmieren müsste und gelten im Gegenzug als langsamer (wobei man das heute auch nicht mehr so sagen kann; bzw. ist es in vielen Fällen irrelevant). Das Problem ist halt nur: Wenn man noch gar nicht programmieren kann, kann man vermutlich gar nicht einschätzen, was das heißt.
Eine andere Einteilung ist die nach verschiedenen Programmierparadigmen (strukturiert, objekt-orientiert, funktional etc.), also quasi verschiedenen Programmiermodelle. Die großen, gängigen Sprachen sind eigentlich fast alle Multiparadigmensprachen; ich würde mir für den Anfang um diese Begriffe daher keine allzu große Gedanken machen. Objekt-orientiertes Programmieren ist in vielen größeren Anwendungen die Standardlösung, weshalb du da nicht drum herum kommen wird. Funktionale Programmierung ist vor allem im akademischen Bereich präsent u.a. wohl auch in der Computerlinguistik/Sprachverarbeitung (Lisp wird etwa im Kontext von Fluid Construction Grammar verwendet und es gibt einige (ältere) Texte, die sich darauf beziehen); allerdings diffundieren Features davon immer mehr auch in "Mainstream"-Sprachen.
Java, C# und C++ sind nach meinem Eindruck in vielen professionellen Sparten die Standards. C++ ist gewissermaßen die stark ausgebaute Variante von C (++ bedeutet quasi +1) und wird recht viel verwendet -- gilt allerdings nach meiner Wahrnehmung als schwer zu bändigendes Monstrum, das für Einsteiger eher nicht so optimal ist. Java wird an vielen Schulen und Uni Einführungskursen gelehrt; C# ist quasi die Antwort darauf von Microsoft.
Wenn du also allgemein Programmieren lernen möchtest und der Weg das Ziel ist, wirst du über die Zeit hinweg sowieso diverse Sprachen unterschiedlichen Typs lernen wollen, um unterschiedliche Konzepte und Herangehensweisen zu lernen. Wenn's um Linguistik geht, und du die Sprache frei wählen darfst, würde ich eine der modernen Hochsprachen verwenden. Für bestimmte Bereich kann die Wahl auch schon durch vorhandenen Code oder Pakete vorgeben sein; in der Korpus-Linguistik ist übrigens auch R noch häufig anzutreffen (ein Datenverarbeitungs/Statistik-Paket mit eingebauter, etwas seltsamer Programmiersprache).