Programmier Sprache lernen

  • Ich würde gerne eure Meinung zum lernen einer
    Programmiersprache wissen. Ich habe AutoIt als Einstiegssprache gewählt um mir
    Grundkenntnisse in der allgemeinen Programmierung aufzubauen.

    Nun möchte ich eine mächtigere Programmiersprache lernen,
    mit welcher ich in Zukunft beruflich arbeiten möchte.

    Nun meine Frage, welche Sprache wird heute und auch in
    Zukunft gebraucht? Hintergrund ist der, dass ich aktuell als Kaufmann tätig bin
    und sehr gerne in die Anwendungsentwicklung wechseln möchte.

    Folgende Sprache haben Sie herauskristallisiert:

    - Java ;laut Jobbörse am gefragtesten
    - C#
    - C++
    - Objectiv C
    - PHP

    Evtl. kennt wer den Schwierigkeitsgrad der genanten Sprachen
    und kann hier seine Erfahrung mitteilen

  • Hm, Also ich glaube eine genaue Antwort kann man nicht geben.

    Mir wurde einst gesagt, dass wenn man GUI-Anwendungen programmieren will, dann C#/Java.
    Ich finde Persönlich .NET aber schöner. Mittlererweile gibt es so viele Java Entwickler, dass ich es zwar auch gelernt habe,
    aber eben dennoch lieber mit C#/WPF arbeite.

    Es sind aber zur Zeit auch start die Mobile-Platformen am kommen, also Android/iOS demnach Java oder Objectiv C.


    Web-Plattformen HTML5, CSS3, jQuery, ...


    Wenn du gut bist, versuche ABAP zu lernen. http://de.wikipedia.org/wiki/ABAP
    Interessanter weise auch noch häufig gesucht und vorallem gut bezahlt. SAP halt.


    Aber da man heut zutage eh fast alles Kombinieren kann... nun was soll man sagen :p
    Lerne das was dir Spaß macht. Zwinge dir nicht etwas auf, was du vielleicht gar nicht wirklich lernen willst.


    Persönliche einschätzung:
    (1 sehr gut, 2 gut,...6 ungenügend)
    C#/WPF mit Visual Studio 2010+: 2+
    C# mit MonoDevelop: 3+
    Java mit NetBeans: 2+
    Java mit Eclipse: 3
    JavaFx mit NetBeans: 2+
    PHP mit Aptana Studio: 2
    Android mit Android Studio: 2+
    Android mit Eclipse: 4
    C++/C mit Visual Studio 2012+: 2

  • Es kommt natürlich immer draufan in welche Anwendungssparte du einsteigen möchtest, Web-Apps, Smartphone-Apps, Sonstige PC-Software, Spiele oder wasauchimmer. Du müsstest dir zuerst vorallem DARÜBER Gedanken machen. Ich kann dir jetzt schon sagen dass ICH PHP liebe, aber das nützt dir überhaupt nichts wenn du z.B. eine Buchhaltungssoftware schreiben willst.

    Eine Java-Basis ist im Allgemeinen recht schnell und einfach zu erlernen. PHP-Grundelemente lassen sich auch innerhalb von 2-3 Monaten antrainieren.
    Das ganze C-Zeugs ist da schon ETWAS anspruchsvoller. Aber wie gesagt es kommt zuerst vorallem auf das Gebiet an, in dem du Developen möchtest, aber ich denke da hast du dir bestimmt auch schon Gedanken darüber gemacht...?

    Bild1: Ich beim debuggen

    • Offizieller Beitrag

    Hey,

    War vor kurzem auch an dem Punkt wo du jetzt stehst. Mach gerade ein riesiges Projekt, welches auf einem relativ langsamen Windows PC (mit touch etc) läuft und welches ähnlich wie Wireshark funktionieren soll, nur das bestimmte nachrichten "entschlüsselt" bzw entpackt werden müssen. Ich fang also an mit AutoIt zu programmieren. Merke natürlich aber irgendwann, mist! AutoIt ist zu langsam um Daten in Echtzeit anzuzeigen und gleichzeitig noch zu entschlüsseln. Also hab ich mich mal im WWW umgehört, wollte C/C++ Lernen. Und von überall bekomme ich folgendes zuhören: C/C++ ist super schnell und eignet sich daher für Funktionen die viel Rechenleistung brauchen, aber für das alles drum herum (GUI etc.) eigent sich C#/Visua Basic besser.

    Gut dacht ich mir, Visual Basic will ich nicht lernen da ich dort kaum ein Vorteil zu AutoIt sehe, und mich nerven die ganzen Frameworks, und C# is ähnlich wie C, also mal C lernen. Hat geklappt, wichtige dekodierungsfunktionen mache ich nun mit reinem C. Jetzt der Versuch eine GUI zu bauen.... Wuhag, das gefiel mir alles nicht, die ganzen Frameworks wie z.B. QT find ich sehr umständlich, nicht besonders schick und außerdem viel zu überladen. Ich habe mich also daran gemacht, die funktionen in C als DLL zu schreiben - der ganze Rest wird wieder mit AutoIt gemacht, und was soll ich sagen? Ich bin total begeistert, was man aus AutoIt mittlerweile doch herrauskitzeln kann! Die Performance ist sogar besser als bei Wireshark auf dem langsamen PC, die Dekodierung findet in echtzeit statt dank C und falls es mal ein änderungswunsch in der GUI gibt ist das dank AutoIt kein Problem sondern nur ein Ding von Minuten!

    Lange rede kurzer Sinn: Solange du unter Windows bleiben willst empfehle ich dir aus eigenen Erfahrung: Lern C! C ist noch relativ simpel und schlicht, genau deswegen find ich die Sprache so gut, aber vorallem ist C schnell, schneller als Java, schneller als Basic und natürlich auch schneller als AutoIt. Die Kombination C + AutoIt ist für mich bisher (!) unschlagbar (unter Windows).

    Gruß,
    Spider

  • Ich schließe mich Spider an. Autoit ist einfach das einfachste (und vielleicht auch beste) für alles, was nicht schnell gehen muss. Wenn es schnell gehen muss, musst du dann doch auf C(++) umsteigen oder inline ASM oder C++-Dlls benutzen. Das funktioniert bei mir auch alles immer super, ich bin begeistert, was man mit guter programmierung alles aus einem Prozessor rauskitzeln kann. Und was man dann alles mit OpenCL und der Grafikkarte hinkriegen kann! (siehe Andys angefangene OpenCL UDF ^^)

  • Hallo

    ja, da will ich mich auch gerne anschließen. Ich lerne im Moment im Studium mit C. Ich finde die Sprache an sich sehr leicht zu lernen und außerdem kommt man, wenn man C kann auch recht leicht zu C++. Du kannst am besten sofort in einer C++ Entwicklungsumgebung programmieren, so kannst du nützliche Funktionen der Standartbibliotheken von C++ mit benutzen, wirst aber nicht unbedingt von dem riesigen Umfang der Sprache C++ erschlagen.
    Wenn du C kannst, dann kannst du auch leicht in C# (für GUI's) oder Objective C (App Entwicklung) programmieren. Ich finde mit C ist man am flexibelsten.

    DFPWare

  • Wenn du es nicht berufsmäßig willst (wie ich zum Beispiel.Ich meine mir macht programmieren einen riesigen Spaß aber ich glaube nicht das es mir auch Spaß machen würde wenn ich den halben Tag vor dem Schirm sitzen müsste und machen muss was mir aufgetragen wird.) Würde ich autoit und c dlls nutzen.Da du das aber beruflich willst rate ich dir zu delphi und php.Delphi hat eine schöne Syntax und ist plattformunabhängig.Mit php kannst Du auch Websites erstellen was einem nie schaden kann.

  • C ist sehr einfach, aber auch sehr low-level, also fehleranfällig. Die Wahrscheinlichkeit für MemoryLeaks ist hier am höchsten. Man muss halt alles selber machen und wenn man String oder Array kopieren will, dann muss man auch Element für Element kopieren. Wenn man Speicher reserviert, dann muss man den selber aufräumen. C ist aber gut geeignet um kompakte Algorithmen sehr effizient zu lösen. Ich finde, dass jeder Programmierer C kennen sollte.

    C++ ist eine sehr schwer zu lernende Sprache, die es aber erlaubt, große Projekte übersichtlich, sicher und schnell zu entwickeln. Sie verleitet aber dazu, unsicher und unübersichtlich zu schreiben, u.A. weil die meisten Buchautoren keine Ahnung von modernem C++ haben. (*hust*)
    C++-ähnliche Sprachen sind D, Java und C# und Vala. Java ist weit verbreitet, hat aber nach meiner Ansicht viele Nachteile und Unsauberkeiten. D sollte das neue und bessere C++ werden und hat es fast geschafft, wäre da nicht ein echt schlimmer Designfehler eingetreten. C# gefällt mir ganz gut, ebenso Vala (mittelding zwischen C und C#), allerdings heißt es wie immer, eine Programmiersprache ist so lange gut, bis man sie kennt. Wenn man einen Garbage-collector akzeptieren will und mit der geringen Akzeptanz klar kommt, rate ich zu D.

    Python ist auch toll, sollte meiner Meinung nach jeder ein bisschen können, denn diese Sprache ist sehr übersichtlich, modern und dynamisch.
    Eine funktionale Programmiersprache (z.B. Haskell) sollte man sich irgendwann mal anschauen, wenn man schon gut programmieren kann, denn hierbei lernt man neue Wege, die einem helfen, sauberen Code in anderen Sprachen zu schreiben.

    Von Objective-C und php kann ich abraten, sie sind eher Krankheiten als Programmiersprachen, und auch wenn php noch sehr wichtig ist, wird es wohl (hoffentlich) bald durch Python oder etwas anderes abgelöst werden.

  • Zitat

    Von Objective-C und php kann ich abraten, sie sind eher Krankheiten als Programmiersprachen, und auch wenn php noch sehr wichtig ist, wird es wohl (hoffentlich) bald durch Python oder etwas anderes abgelöst werden.


    Zu Objectiv-C kann ich nun weniger sagen aber PHP? EIne Krankheit? Mal abgesehen davon, das PHP sicher nicht (zumindest nicht zu meinen Lebzeiten) von irgendetwas abgelöst werden wird, was verleitet dich dazu es als "Krankheit" zu bezeichnen?

    Das ist ziemlich unsachlich, geht komplett an der Realität vorbei und bringt damit doch den TS nicht im geringsten weiter. PHP ist, und da kann sich jetzt mal wieder gegen auflehnen wer will, im Webbereich nicht wegzudenken. Beherschst man es nicht, ist man zum grössten Teil fehl am Platze. Den kleinen Anteil an Alternativen wird man überwiegend nur in grösseren Unternehmen antrefen, die sich diese Exoten leisten. Der Rest wird weiterhin auf PHP-basierte Systeme setzen. Und das nicht ohne Grund.

    Ich kann jedenfalls versichern, das ich mich in all den Jahren noch nicht ein mal mit irgendetwas angesteckt habe, nur weil ich den ganzen Tag auf PHP source starre. Und wenn PHP eine so unfassbar schlechte Programmiersprache ist, dann frag ich mich ernsthaft, wie sie mein Haus, mein Auto und meine Familie all die Jahre finanzieren konnte. Das verwirrt mich doch sehr.

    • Offizieller Beitrag

    Eine objektive Antwort auf diese Frage wird man schwer finden können.
    Wenn man nach zu erwartenden Entwicklungen geht, sind vermutlich Sprachen im Fokus, die speziell Touchumgebungen unterstützen. Wobei das Rad der Entwicklung so schnell dreht, dass das in 5 Jahren wieder total anders aussehen kann.
    Vom Handling her ist es sicher von Vorteil, wenn die Sprachen sich selbst um den Speicher kümmern.

    Ich möchte mal eine weitere Sprache einbringen: Lua
    Kaum ein Spiel, kaum ein Fotoapparat kommt noch ohne aus. Wobei meist nicht die kpl. Software in Lua geschrieben wird, sondern vorrangig Plugins. Syntax ist leicht zu erlernen.
    (Meine Vorliebe für Lua ist ja sicher bekannt :D)

  • womit ich mein Hauptberuf in die Entwicklung wechseln kann


    Ich denke wenn du 100 Programmierer frägst welche die besten und zukunftssichersten Sprachen sind dann bekommst du ca. 105 verschiedene Antworten.
    Weil jeder eigene Vorlieben hat und weil keiner weiß wohin die Entwicklung langfristig geht.

    womit ich mein Hauptberuf in die Entwicklung wechseln kann


    Ohne genauere Infos lassen sich da keine Vorschläge machen die zu deiner Situation passen.
    Weil es keine "beste Programmiersprache" gibt.
    Willst du innerhalb deiner Firma in die Entwicklung wechseln? Oder willst du die Firma wechseln?
    --> Wenn innerhalb der Firma: Was wird bei euch in der Entwicklung programmiert?
    --> Wenn wechseln der Firma: In welche Branche willst du wechseln bzw was willst du machen?

    Was willst du später mal entwickeln?
    Desktop- oder vielleicht Webapplikationen?
    Objektorientiert oder Funktional?
    Mehr GUI oder mehr Datenverarbeitung/Berechnung...?
    Oder vielleicht sogar Spiele oder KI?
    Hardwarenah?
    .....?

    Wenn du das alles mal möglichst ausführlich beschreibst dann kann man genauer überlegen was für dich gut passt.
    Natürlich kann man mit den meisten Programmiersprachen fast alles machen. Die Frage ist nur ob es z.B. sinnvoll ist AutoIt einen Egoshooter zu basteln.

  • Hi,
    Schnitzels Ausführungen ist nicht mehr sonderlich viel hinzuzufügen...

    @Rynow
    Du bist 27 Jahre alt, hast du dich ersthaft gefragt, was du einem Entscheider für einen Arbeitsplatz antworten willst wenn er dich fragt, was du einem andern 27-Jährigen voraus hast, der seit 12-15 Jahren intensiv PHP/Java/JS/LUA/C/C++/C#/FORTRAN/COBOL/E#/F/G#/beliebigeandereesoterischeprogrammiersprache programmiert?

    Zitat

    Hintergrund ist der, dass ich aktuell als Kaufmann tätig bin
    und sehr gerne in die Anwendungsentwicklung wechseln möchte.

    Besinne dich auf dein "Know-How" im Bezug auf deine kaufmännische Erfahrung und baue bspw. mit Hilfe von AutoIt deinen programmiertechnischen Background aus.
    Ich gehe davon aus dass du im kaufmännischen Bereich gearbeitet hast, daher kennst du den "Workflow" in DEINEM Beruf und bist damit Lichtjahre jedem noch so excellenten Programmierer voraus!
    Automatisiere Abläufe, schreibe Scripte für deine Kollegen, kontaktiere den Softwarehersteller eurer Firmensoftware und baue darüber ein "Netzwerk" für dich auf. Deine dann gewonnenen Erfahrungen und Kontakte wiegen jeden "Skill" in einer Programmiersprache auf!
    Denn eins ist klar: Ein Programmierer ist nur so gut wie die Vorgaben, die man ihm gibt...

    Es gibt reihenweise Software, die ausschliesslich von excellenten "Programmierern" erstellt wurde. Die Software an sich ist aber in der Praxis nahezu unbrauchbar, Stichworte "Klickibunti" und "featuritis".
    Die Anwender und Nutzer dieser Software und auch die Käufer großer Softwarepakete wählen IMMER diejenige Software aus, die sich in den derzeitigen Ablauf innerhalb der Firma am komfortabelsten integrieren lässt! Davon hat aber der "Programmierer" keinerlei Ahnung, er macht "das so, wie er es am besten findet". Er ist Programmierer und kein Anwender....frag mal, wieviele Programmierer 8 Stunden am Tag mit der von ihnen erstellten Software arbeiten wollten, du würdest dich wundern...

    In meinem persönlichen Umfeld habe ich in den letzten 20 Jahren die Erfahrung gemacht, dass die Softwareentwicklung gerade im Bereich der Auftragsabwicklung bzw. Ablauforganisation massiv kontraproduktiv arbeitet. Wir benötigen heute mit einer "Branchenlösung" ca. doppelt so viele Mitarbeiter in der Auftragsbearbeitung und Auftragsvorbereitung wie vor 20 Jahren, wohlgemerkt bei der selben Menge der hergestellten Produkte. Das liegt ausschliesslich am "Wokflow" innerhalb der Software! Als "Mausschubser" als Programmierer up to Date wurden, begann der Anfang vom Ende.
    Setzt man sich mit dem Softwarehersteller in Verbindung bzgl. einer Beschleunigung oder Verbesserung im Arbeitsablauf, bekommt man kurz darauf die Mitteilung "nicht möglich, da viel zu Aufwendig" oder ein Angebot mit Preisvorstellungen im Bereich von 2-3 Jahresgehältern eines Programmierers. Für einen Vorschlag, der bei einer Anwendung 14 Mausklicks einspart, bei 10 Mitarbeitern, die diesen Ablauf ca. 50-100x am Tag nur in unserer Firma durchführen. Einsparung pro MA ca 1/2h täglich! Solch einen Vorschlag bei Toyota angebracht, und man bräuchte sein Leben lang nicht mehr arbeiten gehen....
    Also mache ich das (in meiner Freizeit, bin kein Programmierer ^^ ) in AutoIt, und alle sind happy!
    Natürlich könnte ich mich hinsetzen und versuchen in C oder XYZ# programmieren, aber wozu? Viel lieber sage ich dem Programmierer, wie ich mir die programmtechnische Umsetzung der Problemlösung vorstelle. "Code kloppen" kann der dann selbst, und ich habe Aufgrund meiner Erfahrungen in AutoIt / ASM / VBA genug Background, um Hinweise bei evtl. Problemen geben zu können. Daher mache ich mir um meine berufliche Situation auch keinerlei Gedanken, der Markt für diese Tätigkeit wächst expotenziell^^, während die Gehälter der "Progerammierer" infolge Marktüberschwemmung kontinuierlich fallen.

    Lies dir vor allem die Beiträge von I2C und Marthog durch und lese zwischen den Zeilen!

    • Offizieller Beitrag

    Also du willst nicht Selbstständig werden, richtig?

    Ich bin es nämlich, und dem Endkunden is es ja shitegal womit ich Programmiere solange es sicher und zuverlässig läuft, deswegen meine Entscheidung zu AutoIt + C.

    Wenn du irgendwo mit einsteigen willst: C! C wirst du überall gebrauchen können, C ist schön Systemnah, deswegen lernst du auch viel über wichtige Abläufe die im PC vonstatten gehen und kannst danach so ziemlich jede Programmiersprache sehr leicht erlernen.

    Gruß
    Spider

  • Andy dein Post hat mich wirklich zum Nachdenken gebracht. In der Tat ist das so, dass kein Programmierer weiß wie man in der Opparativen arbeitet und was dabei helfen kann. Aus diesem Grund habe ich mit AutoIt angefangen und innerhalb dieser Firma schon eine Menge Hilfreicher Tools gebastelt, die jedem hier die Arbeit erleichtern.

    Da mir das Programmieren mit AutoIt so viel Spaß macht, dachte ich mir ich sollte besser spät als nie in diese Branche wechseln.

    Schnitzel
    Am meisten Spaß macht mir das entwickeln von nutzerfreundlichen Oberflächen. Ich möchte Desktop sowie auch Webapplikation entwickeln. Den großen Unterschied zwischen Objektorientiert oder Funktional habe ich bis heute nicht ganz begriffen, aber ich denke das versteht man, wenn man aktiv damit arbeitet.

    Da meine Firma leider keine Möglichkeit bietet meine Position in diesen Bereich zuverlegen, kommt nur noch ein wechsel zur einer anderen Firma in Frage. Vor einen Selbstständigkeit habe ich ehrlich gesagt die Hosen voll :wacko:

    Ich bedanke mich für euer Zahlreiches Feedback.

  • Schnitzel
    Am meisten Spaß macht mir das entwickeln von nutzerfreundlichen Oberflächen. Ich möchte Desktop sowie auch Webapplikation entwickeln. Den großen Unterschied zwischen objektorientiert oder funktional habe ich bis heute nicht ganz begriffen, aber ich denke das versteht man, wenn man aktiv damit arbeitet.

    Prozedural (ich denke, das meinst du mit funktional) programmiert man, indem man Code in Funktionen auslagert und sich diese gegenseitig aufrufen.

    Bei Objektorientiert baut man die Datenstruktur (NICHT die Algorithmen) mit Objekten nach. Das klassische Beispiel ist ein GUI. Jeder Element ist ein Objekt, enthält seine Daten (Text, Farbe), es gibt ein allgemeines Element und davon viele Spezialisierungen, die teilweise die gleichen Funktionsweise haben (kann man den Text ändern), in anderen Punkten aber anders sind, denn einen Button kann der User klicken, in ein Edit schreiben. Jedes dieser Elemente hat wieder Unterelemente.
    Es gibt ein einheitliches Interface, dass in viele richtungen spezialisiert werden kann. Es ist wesentlich übersichtlicher, als das gleiche mit if oder Funktionspointern zu realisieren.

    Funktional gibt es auch, ist aber ganz anders, denn während prozedural und objektorientiert eine Liste von Anweisungen enthält und Daten mit Zustandsänderungen bearbeitet, besteht funktionale Programmierung aus einer Verkettung von Funktionen. Es ist mathematisch sehr interessant, denn man kann seine Formeln viel einfacher übertragen und einfacher Beweise durchführen.

  • Mist, beim Land beschäftigt, bekommt man für so etwas nicht mal ein Danke :)
    Paar Millionen reingeholt... und nix..sollte mal die Branche wechseln :)