Welche Programmiersprache als erstes lernen?
-
Dany5 schrieb:
ih fang glaub einfach mal mit C# an, kennt jemand ein gutes E-book?
davon gibt es nicht allzuviele, hier sind zwei:
http://www.c-plusplus.net/tuts/cpp/vcppk.zip
http://book.realworldhaskell.org/äh, ach ja, das ist ja gar kein Visual Basic Zeugs, aber Marc++us hat auch etwas für Visual Basic übrig und hat zumindest zwei davon in seiner Tutorialsammlung hier aufgelistet: http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=10 (kommische Addi,.. aber egal...)
Zum Thema verwirrt:
http://www.dmoz.org/Computers/Programming/Languages/ und da fehlen noch so einige...zu den neuern produktiv Sprachen hier könnte man noch Ruby erwähnen...
http://www.ruby-lang.org/de/downloads/ ist ein ganz gute Eingangsseite und einen Blick drauf wert.Für Java spricht übrigens, dass du damit auch dein Handy programmieren kannst und es an der Uni von Java Einführungskursen nur so wimmelt, und das Java auch sehr multimediafreundlich ist und auch hackerfreundlich ist usw.
zu diesem Thema gibt es sogar ein nettes Video bei Youtube: http://www.youtube.com/watch?v=kLO1djacsfg
das hatte ich dank Tim der das hier im Videofredthread gepostet hatte entdecken dürfen...
-
Also wie ich verstanden habe kann C# sehr gut Grafik/GUI/Internet.(Kann mir jemand das genauer erklären was für Internet/Grafik/Gui-Sachen)
C++ ist für ziemlich alles gut.
Pyhton kann was denn sehr gut?
-
Pythonic schrieb:
Alle Sprachen können alles. Manche können aber bestimmte Sachen gut und andere weniger gut.
Eher nicht. Sprachen an sich können eigentlich überhaupt nichts.
Es ist der weit verbreitete Irrtum, dass irgendwelche Programmiersprachen dafür verantwortlich wären, dass man beispielsweise Dateien öffnen und daraus lesen, und dann die Daten in irgend einer Weise irgendwohin (Datei, Bildschirm, Socket) wieder ausgeben könnte. Alle diese Dinge werden aber nicht durch die Programmiersprache an sich bewerkstelligt, sondern z.B. von kernel32.dll,
ws2_32.dll und vielen weiteren DLLs, die das OS bereitstellt, damit auch nur irgendeine Funktionalität in einem 'Programm' vorhanden ist
Den Funktionen in diesen DLLs ist es allerdings weitestgehend egal, ob sie aus einem C, C++, Visual Basic, Delphi, C#, von der Java Virtual Machine oder einem Skript-Sprachen Interpreter aufgerufen werden - Sie funktionieren in jedem Fall (d.h. soferne auf dem Rechner überhaupt die notwendigen Hardware-Voraussetzungen vorhanden sind, bzw. solange sich die Vorgangsweise des EXE-Loaders des OS nicht urplötzlich drastisch ändern sollte).
Weil alle diese DLLs in einem C - Dialekt abgefasst wurden, ist es sehr naheliegend, auch selber C zu verwenden, um die vielen tollen Funktionen, die diese DLLs bereitstellen, aufzurufen.
C hätte zudem den großen Vorteil, nicht gar zu kompliziert zu sein, man wird trotzdem zu einer gewissen Sorgfältigkeit und Genauigkeit beim Arbeiten 'erzogen' (die man sich vielleicht in anderen Programmiersprachen nicht so sehr angewöhnen würde, weil's dort entweder keine Pointer gibt oder diese nicht verwendet werden sollen, obwohl sie vorhanden sind).
Eine weitere Idee, was man möglichst am Anfang tun sollte, wäre, sich auch einmal mit dem allgemeinen Bauplan des Portable Executable Formats näher zu befassen, um eine Vorstellung davon zu bekommen, warum ein Kompilat überhaupt 'funktioniert'. Das Wissen um die prinzipielle Vorgangsweise des Loaders beim Lokalisieren von externen Abhängigkeiten wäre auch noch sehr wichtig. UND: Man gebe sich erst gar nicht der Illusion hin, dass auch nur irgendein Programm 'plattformunabhängig' ablaufen könnte (oder dergestalt implementierbar wäre). Aber das sagt eigentlich schon der Hausverstand,
dass ein Programm, das eine System-DLL wie z.B. ws2_32.dll zum Funktionieren benötigt, nicht wirklich auf einem Rechner funktionieren kann, wo es diese DLL nicht gibt (oder gar auf einem Rechner, wo der OS-Loader noch nie was von DLLs
gehört hat). Was auch immer man programmiert - es wird nicht ausführbar sein,
wenn es das OS nicht will (oder die Voraussetzungen dafür hat). Und das hat
mit der konkret verwendeten Sprache nichts zu tun.
Trotzdem bleibt C die erste Wahl. Bei fast allen anderen Sprachen ändert sich der grundlegende Standard-Sprachumfang (und damit verbunden: Die zur Ausführung notwendigen Laufzeitbibliotheken) alle paar Monate, sodass große Teile von Python- oder C#- usw. Java-Quellcode, den man vor 5 Jahren vielleicht verfasst hat, heutzutage einfach nur noch als verbuggt und nicht ausführbar (genauer: inkompatibel mit der neuen Laufzeitbibliothek!) anzusehen sind. Das ist in den
seltensten Fällen das, was man haben möchte (im Normalfall möchte man funktionierenden Quellcode wiederverwenden können, möglicherweise auch in 10 Jahren noch). Derartigen Problemen geht man mit C jedenfalls aus dem Weg, und man kann oft Quellcode problemlos wiederverwenden, der vor sagenhaften 20 Jahren oder noch mehr entstanden ist. Nun - DAS nennt sich Wiederverwendbarkeit.
Lernt man C, wird man's auch in 20 Jahren noch brauchen können.
Bei den Mode-Trends Python, Perl, C#, Java, PHP und (große Teile von) C++ wird man mit heute geschriebenem Quellcode in 20 Jahren wohl nicht mehr viel anfangen können, und man wird das Rad mit diesen Sprachen dann wieder neu erfinden müssen (soferne es dann Perl/Python überhaupt noch geben sollte).Conclusio: Nimm C, da haste lange was davon.
MFG
-
Ist C nicht C#?
-
20 Jahre alten Code würde ich gar nicht mehr anfassen wollen, ansichten, einstellungen, erfahrungen und neuentwicklungen führen dazu das der alte Code nicht mehr in die bessere Architektur passt.
Neuere algorithmen können auch viel besser mit der jetzigen Hardware umgehen, was bringt eine 20 Jahre alte Applikation die ein Oktocore nicht richtig nutzen kann, so bleibt man auf alten Kram hängen der schon lange abgelöst gehört. Nur weil es noch funktioniert, heißt das nicht das es immernoch gut ist. Code gammelt zwar nicht offensichtlich, so wie lebensmittel, aber auch Code wird schlecht...
-
Dany5 schrieb:
Ist C nicht C#?
C, C++, C++/CLI und C# sind 4 unterschiedliche Programmiersprachen. Zwischen C und C# gibt es sogar einen RIESIGEN Unterschied
Grüssli
-
Ja ich bin immer noch verwirrt, was soll ich lernen damit ich dann später die anderen Sprache leichter lerne, weil eig. möchte ich mit der Zeit alle wichtigen Sprachen lernen mit welcher soll ich anfangen?
Das was jetzt di mehrehit sagt werde ich lernen!
Sagt bitte nur 1 Sprache und nicht mehrere
-
Dany5 schrieb:
Ist C nicht C#?
Nein, weit gefehlt.
C ist eine low level- Sprache, mit der Betriebssysteme wie Windows in großen Teilen geschrieben werden. C++ ist als Erweiterung von C zu sehen, neue Konzepte wurden hinzugefügt, sodass moderner C++-Quelltext sich erheblich von reinem C unterscheidet.
Zur Sache mit der GUI: C und C++ sind an sich schon dermaßen komplex, dass man die erste Zeit eigentlich nur mit der Konsole arbeiten sollte. Wenn man die grundlegen Konzepte verstanden hat, kann man sich an Betriebssystemfunktionen heranwagen. Bei Windows wäre dies die WinApi (application programming interface).
Bei Java hat man diese Probleme nicht. Es gibt eine riesige "Standard-" Bibiothek, die der WinApi um Jahrzehnte voraus ist (ein Ziel von Microsoft ist es, stets abwärtskompatibel zu bleiben, in der jetzigen Form der WinApi sind immer noch viele Konzepte von Windows 3.1 zu finden). Daher kann mit Java eigentlich fast schon sofort mit der GUI-/Grafik-/Netzwerkprogrammierung begonnen werden.
Aber meiner Meinung nach lohnt sich der längere Weg, C++ zu lernen.Edit: Grundlegende Dinge des Programmierens (Schleifen, Bedingungen etc.) müssen natürlich immer am Anfang gelernt werden und gleichen sich in allen Sprachen mehr oder weniger.
-
C++ 1
weiter...
-
Und meiner Meinung nach ist Scheme durch nichts zu ersetzen.
-
Dany5 schrieb:
C++ 1
weiter...
Wir können nicht für dich abstimmen, welche Sprache du lernen solltest.
Jede Sprache, die sich in den letzten Jahren durchgesetzt hat, hat Vor- aber auch Nachteile, die "perfekte" Programmiersprache gibt es nicht.
Du selber musst entscheiden, welche Prioritäten du hast, was möchtest du für Anwendungen schreiben, wieviel Zeit hast du, eine Sprache zu lernen?
Wie hoch ist deine Frustrationstoleranz? Willst du schnelle Erfolge, nimmt Java oder C#, willst du viel über die Prozessorarchitektur kennen lernen, nimm Assembler, möchtest du systemnah programmieren, nimm C.
Für C++ kannst du auch mal einen Blick auf den C++ Primer werfen.
-
Ich hab noch knapp 2 Jahre Zeit bevor vlt. die Lehre anfange, also habe ich 2 Jahre um Sprachen zu lernen.
Ja um was geht es den bei der Prozessarchitektur? Beispiele für systemnahe-sachen die man programmieren kann.
-
Vll lernst du jetzt etwas und brauchst es in der ausbildung garnicht, dass könnte dir auch passieren. Wenn du wirklich komplett neu in dem thema bist wäre vll eine scriptsprache interessant mit der du die kontrollstrukturen usw. lernst.
-
Dany5 schrieb:
Ich hab noch knapp 2 Jahre Zeit bevor vlt. die Lehre anfange, also habe ich 2 Jahre um Sprachen zu lernen.
Dann fang mal lieber an anstatt hier blöde fragen zu stellen, mit welcher sprache du anfängst ist scheißegal.
-
Dany5 schrieb:
Ist C nicht C#?
Nein, genauso wenig wie viele Bücher die ein "Visual C++" im Namen haben nicht C++ sondern häufig C++/CLI (was wieder eine andere Sprache ist) lehren.
C ist eine prozedurale Sprache, die zumindest von der Sprachsyntax her keine direkte objektorientierte Programmierung zulässt (auch wenn man diese mehr oder weniger gut simulieren kann). C wird häufig in der Treiberentwicklung, im Embedded Bereich (Mikrocontroller...) und bei Betriebssystemen verwendet.
C# ist eine Sprache die wiederum in diesen Bereichen weitgehend ungeeignet ist, und das .Net Framework verwendet (und damit hauptsächlich unter Windows relevant ist, auch wenn Mono einen großen Teil des .Net Frameworks abbildet). C# spielt seine Stärken eher in großen Anwendungen aus, wo es meist kurze Entwicklungszeiten und hohe Wartbarkeit wichtiger, als die Performance ist.
Wobei ich glaube, das man dieses Thema eh schließen kann, wenn du diese Frage stellst nachdem bereits in Posts eindeutig C, C++, C#... als getrennte Sprachen erwähnt wurden, und du dir imho noch garnicht genug klar darüber bist, was du eigentlich willst.
-
Wie möchte ich wissen was für eine Sprache ich lernen möchte, wenn ich nicht weiss um was es geht bei "Prozessorarchitektur"? Oder bei "systemnahes programmieren"?
-
Jede Sprache, die sich in den letzten Jahren durchgesetzt hat, hat Vor- aber auch Nachteile, die "perfekte" Programmiersprache gibt es nicht.
Ein sehr theorethische Ansatzpunkt
Eigentlich muesst man dieses Zitat in Stein meiseln und den Stein den Projektmanagern auf den Kopf schlagen bis sie laut schreien : "ja ich hab es verstanden !"
Die Parxis sieht halt etwas anders aus
@Dany5
Aber Du bist jung und nicht mit den Altlasten des berufslebens vorbelastet !
Nimm irgendeine Programmiersprache (+1 fuer jede zur Wahl stehende Option :p ) und bau ein oder zwei simple Anwendungen, ohne Dich in die Feinheiten der Programmiersprache zu verbeissen. So solltest nen Gefuehl fuer grundlegende ProgrammierDinge bekommen (Code kommentieren, Umgang mit variablen, schleifen, bedingungen .... vielleicht schon einige weiterfuehrende DesignThematiken/Techniken .... Iteratoren bspw. )Danach kannst DIch immer noch für eine Sprache entscheiden und da richtig tief einsteigen. Dann waehlst Du deinen wahren Weg !!!
Zur Auswahl stehen:- Script Kiddie (auch mit RL-Level über 30 möglich, besonders beliebte Sprachen: Java, PhP, perl ... vom Anwender gehasst weil immer irgendwelche besonderen runtimes mit installiert werden muessen)
- Active X / .Net Sklave (beliebte Sprachen: c#, visual basic, visual basic script ... vom Anwender gehasst weil, siehe Script Kiddie, ok die meisten runtimes installiert windows nun per auto-update funktion, deswegen hassen die Anwender vielleicht eher M$, aber bleiben tut die Neigung zur extensiven verwendung fremder ActiveX/Net Komponenten mit optisch aufwendigen Effekten, die beim Anwender oft frühzeitig zu Augenkrebs fuehren ! beliebtestes Visualisierungs-Instrument: die Sanduhr von Windows !)
- (semi)proffesioneller Programmierer (C++ fast pflicht, Anwender hassen Ihn, weil gerad die wichtigsten Funktionalitaeten auf Grund von Project-Fehlplanung oder Zeitdruck oder Rueckgang finanzieller Mittel, rausgekuerzt wurden, begleitet vom staendigen gedudel des Projektverantwortlichen "in der naechsten Version" ... welche wahrscheinlich nie erscheinen wird
)
- Hacker/Computer Nerd(mindestens C, besser Assambler, Anwender hassen den nicht, weil sie seine Programme ignorieren(wer will heutzutage schon auf kommandozeile arbeiten), oder die Programme so ausgelegt sind, dass der User auf keinen Fall mitbekommen soll dass die ueberhaupt laufen
)
Du hasst die Wahl
P.S. nicht so Ernst nehmen und bitte keiner sich auf den Schlips getreten fuehlen
P.S.S. willst du beruflich programmieren, gibts mehrere Hauptrichtungen eigentlich ... HTML Programmierer/Webseiten Admin (Web Sprache ala php, perl + Techniken ala Web2.0 ... ), Anwendungsentwickler(meist c++), Datenbankentwickler (SQL, PLSQL ... ). Themen dazwischen wird meist durch nicht IT Abteilungen zelebriert, also Fachabteilungen/kleinere Firmen wo nicht Programmierer sich Hilfmittel / Tools zusammenstricken bzw vorhandene Anwednungen erweitern/Scripten wenn diese das zulassen ...
Aber selbst als Anwendungsentwickler solltest neben C++ mindestens noch eine scripstprache beherrschen, bzw schnell einarbeiten koennen und auch in der lage sein, C-Interfaces zuschreiben und bedienen.
-
Dany5 schrieb:
Ich hab noch knapp 2 Jahre Zeit bevor vlt. die Lehre anfange, also habe ich 2 Jahre um Sprachen zu lernen.
Ja um was geht es den bei der Prozessarchitektur? Beispiele für systemnahe-sachen die man programmieren kann.
Systemnahe Sachen.
Versuch' mal das folgendes Programm zu entwickeln:
- Ein Prozess erzeugt zuerst zwei temporäre Dateien A und B.
- Danach erzeugt er einen Thread 1, der sich damit beschäftigen soll, beispielsweise am Port 25000 auf Datenpakete zu warten.
Wenn ein Datenpaket kommt, soll er es in die temporäre Datei A kopieren.
- Ein Thread 2 wird auch noch erzeugt. Er soll sich damit beschäftigen,
irgendwelche Antwort-Daten, die er in der temporären Datei B findet, über den Port 25001 zu versenden.
- Ein Thread 3 soll pro Sekunde 25 mal die momentane Zeit in die Datei A
schreiben.
- Nachdem der Haupt-Thread die beiden Threads 1 & 2 gestartet hat, schaut er immer in der temporären Datei A nach, ob Thread 1 Daten vom Port 25000 oder Thread 3 die momentane Zeit dort abgespeichert haben, verarbeitet sie, und erfindet ein Datenpaket 'Antwort' oder 'Broadcast', das er in in die Datei B schreibt, damit sie Thread 2 versenden kann.
- Weil alle drei Threads natürlich gleichzeitig ablaufen sollen, wäre es ungünstig, wenn Thread 1 gerade etwas in die Datei A schreibt, während der Haupt-Thread versucht, daraus zu lesen. Tja, und da hätten wir schon eine Problemstellung, die mit den 'Standard-Sprachmitteln' - egal welche Sprache -
überhaupt nicht lösbar wäre. Was man allerdings durchaus zur Verfügung gestellt bekommt, sind entsprechende Betriebssystem-Funktionen und -Eigenheiten, die in DLLs lagern, und die bei der Lösung der Problemstellung unumgänglich sind.
Weil man diese Funktionen so bequem mit C - Syntax aufrufen kann, ist es nur naheliegend, ein derartiges Programm in C und nicht in irgendeiner phantasievollen Mode-Sprache zu schreiben, die ihrerseits nichts anderes tut, als den DLL - Funktionen andere Namen zu geben (und damit zur allgemeinen Verwirrung beizutragen), und das dann als 'eigenes' Sprachkonstrukt dem Verwender der Phantasie-Sprache unterjubelt. Wozu eine Funktion über Umwege aufrufen, wenn's auch direkt == systemnahe geht, könnte man da sagen.--> Das ist jetzt nur ein Skizze für so eine typische Aufgabe, wo es einfach kontraproduktiv wäre, etwas anderes als C zu verwenden. Und wenn Du mal 'nen
Server für ein (MM)Online-Game basteln möchtest, könnte es durchaus passieren, dass derartige systemnahe Sachen interessant werden.
In allen anderen Fällen findet man wohl auch mit C#, Java, C++ usw. das Auslangen. Das Problem dabei: Man ist halt sehr unflexibel mit diesen Sprachen und im Falle von C# und Java davon abhängig, welche Neuheiten sich irgendwelche proprietären Sprachentwickler in der nächsten Zeit so einfallen lassen oder nicht. Für C++ gilt ähnliches.mfg
-
Ehrlich: Du gehst das ganze falsch an. Wenn du programmieren lernen willst, dann lern programmieren und diskutier nicht in einem Onlineforum darüber welche Programmiersprache du lernen solltest :p. Wenn du ernsthaft programmieren willst, dann wirst du im Leben eh nicht mit einer einzigen Programmiersprache auskommen. Daher ist die Wahl der Programmiersprache am Anfang gar nicht so wichtig. Vermutlich ist es sogar besser, wenn man mit einer Programmiersprache anfängt, die man später nicht mehr benutzt. Viele hier dürften zB mit BASIC oder Pascal angefangen haben.
Schau dir halt zu den Sprachen die dich interessieren ein paar Tutorials an und die die dir am besten gefällt nimmst du einfach.
C++:
http://www.stroustrup.com/Programming/Python:
http://docs.python.org/tutorial/
http://www.greenteapress.com/thinkpython/html/index.html
http://inventwithpython.com/chapters/Scheme:
http://docs.racket-lang.org/quick/index.html
http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-1.html#node_toc_start(Und nimm kein C#, wenn du kein Sklave von Microsoft werden willst :p)
-
RHBaum schrieb:
...Anwendungsentwickler(meist c++)...
Das "meist c++" war mal. Ich programmiere zwar beruflich noch immer mit C++, aber kenne kaum noch eine Softwarefirma im Bereich der Anwendungsentwicklung die für neue Projekte nicht auf Java oder C# gewechselt ist.
Die Ausnahme hierzu ist eigentlich nur alten Anwendungen der Fall, wo ein Wechsel teuer wird (aber selbst dort habe ich schon einige Migrationsbemühungen festgestellt). Sehr selten habe ich den umgekehrten Weg erlebt (oder dem Wechsel zum Konkurrenzprodukt wie z.B. Java nach C++ oder C#).