Hallo, ich weiß nicht genau, ob das Thema hier hinein passt, aber ich
probier es einfach mal.
Und zwar fange ich bald an Informatik zu studieren. Ich will mich dabei
allerdings hauptsächlich aufs Programmmieren konzentrieren. Bis jetzt
hab ich nur Erfahrungen mit C# und µC Programmmierung gehabt. Und das
waren auch nur kleinere Spielereien, also nichts großartiges. Ich möchte
mein WIssen beim Studium vertiefen, weil mir Programmieren sehr viel
Spaß macht, speziell grafisch orientierte Sprachen.
Und jetzt meine Frage:
Auf welche Programmiersprache sollte man sich am besten konzentrieren?
Oder besser gesagt, in welcher Programmiersprache seht ihr am meisten
Zukunft, Java, C#, C++, Python etc.. ?
Danke schon mal im Vorraus
Die Zukunft im Bereich Windows liegt eindeutig bei C# und .NET basierten
Sprachen.
Trotzdem ist C/C++ zum Programmieren-lernen IMHO das Beste. Wenn du
C/C++ kannst, ist der Umstieg auf andere Sprachen nur noch ein
Nachschauen in der Referenz der jeweiligen Sprache, welche Syntax
bestimmte Dinge haben.
Man kann zu dieser Frage nur Meinungen haben, aber keine definitive
Antwort geben. Welche Sprache in welchem Bereich modern, angesagt,
gefordert oder möglich ist, hängt von Werbung, wieder Meinungen,
persönlichen Vorlieben von Vorgesetzten oder Kunden ab. In der Praxis
wählt man die aus, die für das Problem am geeignetsten ist.
Aber im Studium hast Du in der Regel sowieso nicht die Wahl der
Programmiersprache, abgesehen von Kursen die nicht für den Schein
notwendig sind. Wenn ein Pflichtkurs "Imperative Programmierung"
vorgesehen ist, mag der in C oder in Pascal ablaufen, wobei C recht
wahrscheinlich ist. Der Kurs "Objektorientierte Programmierung" läuft
evtl. in C++ oder in Java. Wie auch immer: das schreibt der Professor
vor. Du kannst es Dir (in der Regel) nicht aussuchen.
Also mach Dir erstmal darüber keine Gedanken.
In der Literatur zur Weiterbildung von Softwareentwicklern wird häufig
der Tipp gegebeb, jedes Jahr eine weitere Programmiersprache zu lernen.
Das ist vielleicht zu viel des Guten. Aber mit einer allein kommt keiner
ein Berufsleben lang durch.
Stefan schrieb:> Und zwar fange ich bald an Informatik zu studieren. Ich will mich dabei> allerdings hauptsächlich aufs Programmmieren konzentrieren.
Dann lern' Haskell. Das ist die perfekte Vorbereitung aufs
Informatikstudium und befreit dich gleichzeitig von allen möglichen
Illusionen diesbezüglich.
Maik Fox schrieb:> Dann lern' Haskell. Das ist die perfekte Vorbereitung aufs> Informatikstudium und befreit dich gleichzeitig von allen möglichen> Illusionen diesbezüglich.
Lisp oder Scheme (was ein dialekt davon ist) sind auch sehr beliebt bei
Profs der Theoretischen Informatik ;)
http://xkcd.com/224/http://xkcd.com/297/
(Hab ich schon erwähnt, dass ich xkcd liebe?)
@TO:
Sprachen wirst du im Laufe der Zeit sehr viele lernen müssen.
Das wichtigste ist, dass man die zugrundeliegenden Paradigmen verstanden
hat.
Dann kann man in jeder Sprache programmieren.
Das einzige Problem sind dann nur die Bibliotheken und APIs, in den man
sich zurechtfinden muss.
Dafür gibt es das Internet und Referenzen.
Stefan schrieb:> Und jetzt meine Frage:> Auf welche Programmiersprache sollte man sich am besten konzentrieren?
Ich würde eine "klassische" Sprache empfehlen, die es schon lange gibt.
Die sind meistens auch für sehr viele Plattformen verfügbar. Bei den
neueren "Modesprachen" ist man da meist eingeschränkter.
Lord Ziu schrieb:> Die Zukunft im Bereich Windows liegt eindeutig bei C# und .NET> basierten Sprachen.
Allerdings ist nur ein kleiner Bruchteil der geschriebenen Software
Windows-Software.
Stefan schrieb:> Und zwar fange ich bald an Informatik zu studieren. Ich will mich dabei> allerdings hauptsächlich aufs Programmmieren konzentrieren.
Dann lerne Programmieren! Ich hab' in fast 30 Jahren in der IT schon in
Assembler, Basic, Pascal, Fortran, Pearl (die alte
Prozeßrechner-Sprache), C, Cobol, REXX, Natural und Transact-SQL
programmieren dürfen (und müssen) und in einige andere Sprachen (wie das
moderne Pearl, Java und LISP) reingeschnuppert.
Wenn Du die Abläufe eines Programmierauftrages verinnerlicht hast, Du
logisch denken kannst und Dir bei einem Problem sofort Ideen zur Lösung
kommen, ist die Sprache nur erlernbarer Syntax und damit egal...
Williwilli schrieb:> Pearl (die alte Prozeßrechner-Sprache)
PEARL
Williwilli schrieb:> wie das moderne Pearl
meinst du damit PEARL-90 oder Perl (Scriptsprache)
Vlad Tepesch schrieb:> Williwilli schrieb:>> Pearl (die alte Prozeßrechner-Sprache)> PEARL
Jep.
> Williwilli schrieb:>> wie das moderne Pearl> meinst du damit PEARL-90 oder Perl (Scriptsprache)
Letzteres...
Erstmal danke für eure Antworten.
>Williwilli schrieb:> Dann lerne Programmieren!
Das tue ich sehr gerne. Denn es macht mir Spaß und wenn man sich einmal
auskennt ist es wirklich nicht schwer.
Wie schon viele erwähnt haben gilt es meistens nur die Grundstrukturen
zu können, weil sich die verschiedenen Sprachen vom Prinzip her nicht
sehr viel unterscheiden. Klar sind es andere Befehle, doch oft ist der
Aufbau ja sehr ähnlich, zB bei C..
>Huch schrieb:> Du kannst es Dir (in der Regel) nicht aussuchen.
Das ist mir schon klar. Ich habe nur gehofft, dass es diese eine Sprache
gibt, die sehr sehr oft verwendet wird und die man als "Hauptsprache"
bezeichnen kann. Wobei ich zugeben muss, dass die Hoffnung auf diese
sehr sehr gering war.
>Rolf Magnus schrieb:> Allerdings ist nur ein kleiner Bruchteil der geschriebenen Software> Windows-Software.
Das denk ich mir auch. Deswegen würde ich mir bei C# auch nicht so
sicher sein. Im endeffekt wird es glaub ich so sein wie Huch gesagt hat:
Es hängt immer von der Situation hab.
Aber jedenfalls danke für eure Meinungen.
Stefan schrieb:> Aber jedenfalls danke für eure Meinungen.
Bitte bitte, auch wenn du meine total ignorierst.
Funktionale Sprachen sind ein bisschen anders als prozedurale. Du wirst
im Studium auf jeden Fall mit dem Lambda-Kalkül in Kontakt kommen, zum
Verständnis dessen kann es nicht schaden, sich vorher schonmal mit einer
funktionalen Sprache wie Haskell auseinandergesetzt zu haben.
Und wer meint, die haben keine Praxisrelevanz...
Telefonvermittlungssysteme werden zB in Eiffel programmiert. Vorteil:
Automatisierbare Testbarkeit/Validierbarkeit inhärent vorhanden.
Stefan schrieb:> Ich habe nur gehofft, dass es diese eine Sprache gibt, die sehr sehr> oft verwendet wird und die man als "Hauptsprache" bezeichnen kann.
Allgemein sehr oft verwendet werden Java und C, wie du dem Tiobe-Index
entnehmen kannst, wobei die genauen Prozentzahlen sicher abhängig von
den ausgewählten Bewertungskriterien sind.
Bevor du dich aber für deine "Hauptsprache" entscheidest, solltest du
dir überlegen, was deine potentiellen Hauptanwendungen und Interessens-
gebiete sind. Jeder Anwendungsbereich hat seine eigenen Hauptsprachen.
Beispiele:
- Web-Anwendungen: Java und PHP
- Steuerungstechnik: C und C++, im Low-Cost-Bereich fast nur C
- Büro- und ähnliche GUI-orientierten Anwendungen: C++, für Windows-
Only-Anwendungen auch C#
- iPhone-Apps: Objective-C
- to be continued ...
Wenn du also Java, C, C++ und C# kannst, hast du schon einen sehr guten
Fundus. Die vier Sprachen liegen nicht so arg weit auseinader:
- Alle vier sind imperativ.
- Alle vier sind syntaktisch ähnlich.
- Drei davon sind objektorientiert.
Man kann also mit akzeptablen Aufwand alle vier Sprachen lernen. Je nach
Interesse oder Bedarf kommt dann noch eine Skriptsprache wie PHP, Python
oder Ruby dazu, die hat man aber sehr schnell gelernt.
Was die Zukunft bringt, ist schwer zu sagen. Sicher wird im Windows-
Bereich C# seinen Anteil zu Lasten von C++ und Java noch etwas erhöhen.
Des Weiteren ist ein leiser Trend hin zu Funktionalsprachen erkennbar(s.
auch Beiträge von Maik Fox), auch Microsoft hat da mittlerweile an
mehreren Stellen die Finger drin.
Maik Fox schrieb:> Bitte bitte, auch wenn du meine total ignorierst.
Tut mir leid, wenn es so rübergekommen ist. Alles konnte ich nicht
beantworten, allerdings habe ich mir jede Antwort gründlich
durchgelesen. ALso so is es dann auch nicht :)
Yalu X. schrieb:> Allgemein sehr oft verwendet werden Java und C
Das war auch meine Hoffnung. Denn da habe ich shcon Erfahrung und werde
mir wahrscheinlich leicht tun (hoffe ich jedenfalls).
Klar wird man beim Studium mit sehr viel mehr Sprachen konfrontiert,
doch am Ende kann man sich ja doch in irgendeiner Art und Weise seine
Lieblingssprache aussuchen. Denn was ich so aus deinem Beitrag
herauslesen kann wird jede Sprache irgendwo gebraucht.
Maik Fox schrieb:> Dann lern' Haskell. Das ist die perfekte Vorbereitung aufs> Informatikstudium und befreit dich gleichzeitig von allen möglichen> Illusionen diesbezüglich.
Ich werde es mir auf jeden Fall mal anschauen. Danke
C# :-) schrieb:> ist ein alter gag unter> hardwarenahen proggis
na so alt kann der ja nicht sein, die Sahra Palin und Putin Bilder sind
ja nicht so alt.
Trotzdem nett.
Aber was ist das in der Ruby/PHP Zelle?
Mars schrieb:> Vlad Tepesch schrieb:>> Aber was ist das in der Ruby/PHP Zelle?>> =>http://en.wikipedia.org/wiki/Flying_Spaghetti_Monster
Ok, danke.
Ich kenne dieses FSM zwar und dessen Hintergrund, aber das Bild war mir
neu.
Wär auch nie auf die Idee gekommen, dass das Spaghetti sein sollen.
Stefan schrieb:> Und zwar fange ich bald an Informatik zu studieren. Ich will mich dabei> allerdings hauptsächlich aufs Programmmieren konzentrieren.
Scherz am Morgen vertreibt Kummer und Sorgen. :-)
Ich habe nichts studiert, aber nachdem was ich so gehört habe sollte man
sich im Informatikstudium vorwiegend auf Mathematik konzentrieren.
> Und jetzt meine Frage:> Auf welche Programmiersprache sollte man sich am besten konzentrieren?> Oder besser gesagt, in welcher Programmiersprache seht ihr am meisten> Zukunft, Java, C#, C++, Python etc.. ?
Wenn's nicht so sehr um die zukünftige kommerzielle Anwendung sondern
eher um die Erweiterung des Geistes in Sachen Programmierung geht, dann
kann ich nur Ruby wärmstens empfehlen.
Es ist nämlich schon eine feine Sache eine dynamisch typisierende
Sprache zu haben, mit der man Dinge wie folgendes tun kann:
Иван S. schrieb:> Es ist nämlich schon eine feine Sache eine dynamisch typisierende> Sprache zu haben, mit der man Dinge wie folgendes tun kann:> colors = ["rot", "gelb", "gruen", "blau"]> 3.times do> colors.each do |x|> puts "Farbe: " + x> end> puts "Gewuerfelt: " + rand(6).to_s> end
Damit käme ich überhaupt nicht zurecht. Wie mit allem was keine Syntax
wie c(#/++) hat.
Иван S. schrieb:> Ich habe nichts studiert, aber nachdem was ich so gehört habe sollte man> sich im Informatikstudium vorwiegend auf Mathematik konzentrieren.
Hab ich auch gehört. Doch darüber mache ich mir keine Sorgen. Mathematik
ist nämlich nicht so schwer wie alle tun ;)
So als Ansatz für neue Gedanken:
Vielleicht wird die "Sprache der Zukunft" für die meisten
SW-Entwickler gar keine mehr. Es wird ja immer mehr 'modellbasiert'
entwickelt, ohne MatLab bekommen die Automotivler doch gar kein
Steuergeräte mehr zum Laufen.
Es entwickeln vielleicht irngendwann (demnächst?) nur noch einige wenige
Modellierungssoftware und der Rest schubst Bilder über den Bildschirm.
ole schrieb:> Es entwickeln vielleicht irngendwann (demnächst?) nur noch einige wenige> Modellierungssoftware und der Rest schubst Bilder über den Bildschirm.
Genau, und der PC der Zukunft hat nur noch eine Taste und kann auch von
jedem 85 jährigen bedient werden :-)
Das haben die 'Zukunftsforscher' und Marktstrategen auch schon früher
versprochen.
Jeglicher Fortschritt in den Werkzeugen wird sofort durch die erhöhte
Komplexität der Aufgaben wieder aufgefressen. Ist wie mit der PC
Leistung. Früher hat das Starten meines PC-XT mit 4,77 MHz und 360K
Diskette nicht länger gedauert als das XP auf meinem Firmen-PC, im
Gegenteil.
@ole
Diese Sau wird doch alle Jahre wieder neu durchs Dorf getrieben. Und
selbst wenn man in 20 Jahren nur noch "modellbasiert" UML-Diagramme o.ä.
zusammenbastelt, wird das in Sachen Komplexität nicht anders als heute
sein. Ich bezweifle diese Entwicklung aber, nichts ist so effizient und
gleichzeitig so einfach wie textbasierte Programmierung.
Als Sprachempfehlung werfe ich ebenfalls Python in den Raum.
Jetzt muss ich mich mal zu Wort melden, denn der ganze Thread geht mE.
am Thema vorbei.
Programmieren ist in der Informatik nur Handwerkszeug.
Das macht im Studium vielleicht 10% aus.
Mathe wird ganz sicher eine ganz andere Herausforderung.
Aber dann gibts da auch noch die ganze trockene Materie wie Datenbanken,
System-Engineering, Recht, .......
Man sollte sich bei Programmiersprachen immer eins vor Augen halten: Es
ist nur ein Werkzeug. Man kann Schrauben auch mit dem Hammer in die Wand
schlagen, aber auch hier gibt es 2-3 bessere Werkzeuge ;-)
In meinem Studium (INF) hat man mir als erstes folgenden Satz gesagt:
"Eine Programmiersprache ist für einen Informatiker das gleiche wie das
Teleskop für einen Astronomen".
Also hat man uns möglichst breit "geschult" - auf dem Plan stand Java
detailiert, C, und Lisp - bei den Datenbanken Vorlesungen wurde neben
SQL auch auf Prolog eingegangen. Webtechnologien wurden komischerweise
aber vorrausgesetzt bzw. als nebenbei erlernbar abgestempelt.
Mittlerweile muss ich echt sagen, das das wichtigste ist, alles mal
gesehen zu haben - so kann man sich in eine beliebige Sprache recht
schnell hinneinarbeiten (ging mir mit C# so).
Kurz gesagt: Nicht auf eine Sprache versteifen - es sei denn, du baust
später mal Compiler ;-)
Stryker schrieb:> Kurz gesagt: Nicht auf eine Sprache versteifen - es sei denn, du baust> später mal Compiler ;-)
ich schätze, dass viele "Anfänger" diesen Fehler begehen. Es ist an
sich auch erstmal kein Fehler sich "auf eine Sprache zu versteifen".
10 Jahre später blickt man ganz anders darauf ...
Das Non-Plus-Ultra "Sprache der Zukunft" (ich muss schmunzeln :)
wird es nicht geben. Was es gibt, sind Sprachen mit interessanten
Konzepten. Als Tipp würde ich mitgeben .. wenn du eine neue Sprache
lernst und begreifst alle Konzepte auf Anhieb, dann lernst du
eigentlich nur neue Syntax und das ist es nicht Wert.
Vlad Tepesch schrieb:> die computer werden doch nicht umsonst immer schneller.
Es wird aber auch immer mehr LEistung gefordert. Mit Python gibst du die
Hälft davon dem Interpreter.
daniel(root) schrieb:> Als Tipp würde ich mitgeben .. wenn du eine neue Sprache> lernst und begreifst alle Konzepte auf Anhieb, dann lernst du> eigentlich nur neue Syntax und das ist es nicht Wert.
Da ist was dran.
Man sollte im Informatikstudium eigentlich keine Programmiersprachen
lernen, sondern Programmierkonzepte. Die Konzepte für sich gesehen sind
aber nur trockene Theorie. Um zu verstehen, wie man sie gewinnbringend
einsetzt, braucht man zusätzlich Anwendungsfälle und eine Programmier-
sprache, die die Realisierung der Konzepte erlaubt. Insofern ist das
Erlernen einer Programmiersprache auch innerhalb eines wissenschaftlich
orientierten Studiums doch wieder sinnvoll.
Man kann sich jetzt die interessante Frage stellen, wieviele Sprachen
man mindestens lernen muss, um damit alle oder zumindest die allermeis-
ten Programmierkonzepte einsetzen zu können.
Die Frage ist natürlich ohne die Angabe, was man alles zu den Konzepten
zählt, etwas schwammig. Trotzdem liegt man mit der Antwort "1" sicher
nicht ganz verkehrt: Es gibt nämlich nur ganz wenige Programmierkonzep-
te, die in Common Lisp nicht realisiert und sogar standardisiert sind.
Auch wenn Common Lisp keine Mainstream-Sprache ist und deswegen kaum
direkt im Berufsleben eingesetzt werden kann, wird ein erfahrener Lisp-
Programmierer praktisch jede andere Sprache in kürzeseter Zeit erlernen
und effektiv nutzen können. Ich meine einmal gelesen zu haben, dass an
einigen amerikanischen Unis Lisp (vielleicht nicht gerade CL, aber ir-
gendwelche abgespeckten Dialekte) als erste Programmiersprache gelehrt
wird.
Schon erstaunlich wieviel geballte Blindheit hier vertreten ist.
Ich habe hier nicht einmal MDA gelesen. Auch wenn es vielen hier
vielleicht nicht gefällt, aber in Zukunft wird nun mal modellbasierte
Codegenerierung den größten Stellenwert einnehmen. Da heutzutage
schon über 90% des Codes generiert werden kann, wird sich dieser
Trend weiter fortsetzen. Ob nun C++, Java, oder schlag mich tot
aus dem Codegenerator rauskommt ist von der Anwendung abhängig und
kann nicht pauschalisiert werden.
Und die immer komplexeren Codegeneratoren fallen dann vom Himmel --
Problem gelöst.
Um unmittelbar auf dir ursprüngliche Frage zu antworten:
Erfinde deine eigene. Ne, kein Scherz: An einer mir bekannten
Universität fordert z.B. einer der Professoren, dass Programme während
der Vorlesung/den Klausuren in einer von ihm erfundenen
Programmiersprache verfasst werden. Warum auch nicht -- ist doch alles
nur 'syntactic sugar'.
Fundamental interessant wirds, wenn man sich mal aufrafft und LISP
programmiert, oder Haskell, will sagen, wenn man ein grundlegend anderes
Programmierparadigma ausprobiert.
Unterm Strich ist es doch sowas von egal, ob Microsoft mir 'gcnew'
konstruiert, STL mir ein abstraktes 'new' anbietet oder ob ich
'malloc()' benutze. Solche Sachen machen eine Sprache mehr oder weniger
umständlich für den Programmierer, aber wirklich interessant ist das
doch alles nicht. Beschissen sind alle Varianten, ob die Latrine nun
pink oder himmelwölkchenblau angemalt ist.
Sven P. schrieb:> Unterm Strich ist es doch sowas von egal, ob Microsoft mir 'gcnew'> konstruiert, STL mir ein abstraktes 'new' anbietet oder ob ich> 'malloc()' benutze. Solche Sachen machen eine Sprache mehr oder weniger> umständlich für den Programmierer, aber wirklich interessant ist das> doch alles nicht. Beschissen sind alle Varianten, ob die Latrine nun> pink oder himmelwölkchenblau angemalt ist.
Der war gut :)))
Zum Programmierparadigma:
Da in Zukunft (und auch heute schon) für viele Anwendungen im Feld
mehrere Prozessoren vorhanden sein werden (Klassifizierung nach Flyn),
muss sich die Denkweise beim Programmieren sowieso ändern und damit
wohl auch die Semantik der Sprachen. Auf dauer werden heutige Lösungen
wie OpenMP etc. die den sequentiellen Code ergänzen nicht existieren.
Zumindest nicht wenn sich der Speedupfaktor nach Amdahls Law in Richtung
des Gustafson´schen Gesetztes entwickeln soll.
Daniel schrieb:> Schon erstaunlich wieviel geballte Blindheit hier vertreten ist.> Ich habe hier nicht einmal MDA gelesen.
Damit scheinst du recht zu haben, deswegen möchte ich deinem Augenlicht
ein wenig nachhelfen:
Beitrag "Re: "Sprache der Zukunft""Beitrag "Re: "Sprache der Zukunft""
;-)
> Da heutzutage schon über 90% des Codes generiert werden kann, wird> sich dieser Trend weiter fortsetzen.
Hmm, woher hast du diese Zahl? Die stimmt doch höchstens dann, wenn man
auch den von gewöhnlichen Compilern generierten Assembler- bzw. Maschi-
nencode mit hinzuzählt.
Das ist ein Wert aus dem Embedded Bereich. Hier wird basierend auf einer
Plattform (welche im einfachsten Fall aus einem messagebasierten
Scheduler und Input- sowie Outputhandlern besteht), die bei den 90%
nicht mit eingerechnet ist, aus den language units Klassendiagramm +
Zustandsautomaten der UML 2.0 ausführbarer C-Code + Konfigurationsscript
generiert (über XMI).
Kommerzielle Codegeneratoren sind bekannt (bekanntester ist wohl IBM
rational rhapsody), allerdings kann mit etwas intel. auch ein eigener
Codegenerator geschrieben werden, was in den meisten Fällen auch am
sinnvollsten ist, da somit auf intern vorliegenden wiederverwendbaren
Code rücksicht genommen werden kann.
Hab noch was vergessen: Es ist dabei durchaus möglich, dass das System
erst zur Laufzeit angelegt wird über die Methode/Klasse eines Erbauers
spezifiziert durch die GOF Design Patterns (Gang Of Four).
Voraussetzung ist ein reaktives System (ansonsten wirds hässlich)!