Welche Programmiersprachen könnt ihr/wollt ihr noch lernen?



  • Ich würde mal sagen, wie schnell man eine neue Sprache lernen kann, kommt auf den Programmierer an und was er schon kennt. Ein durchschnittlicher Java Programmierer wird es vielleicht schaffen in 2 Wochen ein schlechtes C++ Programm im Java-Style zu schreiben. Ein wirklich guter Java Programmierer wird es schaffen in 2 Wochen ein ordentliches C++ Programm mit Initialisierungsliste, const correctness, RAII usw. zu schreiben, wenn einer ihm genau diese Unterschiede beibringt. Ein guter C++ Programmierer wird in weniger als 2 Wochen ein ordentliches Java Programm schreiben können, wenn man ihm sagt worauf er achten muss. Einer der schon eine Menge Programmier- und Scriptsprachen kann wird mit einer neuen Sprache einfach los programmieren können und muss sich nur die neue Syntax anschauen.



  • naja schrieb:

    Einer der schon eine Menge Programmier- und Scriptsprachen kann wird mit einer neuen Sprache einfach los programmieren können und muss sich nur die neue Syntax anschauen.

    Nein.

    Jede Sprache hat Paradigmen die man lernen muss. Man kann sie natuerlich recht schnell verstehen wenn man clever ist, aber man muss sie dennoch erst einmal lernen.



  • Meinst du wirklich, dass du es schaffst für jede sprache irgendetwas aufzuzählen, dass es in keiner anderen Sprache gibt?



  • naja schrieb:

    Meinst du wirklich, dass du es schaffst für jede sprache irgendetwas aufzuzählen, dass es in keiner anderen Sprache gibt?

    Themenverfehlung.

    Selbst wenn es nur 3 Idiome gaebe die man koennen muesste, muesste man immernoch die Zeit aufwaenden sich damit auseinanderzusetzen welches der 3 Idiome in der Sprache verwendet wird.

    Nur sind es keine 3 Idiome und Paradigmen sondern eine ganze Menge. Die meisten sind trivial zu verstehen, zB RAII. Simpel und primitiv. Zu lernen es richtig anzuwenden muss man aber dennoch. Und dann muss man auch noch bedenken wie das das Code Design beeinflusst. Selbst wenn man also alle Paradigmen und Idiome kennt, muss man immernoch ueberlegen wie diese in genau dieser Konstellation zusammenarbeiten koennen.

    RAII ist zum Beispiel nett um Ressourcen aufzuraeumen. Das fuehrt aber weiter zu Exception Handling dass dadurch ploetzlich komplett anders gemacht wird als zB in Java. Und weiters haben wir jetzt auch noch Transaktionen uber RAII vor uns. Dazu auch die Abstraktion alles in RAII-Klassen zu stecken und dann noch solche netten Sachen wie ScopeGuard/ON_BLOCK_EXIT was zu deferred Code Execution fuehrt (was wir zB bei Transaktionen einsetzen koennen).

    Alles ist vernetzt. Und auch wenn vieles davon trivial ist wenn man es einmal verstanden hat - es dauert eine gewisse Zeit bis man diese ganzen Paradigmen und Idiome der Sprache kennt und die Zusammenhaenge versteht.

    Ein Programm kann ich jederzeit in jeder Sprache schreiben - guten Code dagegen nicht. Irgendwas hin nudeln ist kein problem, aber will man sowas dann wirklich warten wollen...?



  • Themenverfehlung 🙄
    Ich hab ja auch nicht geschrieben, dass man die neue Sprache sofort perfekt kann und alle Mittel sofort perfekt ausnutzt, dass werden auch viele die Monate oder Jahre lang mit der Sprache programmiert nicht können. Und das muss man auch nicht können um ein vernünftiges und wartbares zu schreiben, es gibt noch was zwischen hinnudeln und alle Möglichkeiten perfekt ausnutzen, letzters wird sowieso fast keiner schaffen. Bei entsprechend komplexen Sprachen wie z.B. C++ tauchen auch immer wieder neue Ideen auf die vor ein paar Jahren noch keiner verwendet hat, aber jetzt fast jeder verwendet, weil sie vernünftig sind. Deshalb sind aber ältere Programme die noch anders geschrieben wurden nicht unwartbares gehacke. Wenn mans mit den Kombinationen der Idiomen zu weit treibt, endet das ganze nur in Overengineering und kann nur noch von Experten gewartet werden, was auch nicht der Sinn sein kann.

    Wenn man sich einmal ein gutes Basiswissen geschaffen hat, kann man mit so gut wie jeder Sprache vernünftige und wartbare Programme schreiben, auch wenn nicht alles perfekt ist.



  • Wenn du die Paradigmen und Idiome der Sprache nicht einsetzt, ist der Code nicht wartbar.

    Wie gut du sie einsetzt ist dann halt ein Zeichen von Qualitaet - aber wenn du sie nur irgendwie oder garnicht einsetzt, ist der Code nicht wartbar.

    Ich habe schon zuviele Projekte gesehen und tw. auch warten muessen wo das der Fall war. Weil die Leute eben glauben dass wenn man ein Problem in der Sprache loesen kann, man in ihr programmieren kann. Aber das ist leider nicht der Fall.



  • Shade Of Mine schrieb:

    Wenn du die Paradigmen und Idiome der Sprache nicht einsetzt, ist der Code nicht wartbar.

    Wie gut du sie einsetzt ist dann halt ein Zeichen von Qualitaet - aber wenn du sie nur irgendwie oder garnicht einsetzt, ist der Code nicht wartbar.

    Ich habe schon zuviele Projekte gesehen und tw. auch warten muessen wo das der Fall war. Weil die Leute eben glauben dass wenn man ein Problem in der Sprache loesen kann, man in ihr programmieren kann. Aber das ist leider nicht der Fall.

    Dann hast du wohl noch nie ein Programm gesehen das wirklich schlecht bis garnicht wartbar ist. Das kommt zum größten Teil von einer schlechten Architektur. Ich durfte schon mal miterleben, wie der Chef persönlich was designt hat, bei dem ein kleiner Fehler in einem Teil große Teile der Entwicklung an anderen Sachen lahmgelegt hat und bei jedem zusätzlichen Datum das hinzugefügt werden sollte, mussten ne ganze Menge anderer stellen angepasst werden, weil sonst garnichts mehr ging. Viel schlecht wartbarer Code entsteht auch, wenn die Programmierer zu lange und komplizierte Funktionen mit ner ganzen Menge Copy&Paste Code schreiben oder keine sauberen Schnittstellen definieren. Ob da einer jetzt RAII verwendet oder immer per Hand aufräumt, ändert relativ wenig an der Wartbarkeit, deswegen ist der Code noch lange nicht unwarbar sondern vielleicht ein bisschen aufwendiger zu warten. Gut, wenn einer nen kompletten Paradigmenwechsel durchführt und es schafft in einer OOP Sprache rein prozedural oder funktional zu programmieren, dann ist der Code sicher auch sehr schleht wartbar, aber das war nicht das Thema.



  • naja schrieb:

    Dann hast du wohl noch nie ein Programm gesehen das wirklich schlecht bis garnicht wartbar ist. Das kommt zum größten Teil von einer schlechten Architektur.

    Und woher kommt die schlechte Architektur? Weil jemand etwas mit der Sprache/Library macht, dass man so nicht macht. Ganz einfach.

    Aber natuerlich, man kann auch mist bauen weil man vom programmieren keine Ahnung hat, keine Frage. Aber darueber braucht man eigentlich nicht reden, denn wenn jemand zu dumm zum atmen ist, tja aeh, dann ists kein wunder wenn mist rauskommt, oder?

    Was aber ein Problem ist, ist wenn Leute die eigentlich programmieren koennen mit den Idiomen und Paradigmen der Sprache falsch umgehen. Schau dir da zB ein x-beliebiges Spieleprogrammierungsbuch fuer C++ an. Sowas meine ich. Die Autoren koennen programmieren, das steht ausser Frage - aber von C++ sollten sie die Finger lassen.



  • Shade Of Mine schrieb:

    naja schrieb:

    Dann hast du wohl noch nie ein Programm gesehen das wirklich schlecht bis garnicht wartbar ist. Das kommt zum größten Teil von einer schlechten Architektur.

    Und woher kommt die schlechte Architektur? Weil jemand etwas mit der Sprache/Library macht, dass man so nicht macht. Ganz einfach.

    Na, so ganz einfach kann man sich das auch nicht machen. Wieviele haben denn Ahnung von vernünftiger Softwarearchitektur, wieviele haben denn tiefergreifende Erfahrungen mit Softwartechnik? Man kann ja schon froh sein wenn halbwegs vernünftige Projektplanungen vorhanden sind und als Stütze ein grobes Vorgehensmodell darunter liegt. Und auch bei "modernen" Paradigmen wie OOP, wie schnell ist es denn passiert das man aus dem momentanen gedanklichen Modell "ausbricht" und etwas "unsinniges" unterstellt (speziell meine ich damit is-a und has-a Beziehungen). Das und noch die vielen anderen Kleinigkeiten samt mangelnder Sprachkenntis kulminieren dann in einer bescheidenen Leistung bei der Durchführung einer SW-Entwicklung. So einfach ist es nämlich nicht mit den vielen Rädchen die da ineinandergreifen müssen damit das große Ganze auch funktioniert. 🙂



  • Shade Of Mine schrieb:

    naja schrieb:

    Dann hast du wohl noch nie ein Programm gesehen das wirklich schlecht bis garnicht wartbar ist. Das kommt zum größten Teil von einer schlechten Architektur.

    Und woher kommt die schlechte Architektur? Weil jemand etwas mit der Sprache/Library macht, dass man so nicht macht. Ganz einfach.

    Nö, das was da gemacht wurde hätte mit keiner Sprache besser funktioniert. Es wurden sogar 2 Sprachen verwendet. Die verwendeten Strukturen und Schnittstellen waren einfach so schlecht, dass diese Probleme auftreten mussten, egal mit welcher Sprache man es implementiert hätte. Und sowas ist wirklich schrecklich wartbar, dagegen ist ein C++ Code im Javastyle noch was schönes. Eine gute Programmarchitektur zu entwerfen ist um einiges schwieriger, als bekannte Paradigmen und Idiome zu verwenden.

    OK, sowas schlechtes wie es da gemacht wurde hinzubekommen ist auch schon wieder eine Kunst. 😃

    Was aber ein Problem ist, ist wenn Leute die eigentlich programmieren koennen mit den Idiomen und Paradigmen der Sprache falsch umgehen. Schau dir da zB ein x-beliebiges Spieleprogrammierungsbuch fuer C++ an. Sowas meine ich. Die Autoren koennen programmieren, das steht ausser Frage - aber von C++ sollten sie die Finger lassen.

    Kann sein, so ein Spieleprogrammierungsbuch hab ich noch nie angeschaut.


Anmelden zum Antworten