Welche Programmiersprachen könnt ihr?

Status
Für weitere Antworten geschlossen.
kim88 schrieb:
Die Konzepte sind am Ende ja immer in etwa das gleiche
Das ist für mich ein sehr entscheidender Kommentar. Ergänzend würde ich hinzufügen wollen, dass die Konzepte sich eher überschneiden, dass es allerdings auch in den meisten Sprachen Eigenheiten gibt, die die Sprache besonders machen.

Meiner Ansicht nach muss man in einer Sprache mindestens mal 6 Monate ein paar Stunden pro Tag gearbeitet haben, um die Sprache zu beherrschen (damit meine ich nicht, etwas fertig programmiert bekommen, sondern eher sich in der Sprache heimisch zu fühlen). Es geht dabei auch weniger um die Syntax, sondern mehr um:
  • Entwicklungsumgebung
  • Tooling / Package-Management
  • Deployment
  • Häufig benutzte Libraries und Frameworks
  • Einschränkungen der Sprache
Bis man das alles "beherrscht", vergeht etwas Zeit. Aber je mehr Konzepte man beherrscht, desto schneller geht es. Sprich: Je mehr Sprachen man beherrscht, desto mehr Konzepte sollte man verinnerlicht haben. Habe ich in einem Blog-Artikel auch mal zusammen gefasst: https://pilabor.com/blog/2021/05/learn-concepts-not-frameworks/

Sprachen, die ich aufgrund von "interessanten" höheren Konzepten auf jeden Fall empfehlen kann sind (und daher selbst auch schon gemacht habe), sind:
  • Rust (Traits, Error-Handling, Pattern-Matching, Generics, Borrow-Checker, Makros, Multithreading, tooling mit cargo - WASM)
  • C# (Extension-Methods, Linq, OOP, async/await/Multithreading, Generics, CLR, Code Generation)
  • Go (Channels, Go-Routines, Tooling - z.B. gofmt, go vet, etc)
  • JavaScript / TypeScript (Prototypisches Programmieren, Transpilation, async/await)
Es gibt sicher noch viel mehr interessante Konzepte, ich freue mich immer, wenn ich neue sehe.
 
  • Gefällt mir
Reaktionen: TomH22
andy_m4 schrieb:
Schon hier passt es nicht mehr ganz. Gibt zum Beispiel auch Sprachen ohne Variablen. Zum Beispiel funktionale Sprachen arbeiten eher mit Konstanten. Die haben auch keine Schleifen.
Arrays findest Du auch nicht überall. if/else findest Du auch nicht überall.

Das stimmt natürlich. Wenn man sich aber die Menge der "relevanten" Programmiersprachen ansieht, sieht man einen eindeutigen Trend in Richtung "multi-paradigmaler" Sprachen die in der Regel Elemente aus dem
  • prozeduralem
  • objektorientiertem
  • funktionalen
Paradigmen enthalten. Funktionale Konzepte wie anonyme Funktionen / Lambdas (bzw. Funktionen als "First-Class" values) und "lexical Scoping" sind in den letzten Jahren zunehmend populär geworden, währen sie lange Zeit ein Nischendasein fristeten. Andere populäre Konzepte sind Typ Inferenz, asynchrone Programmierung (async/await).

Wenn ich die letzten 30 Jahre zurückblicke (solange mache ich das schon...) ist das Thema Programmiersprachen tatsächlich "explodiert", und die Idee "kann man Eine, kann man alle" gilt tatsächlich weniger als früher. Sprachen wie Haskell sind z.B. nur mit einem gehörigen Maß an theoretischem Basiswissen zu verstehen. Wenn man sich aber mehr im "Mainstream" (C#, Java, Javascript/Typescript, Python, Swift, usw.) bewegt kann man sich schon relativ schnell in neue Sprache rein finden.

Aber unabhängig davon sollte man zwischen Programmiersprachen und dem Prozess der Software Entwicklung unterscheiden. Sprachen sind tatsächlich erst mal Werkzeuge, und nicht jede Sprache für jeden Zweck und auch für jeden Programmierer geeignet.
Umgekehrt ist das "Programmierhandwerk" erst mal von der Sprache unabhängig. Ein guter Programmierer wird meist in jeder Sprache guten Code schreiben, ein schlechter eben Schlechten. "Guten Code" definiere ich nicht damit, dass man jedes Feature der Sprache nutzt, sondern das er den Kriterien wie
  • Wartbarkeit
  • Lesbarkeit
  • Sicherheit
  • Performance
entspricht. Wenn ich in einer Programmiersprache noch unerfahren bin, schreibe ich vielleicht nicht Code der maximal performant oder elegant ist, aber deswegen ist der Code nicht direkt schlecht. Ein guter Programmierer wird mit steigender Erfahrung den Code refaktorieren (kann man das so schreiben:confused_alt:? Ich schreibe sehr selten deutsche Texte zu dem Thema ;)) und verbessern.


Ich weiß jetzt nicht, in welchem Kontext der TE diese Frage stellt, oft wird diese Frage von Leuten in der Ausbildung mit Hinblick auf Berufschancen, etc. gestellt.
Und das sage ich meist, dass man sich nicht zu sehr auf einzelne Sprachen versteifen soll. Sprachen kommen und gehen (meine ersten größeren Programme habe ich z.B. in Turbo Pascal geschrieben...), und das Lernen einer Programmiersprache ist eines der kleineren Probleme in der Informatik.
Ergänzung ()

sandreas schrieb:
Es gibt sicher noch viel mehr interessante Konzepte, ich freue mich immer, wenn ich neue sehe.
In Anbetracht des Trends, das Programmiersprachen in den letzten Jahren immer mächtiger geworden sind, habe ich in letzter Zeit großen Gefallen an Lua gefunden. Das ist eher das genaue Gegenteil, des es ein eher minimalistischer Ansatz ist. Es hat dahingehend viel Ähnlichkeit mit dem "Ur"-Javascript (vor ES5), allerdings etwas konsistenter bezüglich Semantik.

Ich stelle mir immer wieder die Frage ob "mächtigere" Programmiersprachen zu höherer Produktivität oder wenigstens besserer Software führen. Aber ich vermag keine Antwort darauf zu geben, denn Softwareentwicklung hat sich natürlich in den letzten 30 Jahren sehr gewandelt, und welchen Einfluss die Programmiersprache hat, und welchen Frameworks, Open Source, etc. kann man nicht mehr auseinanderhalten.
 
Zuletzt bearbeitet:
Und nun lasst ihr mal den Eroeffner des Threads wieder zu Wort kommen.
 
andy_m4 schrieb:
Was würde ich direkt mal bestreiten.
Okay, und ich würde das Bestrittene bestreiten.

Ich habe ein Problem. Ich möchte es gelöst haben. Dazu brauche ich eine Beschreibung und diese Beschreibung muß einer gewissen Syntax folgen. Wenn ich nen Pseudocode Compiler hätte, dann würde das auch genügen, und wenn ich richtig, also ich meine richtig gut wäre und besser als buchstäblich alle anderen, dann würde ich nen Compiler haben Deutsch-zu-Maschinencode => dann gebe ich dem die ganzen OPs aus dem Programmier-Forum hier und bekomme ausführbaren Code hinten raus.

Na klar kann ich jedes Problem auf X Wegen beschreiben, überhaupt keine Frage.
Nicht minder klar gibt es für jedes Problem mindestens(!) zwei Lösungen, eher mehr, und genauso klar gibt es fast unendlich viele Möglichkeiten, meinen Lösungsweg dem PC verständlich zu machen.

Aber einer reicht im Normalfall. Welchen, muß ich mir von Fall zu Fall überlegen. Und wenn der Rest in Ruby gelöst ist, dann muß ich mir natürlich angucken, wie Ruby da rangeht, weil ich mit Python oder PHP Syntax nicht weit kommen werde.

Andererseits ist sowas wie "<INSERT PL NAME HERE> Guru" erwiesenermaßen Blödsinn. Das heißt nur, daß man eben NICHT in der Lage ist, sein Problem in der anderen Sprache zu bewältigen --- man ist überspezialisiert und ist, wenn es "die eigene Programmiersprache" mal nicht mehr gibt, praktisch aufgeschmissen.

Es geht nicht darum, diese eine Programmiersprache in- und auswendig zu können, sondern ich muß mein Problem damit lösen können. Das ist alles.
 
  • Gefällt mir
Reaktionen: JP-M
@Azzlak
Wenn Du ein Interesse hast, dass dieser Thread wieder geoeffnet wird lass das einen Moderator wissen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben