• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Programmiersprache für Anfänger

darktrym

Fahnenträger
#26
Viel wichtiger als die Programmiersprache ist doch die eigentliche Aufgabe das Problem zu strukturieren und diese in Funktionen/Code umzusetzen.
Solange das nicht ausartet in: Wir schreiben erstmal getter und setter, die brauchen wir sowieso, pflastern unser Programm mit Kommentaren voll statt ordentlich zu programmieren und malen uns Diagramme bis es dunkel wird, ist dagegen nichts einzuwenden. Aber je nach Programmiersprache unterscheiden sich die Ansätze deutlich.
Bspw. portiere ich grad ein Delphi Programm nach Python. Das was da mit Strings gemacht wird und die Logik die dadurch entsteht, geht auf keiner Kuhhaut. Bei Java hätte ich da auch noch ein A4 Blatt Klassendiagramm zeichnen können.
Worauf ich hinaus will, der TO will ja nicht Yoda der Softwaretechnik werden sondern nur Tools schreiben die einen lästige Arbeit abnehmen. Da ist Python das richtige Instrument, wöllte man hingegen fancy Highend Kram super angepasst an's OS, wäre die Wahl eine andere.
 

peterle

Forenkasper
#27
Viel wichtiger als die Programmiersprache ist doch die eigentliche Aufgabe das Problem zu strukturieren und diese in Funktionen/Code umzusetzen.
Wir denken in Sprache - Wörtern und Grammatik - und das dürfte in der Programmierung noch deutlich stärker ausfallen.
Darauf zielte auch meine erste Anmerkung und nicht darauf BASIC schlecht zu machen oder gar Menschen, die es nutzen möchten.
Man kann damit schnell sehr ordentliche Ergebnisse erzielen.
 
#28
Wenn du erstmal nur grundlegende Programmierprinzipien lernen willst, ist hier eine Videoserie, mit der du einfach Programmieren lernen kannst. Du musst ja nicht mal die komplette Serie mitmachen, dann kriegst du innerhalb von ein paar Stunden einen Kickstart und egal, für welche Sprache du dich anschließend entscheidest, du hast dann zumindest schon mal einige Konzepte und Prinzipien verstanden und kannst die andere Sprache dann sehr viel einfacher lernen.

Du brauchst nicht mal was zu installieren, weil du direkt im Browser programmierst (in der Webkonsole, Sprache ist JavaScript). Das ist, denke ich, für einen ersten Start ganz gut. ;)
 

darktrym

Fahnenträger
#29
Einige Aussagen sind schon etwas grenzwertig und führen schnell zur Verwirrung. Das Hallo Welt Beispiel ist keins, doppelte Hochkommas und Anführungsstriche sind bei ihm das gleiche, Grammatik & Sprache wird stellenweise falsch dargestellt und wenn man in der Informatik stets bei 0 anfängt zu zählen, müssen Wirth und Hejlsberg sich geirrt haben. Bin wahrscheinlich auch die falsche Person für so ein Video.
 

FreeBSDuser

Well-Known Member
#31
C/C++ ist wie Rasieren mit einem richtigen Messer. Beim ersten mal schneidet man sich auf jeden Fall und es ist nicht für Jeden das richtige. Aber man kann damit die besten Rasuren hinbekommen.
Lol.
Der Spruch gefällt mir.
Nur stellte sich raus, dass es niemanden gibt der mit C ordentlich programmieren kann.
Man schaue sich nur die ganzen Exploit Datenbanken an, alle Opferprogramme in C.

Nicht nur, dass es kein Typesystem gibt, nichtmal Booleans - Nein alle finden es auch noch klasse und schön jeden Mist mit Macros und Präprozessor Defines zu machen.

Und da hört es ja nicht auf... Error handling ist wohl für Dumme, wer sonst gibt sich mit in-band error signalling und error states in globalen variablen ab. Und jeder macht es auchnoch anders.

Es gibt nichtmal Module ? WTF Das Programm wird buchstäblich in eine riesige Datei zusammengefügt und dann kompiliert. (Ja auch C++ macht das mehr oder weniger so)

Das mit dem Modulen hat wohl System; - C programmierern ist ein sauberes library management wohl auch viel zu high-level, sodass man sich .h datein überall hinschnorcheln muss und man nicht angeben kann welche Version man denn grade genau braucht.

Was sagst du? Es gibt ja automake && configure && make ?
Du willst mir sagen ich soll ein abstruses Programm ausführen, welches ein Shellscript generiert, was mein ganzes System durchsucht und daraus eine Makefile file zusammen String-concateniert die dann richtig schön imperativ meinen compiler 1000 mal aufruft.

Ja voll die glatte Rasur.


Ich sehe da eher Anzeichen von Selbstüberschätzung und Realitätsverzerrung.

Man kann doch nicht ernsthaft meinen, dass C einem auch nur Ansatzweise bietet, was möglich ist.
Das low-level argument zieht auch nicht, - Es ist in keinsterweise nötig einen Präprozessor einzusetzen, dem Nutzer Module vorzuenthalten, nichtmal eine Konvention für Booleans zu haben usw. um den Mist schnell zu kriegen.

Letztendlich geht es darum Komplexität zu managen, Programme haben heute Größen die es einzelnen Menschen unmöglich machen sie auch nur in Gänze zu lesen, geschweige denn zu verstehen. Jedes nichttriviale Programm erreicht einen Zustand bei dem der Programmierer Annahmen über Teile machen muss, die er nicht vollständig gelesen hat. Je mehr und je stärker diese Annahmen sind, je schneller kommt man voran.
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#32
Was hat Automake mit C und C++ zu tun? Automake ist einfach ein miserables Build-System aus den tiefsten 80ern, das versucht dem Entwickler einer Software die Unterstützung einer sehr heterogenen Plattform-Landschaft zu vereinfachen. Ein Problem, welches seit mindestens 15 Jahren nicht mehr existiert, da sich seit langem alle auch nur annähernd relevanten Plattform sich so weit ähneln, dass man den Unterschieden auch mit wesentlich subtileren Methoden beikommt. Nicht umsonst findet man inzwischen abseits der eingefleischten GNUschisten und ewig Gestrigen nur wenige neue Projekte, die noch Automake einsetzen. An seine Stelle sind andere Buildsysteme getreten, welche der Abstraktion der zugrundeliegenden Plattform nur noch eine untergeordnete Rolle zuweisen.

Mit deiner Kritik an C und C++ magst du durchaus recht haben. Aber auf der anderen Seite hat es auch im Jahre 2014 keine einzige Alternative geschafft, sich auch nur annähernd zu etablieren. Für C wäre mir nichts bekannt, was man stattdessen in der Praxis nutzen könnte. Zu C++ gibt es mit D zumindest eine theoretische Alternative, die allerdings bis heute nicht über ein relativ experimentelles Stadium hinaus gekommen ist und über so gut wie gar kein Ökosystem verfügt. Hauptsächlich, da sich nur eine sehr kleine Gruppe Personen überhaupt für die Fertigstellung der Sprache und ihrer Standardbibliothek interessiert. So bleibt es nur eine von diversen, irrelevanten Sprachen. Nun könnte man natürlich mit Java, C# und vielleicht sogar Python und Ruby argumentieren. Aber in meinen Augen zielen diese Sprachen einfach auf gänzlich andere Zielgruppe, haben mit dem heutigen Einsatzzwecken von C++ und vor allem C nur eine vergleichsweise kleine Schnittmenge.

Um mal auf das Thema zurückzukommen, halte ich es daher für sinnlos bis gefährlich, einem Neuling unbedarft die gerade gehypte Sprache der Woche zu empfehlen. Akademisch gesehen mag sie wunderbar sein und als Einzelkämpfer mag man damit auch gute Ergebnisse erzielen können, aber sobald man hinaus in die Welt gehen und sich an Projekten beteiligen oder sogar sein Geld mit Softwareentwicklung verdienen möchte, kommt man realistisch gesehen kaum mehr um die großen, etablierten Sprachen herum. Welche davon, hängt nicht zuletzt von dem Teilbereich der Softwareentwicklung ab, in welchem man sich bewegt. So gesehen war der beste Vorschlag in diesem Thread bisher eigentlich, erst einmal mit einer einfachen Sprache anzufangen und die Grundlagen zu lernen. Sobald man sich dann orientiert hat, zu einer Sprache zu wechseln, welche in dem angestrebten Bereich etabliert ist und sich tief in diese einzuarbeiten.
 

grogolz

Well-Known Member
#34
Ohne Kenntnisse über Datenstrukturen und Algorithmen wird der "Programmierer" unabhängig von der verwendeten Sprache das Niveau von "Hello World" nicht verlassen. Die Sprache ist nur ein Mittel zu einem mehr oder weniger guten Zweck.
Am Anfang steht sowieso die Analyse des Problems und die Beschreibung des Ziels.
 
#38
Und damit wird die Sprache auch total uninteressant, die Knuth da einsetzt. Heutzutage würde ein gut (strenger) typisierter, portable Vorgehensweise nach bewährten Standards und korrekte Benutzung einer Sprache wie C auch zur Fehlerarmut führen. Da muss man nicht abstruse Konstrukte und Methoden einsetzen.

Wobei TeX ist auch alt. Es ist wirklich besser so zu programmieren wie Knuth es damals gemacht hat, als die ganzen übrigen Kasper, bis in die 80er Jahre programmiert haben. Das ist ein wahrer Alptraum der Software-Entwicklung, der bis heute noch Schmerzen bereitet. Das schließt sogar die gewöhnliche Windows-API und Xorg mit ein, wenn man sich den Käse mal gründlicher anguckt. Die C-Standardbibliothek selbst hat aber auch einigen Stellen Geruch von den 80er Jahren, muss man zugeben.
 

FreeBSDuser

Well-Known Member
#39
Wobei man sagen muss, dass Knuth nie für sein Programmieren berühmt war, sondern für seine Algorithmen.

Für eine andere Low-Level Sprache kann man sich mal Ada anschauen. Total unsexy, hat jedoch überraschend angenehme Eigenschaften.
Nicht zu vernachlässigen Spark.

Rust sieht auch hübsch aus, aber noch seehr jung.

Es ist etwas frustrierend. Wir werden wahrscheinlich noch in 15 Jahren in C,C++ und Java programmieren, weil es billiger ist die schmerzen zu ertragen als umzusteigen.
Ich hoffe nur, dass diese Entscheidung bewusst getroffen wird und nicht mit einer vorgeschobenen Argumentation oder Realitätsverzerrung.
 

Athaba

Libellenliebhaber
#40
ich möchte Programmieren lernen. Mittlerweile weiß ich, dass es nicht die Programmiersprache für alles gibt, sondern, dass es davon abhängt was man machen möchte.
Ich glaube das siehst du falsch. Viel mehr ist es so, dass du mit jeder Programmiersprache alles machen kann. Sieht man in diesen Zeiten an JavaScript sehr gut. Ursprünglich für Browser gedacht gibt es das mittlerweile am Server, Intel hat eine IDE gemacht, Stanford eine dicke Crypto-Library. Mozilla hat einen Compiler von C/C++ dorthin gemacht, etc.

Würde dir empfehlen dir möglichst viele anzuschauen, aber eine Sache nicht zu tun, nämlich das nur oberflächlich zu betreiben. Auch wenn es viele Leute tun ist es Schwachsinn eine Sprache zu beurteilen bevor man nicht größere Projekte mit ihr erfolgreich realisiert hat. Die Sache ist einfach, dass auch wenn man eine Programmiersprache extrem schnell nutzen kann es nicht heißt, dass man die Konzepte dahinter wirklich begriffen hat. Wenn man an seinem ersten, kleinen Test scheitert oder man sich schneidet (wie bei C und C++ gesagt wurde), dann heißt das häufig weniger, dass die Sprache mies ist, als dass man sie nicht verstanden hat. Meist werden Programmiersprachen und ihre Spezifikationen von sehr fähigen Leuten entworfen, die sich auch was dabei denken.

Es stimmt schon, dass Sprachen sich oft standardmäßig für das eine oder andere standardmäßig gut eignen, vor allem auch auf Basis der vorhandenen Libraries, aber das ändert sich mitunter gewaltig.

Es ist ganz witzig zu beobachten. Viele Leute, die zu studieren beginnen hassen zunächst Java extrem, dann beginnen sie es zu verstehen, dann lieben sie die Sprache oft und machen alle damit, haben dann aber nicht genug Selbstdisziplin sich etwas anderes ernsthaft anzuschauen und lassen sich damit meiner Meinung nach einiges entgehen.

Noch eine Sache: Dadurch, dass Sprachen oft einen Fokus auf eine bestimmte Dinge für die sie sich dann vermeintlich gut eignen setzen lernt man mit einer Sprache oft bestimmte Dinge sehr gut zu begreifen. Dadurch, dass man mit jeder Sprache alles machen kann und es viele multi-paradigm-Progammiersprachen gibt kannst du Wissen, dass du dir über eine kleine, oft sehr fokussierte Sprache aneignest meist anderswo wieder verwenden. Es ist ganz gut vieles zu kennen, auch wenn man mal einen Job hat und nicht alles in der selben Sprache geschrieben wurde. Oft hängt wieviel sich eine Sprache eignet von der Implementierung der Sprache ab und nicht von der eigentlichen Sprache selbst.

Ansonsten ist es wirklich so, dass es keine Einsteigersprache gibt. Die am einfachsten zu lernende Sprache ist die, wo der Programmierer der Sprache sich die Dinge auf eine ähnliche Art und Weise vorstellt, weil dann vieles von dem was man darüber begreifen muss schon in einen schlummert und als sehr logisch erscheint. Deshalb sind Empfehlungen von anderen glaube ich oft, auch wenn gut gemeint nicht übermäßig hilfreich.

Am Ende des Tages nimmt man irgendeine und baut mal was damit. Diskussionen kann man übers Programmieren endlos führen. Es einfach mal zu zun bringt dir gerade ganz am Anfang besonders viel. Ansonsten kann ich mich foxit nur anschließen. In dem sind alle Sprachen gleich.
 
#41
Ich habe Java noch vor dem Studium gelernt. Da war es noch recht früh... 1.0 oder Beta war Java noch damals. Irgendwann habe ich aber eingesehen, dass C doch viel besseres Werkzeug als universelle Sprache ist (und am meisten portabel!). Java hat an einigen wenigen Stellen noch Vorteile, aber die schwinden mehr und mehr. Und Oracle hat sich in letzter Zeit immer mehr angestrengt, dass Java ein Hassobjekt wird.

Bei der Qualität der Ausgabe eines Compilers für Systemsprachen ist C einfach unschlagbar. Sicherlich gibt es Sprachen, die toll sind und viel modernere Ideen verwirklichen, aber sie haben immer so grottenschlechte Compiler-Ausgaben.

Ich finde wirklich, dass man C ersetzen könnte. Ich habe voller Spannung immer auf Go geachtet, aber es ist schon ernüchternd, wenn ein Hello-World 5MB hat. Das ist doch keine Systemsprache, sondern einfach nutzlos in diesem Zustand. Haskell ist toll und viel besser. Es hat Ballast, aber mäßig... es ist allerdings wieder so ein Ärgernis, dass da ein Paketmanager eines Systems nicht beachtet wird, sondern fröhlich mit dem Cabal am System vorbei installiert wird... was total krank ist!

So lange es solche Missstände gibt bei den Alternativen, ist C die beste (System)Sprache der Welt. Und Punkt. ;)
 

darktrym

Fahnenträger
#42
Das würde mich aber interessieren was ist denn unter Oracle bei Java und anderen Produkten schlechter gewurden. Ich schau mir MySQL an und seh' die Probleme waren seit Jahren bekannt und Sun hat nichts getan, selbiges bei OO und Java. Java wäre halbtot wie Perl hätte Google nicht die Sache noch massiv gepusht. Und komm jetzt nicht mit dem Windows Installer und der Adware. Das Feature hatte bereits Sun integriert und jeder normale Mensch klickt das entweder weg oder wie ich sieht den Kram gar nicht weil er stets das SDK holt.
 

Azazyel

Well-Known Member
#43
Ich glaube das siehst du falsch. Viel mehr ist es so, dass du mit jeder Programmiersprache alles machen kann. Sieht man in diesen Zeiten an JavaScript sehr gut. Ursprünglich für Browser gedacht gibt es das mittlerweile am Server, Intel hat eine IDE gemacht, Stanford eine dicke Crypto-Library. Mozilla hat einen Compiler von C/C++ dorthin gemacht, etc.
Jede Programmiersprache hat ihre Eigenheiten, Vor- und Nachteile. Man kann zwar mit JavaScript auch Server-Anwendungen schreiben, das ist aber aufgrund der spezifischen Nachteile von JavaScript mit starken Schmerzen verbunden (was manche Firmen nicht davon abhält).

Würde dir empfehlen dir möglichst viele anzuschauen, aber eine Sache nicht zu tun, nämlich das nur oberflächlich zu betreiben.
Ich würde mich von den Diskussionen hier nicht verwirren lassen und erstmal mit einer Sprache anfangen und vertraut werden (z.B. Python), bevor man in die "analysis paralysis" abgleitet und gar nicht erst anfängt.

Auch wenn es viele Leute tun ist es Schwachsinn eine Sprache zu beurteilen bevor man nicht größere Projekte mit ihr erfolgreich realisiert hat.
Korrekt. Mit steigender Projektgröße verkehrt sich so mancher Vorteil (z.B. dynamische Typisierung) in einen Nachteil um. So mancher Nachteil (z.B. die Abwesenheit von Namespaces) wird so richtig eklig. Mit steigender Projektgröße kommen auch andere Vorzüge einer Sprache (z.B. Qualität der IDEs, Ökosystem, etc.) viel stärker zum Tragen.

Manche Zeitgenossen treffen aber auch einfach völlig unreflektiert Aussagen, obwohl sie offensichtlich noch nie Software jenseits von "Hello World" entwickelt, geschweige denn in einem größeren Projekt gearbeitet haben. :mad:

Wenn man an seinem ersten, kleinen Test scheitert oder man sich schneidet (wie bei C und C++ gesagt wurde), dann heißt das häufig weniger, dass die Sprache mies ist, als dass man sie nicht verstanden hat.
Es gibt Sprachen, die beherbergen so viele unangenehme subtile Überraschungen, dass selbst fähige Leute - auch nach jahrelanger Beschäftigung mit der Sprache - immer wieder auf die Schnauze fallen. Die Unzulänglichkeiten der Sprache den Anwendern in die Schuhe zu schieben, halte ich für den falschen Ansatz. Die Diskussion sollten wir aber gegebenenfalls in einem separaten Thread führen.

Meist werden Programmiersprachen und ihre Spezifikationen von sehr fähigen Leuten entworfen, die sich auch was dabei denken.
Manchmal gibt es aber Rahmenbedingungen bei Entwurf und Weiterentwicklung einer Sprache (z.B. Abwärtskompatibilität), die zu einem sehr zweifelhaften Resultat führen können, auch wenn fähige Leute daran sitzen.

Es ist ganz witzig zu beobachten. Viele Leute, die zu studieren beginnen hassen zunächst Java extrem, dann beginnen sie es zu verstehen, dann lieben sie die Sprache oft und machen alle damit, haben dann aber nicht genug Selbstdisziplin sich etwas anderes ernsthaft anzuschauen und lassen sich damit meiner Meinung nach einiges entgehen.
Das gab es zu allen Zeiten (Cobol lässt grüßen). Nach ein paar Jahren in der Branche wartet man aber gerne den "hype cycle" ab, bis aus dem Hype etwas Brauchbares geworden ist. Über den Tellerrand sollte man natürlich trotzdem schauen, die Welt bleibt nicht stehen.

Ansonsten ist es wirklich so, dass es keine Einsteigersprache gibt.
Es gibt Sprachen, die einem den Einstieg leichter machen als andere. Nicht umsonst wurde wesentlich häufiger Python als C++ als Empfehlung in den Raum geworfen.

Java hat an einigen wenigen Stellen noch Vorteile, aber die schwinden mehr und mehr.
Welche Veränderungen haben denn bei C und Java stattgefunden, die C auf einmal attraktiver für traditionelle Java-Einsatzgebiete machen? :confused:

Und Oracle hat sich in letzter Zeit immer mehr angestrengt, dass Java ein Hassobjekt wird.
Ich halte ja wenig von Oracle und einem Großteil ihrer Produkte, aber die Releases von Java 8 und Java EE 7 sind in der Entwicklergemeinde extrem gut angekommen - selbst James Gosling stellt Oracle bezüglich Java ein gutes Zeugnis aus.
PyPL zeigt auch keine Abkehr der Entwickler von Java.
 
#44
Ich glaube die Diskussion hier droht aus dem Ruder zu laufen.

Nur stellte sich raus, dass es niemanden gibt der mit C ordentlich programmieren kann.
Man schaue sich nur die ganzen Exploit Datenbanken an, alle Opferprogramme in C.
Das ist für mich eine verallgemeinernde Aussage, die hier absolut keinen Inhalt hat.
Es kommt zum Beispiel schon immer auf das Problem oder die Aufgabe an. Und das ist wieder nur ein kleiner Teilaspekt.

Ich sehe da eher Anzeichen von Selbstüberschätzung und Realitätsverzerrung.
Wo oder bei wem? Vielleicht in Deinem Post.
Sorry, aber Deine Aussage finde ich in keiner Weise zielführend, schon gar nicht im Kontext dieses Threads hier.

C und C++ haben Ihre Schattenseiten und "gehören abgeschafft" (Zitat Andreas Bogk).
Aber....die Sache ist vielschichtig und sicher hier nicht verallgemeinernd diskutierbar.

Und zum Ausgangsthema:
Ich finde C, C++ und Python als erste Programmiersprache sehr geeignet, um eine Tür auf zustoßen.
In allen drei Sprachen habe ich schon vielen Anfängern das Programmieren beigebracht.

So, jetzt widme ich mich noch kurz meinem Haskell-Code und kann dann endlich git push aufrufen, bevor ich den schönen sonnigen Sonntag genießen darf.


"C macht es einfach sich in den Fuß zu schießen. C++ erschwert es, aber wenn aber wenn man es tut, bläst es einen ganz weg." Bjarne Stroustrup

Sonnige Grüße
 

Athaba

Libellenliebhaber
#45
Jede Programmiersprache hat ihre Eigenheiten, Vor- und Nachteile. Man kann zwar mit JavaScript auch Server-Anwendungen schreiben, das ist aber aufgrund der spezifischen Nachteile von JavaScript mit starken Schmerzen verbunden (was manche Firmen nicht davon abhält).
Da stimme ich dir schon zu, aber das hängt nicht selten mit der jeweiligen Problemstellung zusammen und oft, weniger als man denkt mit "Ah, das ist Server, GUI, ...". Ein paar Unternehmen (Microsoft, das neue MySpace, etc.) würden dir da wohl widersprechen. Es liegt dann meist viel mehr an den Einzelheiten, als man denkt. Wenn du dir so die Top 500 Websites ansiehst hast du da Implementierungen von C, über Python, Perl, Java, Scala bis hin zu JavaScript und diversen LISP-Dialekten. Alles erfolgreiche Projekte.

Ich würde mich von den Diskussionen hier nicht verwirren lassen und erstmal mit einer Sprache anfangen und vertraut werden (z.B. Python), bevor man in die "analysis paralysis" abgleitet und gar nicht erst anfängt.
Wieder kommt es darauf an was man wirklich spezifisch macht und genau da liegt das Problem. Man kann Sprachen nicht wirklich einteilen. Weil du Python erwähnt, was so häufig erwähnt wird. Ich hatte schon einige Projekte, wo ich ständig über die Dinge gestolpert bin, die erst Python 3 fixen würde. Das sind generell betrachtet Feinheiten, aber auch wenn Python für das konkrete Projekt, rein an den groben Eigenschaften wohl von den meisten Leuten als gute Wahl gesehen werden würde, war es wie sich herausstellte das Unsinn. Python 3 andererseits hat keine Community und ich sehe mittlerweile Parallelen zu Perl 6 und Python 2


Korrekt. Mit steigender Projektgröße verkehrt sich so mancher Vorteil (z.B. dynamische Typisierung) in einen Nachteil um. So mancher Nachteil (z.B. die Abwesenheit von Namespaces) wird so richtig eklig. Mit steigender Projektgröße kommen auch andere Vorzüge einer Sprache (z.B. Qualität der IDEs, Ökosystem, etc.) viel stärker zum Tragen.
Da stimem ich dir ebenfalls teilweise zu. Generell haben aber größere Projekte auch das Problem, das viele und vor allem viele schlechtere Programmierer drin sind. Dynamische Programmiersprachen eignen sich eher für Leute mit Selbstdisziplin, die von Anfang an Tests schreiben, ihren Code anständig dokumentieren, etc. Sollte man auch mit statischen Programmiersprachen machen. Aber grundsätzlich stimme ich dir da zu, weil du da eben schönere Interfaces hast, die erzwungen wurden und viele Leute, die dynamische Sprachen nutzen sehr faul sind und unstrukturiert arbeiten. Leider führen andererseits statische Sprachen und vor allem sehr stark typisierte Sprachen und große Dev-Teams dann auch immer mal wieder in eine Richtung, wo man genau dieses Minimum hernimmt und sagt "Die Sprache wird's schon richten". Dann ist der Code trotz Typisierung mies und alle versuchen ständig alles "irgendwie" zum Laufen zu bekommen. Ist zumindest meine Erfahrung. Will damit auch niemanden zu nahe treten, aber ich hab das alles schon gesehen und mir einen Reim daraus gemacht. Ist wohl entsprechend subjektiv.

Manche Zeitgenossen treffen aber auch einfach völlig unreflektiert Aussagen, obwohl sie offensichtlich noch nie Software jenseits von "Hello World" entwickelt, geschweige denn in einem größeren Projekt gearbeitet haben. :mad:
Jup. Wenn dann noch Hypes und irgendwelche Gurus, die als Götter verehrt werden und Elitarismus wie es ihn in vielen Projekten lange Zeit gab reinspielt, so in Richtung "Unsere Sprache ist unfehlbar und perfekt", dann wird's ganz grauslich und man neigt schon mal eine Sprache auf Grund der miesen Community nicht zu nutzen.

Es gibt Sprachen, die beherbergen so viele unangenehme subtile Überraschungen, dass selbst fähige Leute - auch nach jahrelanger Beschäftigung mit der Sprache - immer wieder auf die Schnauze fallen. Die Unzulänglichkeiten der Sprache den Anwendern in die Schuhe zu schieben, halte ich für den falschen Ansatz. Die Diskussion sollten wir aber gegebenenfalls in einem separaten Thread führen.
Da hast du Recht, aber ich habe ehrlich gesagt noch keine Sprache gesehen, wo das nicht der Fall ist. Sogar in purem C gibt es einige davon. Überraschungen gibt es in C, Java, Python, ... genauso wie in JavaScript und Perl. Manchmal finde ich da Sprachen wo mit denen zu rechnen ist, aber sogar angenehmer, weil sich die Leute damit beschäftigt haben und da meistens irgendetwas ganz laut schreit. Wenn man seine Sprache als quasi unfehlbar sieht und sich das so lange durch schummelt schlägt es mitunter in Production auf. Soll aber nicht heißen, dass ich deiner Aussage nicht zustimme. Das sind Randfälle, die ich einfach schon gesehen habe und die vor allem in Java und Python auftreten, weil die Einstellung dort solche Probleme ermuntert. Kurzum: Ich stimme dir zu, auch wenn ich durchaus Real Life Ausnahmen kenne. ;)


Manchmal gibt es aber Rahmenbedingungen bei Entwurf und Weiterentwicklung einer Sprache (z.B. Abwärtskompatibilität), die zu einem sehr zweifelhaften Resultat führen können, auch wenn fähige Leute daran sitzen.
Vollste Zustimmung. Wollte damit aber eigentlich ausdrücken, dass immer mal wieder Gedanken hinter einem Feature stehen, die man erkennen muss bevor man weiß, um zu verstehen wie man damit umgeht. Um's klar zu machen: Es ist blöd, wenn die schwer ersichtlich sind, das unterschreibe ich gern, nur kann dieses schwer ersichtlich sein daran hängen, dass man zuvor mit Sprachen gearbeitet hat, die schlicht und ergreifend einen anderen Ansatz haben und nicht so funktionieren wie man es gewohnt ist. Jemand der sein ganzes Leben mit Unix zu tun hatte wird ein anderes System mitunter sehr schwer verstehen. Ist ein wenig wie mit natürlichen Sprachen. Wenn du Deutsch kannst ist Englisch für dich meist einfacher, als Japanisch. Für jemanden, der Chinesisch kann wird Englisch wohl schwerer sein.


Das gab es zu allen Zeiten (Cobol lässt grüßen). Nach ein paar Jahren in der Branche wartet man aber gerne den "hype cycle" ab, bis aus dem Hype etwas Brauchbares geworden ist. Über den Tellerrand sollte man natürlich trotzdem schauen, die Welt bleibt nicht stehen.
Vor allem hat man dann auch ein schönes Ecosystem, einen Jobmarkt, etc. Ich glaube es ist auch eine Frage, wieviel Risiko für ein Projekt angedacht ist. Wenn du schnell irgendwas, proof-of-concept-mäßig hinhauen willst/musst, dann ist eine dynamische "unsaubere" Sprache, die gerade einen Hype erfährt, auf die neuen Technologien setzt, die du brauchst und es da viele entsprechende Libraries gibt, du keine Altlasten hast, etc. vielleicht eine exzellente Wahl. Kommt nicht von Ungefähr, dass Ruby das große Ding war und jetzt alles ihre WebSocket-Geschichten und Demos mit JavaScript-Servern machen (Mozilla zum Beispiel). Das ist aber für große Projekte vielleicht nicht so toll. Twitter hatte ja genau dieses Problem. Zunächst auf Ruby on Rails aufgesetzt, dann JRuby verwendet, dann auf andere JVM-Sprachen gegangen, weil ihr Prototype den Proof of Concept geliefert hat, aber dann Scaling ein Problem wurde. Andererseits hätten sie wenn sie mit Java begonnen hätten mitunter das Problem gehabt, dass alles ein Weilchen länger gedauert hätte, sie keine Investments oder User bekommen hätten und gestorben werden. Vielleicht auch nicht.

Was ich mit dem ganzen nur sagen will ist, dass man als Programmieranfänger meist (es betraf mich und alle, denen ich dabei zugesehen habe) einfach zwei Probleme hat. Sprachen ganz starr in Kategorien einteilen und quasi nicht wirklich zu verstehen, dass du alles mit jeder Sprache machen kannst (auch wenn sie vielleicht von vielen aus guten und schlechten Gründen nicht für das Richtige gesehen wird) und zweitens aus diversen Gründen zwischen Sprachen zu hoppeln und nie wirklich eine zu verstehen, was aber notwendig ist und für die Zukunft helfen wird. Deshalb habe ich beides erwähnt: Über den Tellerrand schauen ist nicht schlecht, aber dafür sollte man extrem viel Zeit einplanen, weil man sich für gewöhnlich durch vieles durchackern muss und ernsthafte, große Projekte schreiben muss bevor man eine Aussage trifft. Viele tun das nicht. Dann hat man vor allem in dynamischen Sprachen das Problem, dass jemand von C kommt und der Code dann (weil dynamische Sprachen flexibel sind) dann auch wie C-Code aussieht (vielleicht auch weil die Syntax angelehnt ist) und am Ende meint man die Sprache sei mies, weil man die Vorteile, die Philosophie dahinter und die Gedanken des Entwicklers der Sprache nie wirklich verstanden hat. Gerade am Anfang ist es deshalb extrem wichtig mal eine Sprache zu nehmen und wirklich zu verwenden, auch wenn man auf Probleme stößt. Die wird man einfach finden. Wenn es die perfekte Sprache gäbe, dann würden sie ja alle schon längst verwenden.

Ist auch ganz witzig. Meist. wenn eine neue Sprache aufkommt, kann man schon vorhersagen, wer drauf aufspringen wird und wer nicht. Aber ich drifte echt ab. Sorry!
 

spectre210

Well-Known Member
#46
Hallo,

Gerne würde ich eine Programmiersprache lernen mit der ich Forensik-Programme besser verstehen kann (falls es so etwas gibt) und vor allem Anwendungen, die mir meinen PC-Alltag erleichtern, programmieren kann.
Außerdem sollte sie relativ anfängerfreundlich sein.
Grundsätzlich ist es egal, mit welcher Sprache man anfängt.
Da du aber ein Sprache suchst, die anfängerfreundlich ist und sich für Forensik-Angelegenheiten eignet, ist python zu empfehlen: Ich habe im Netz das hier gefunden: Forensik lib , schau mal rein. Die Sprache Python ist für Anfänger geeignet, da sie dynamisch ist und ihr Syntax smart und einfach definiert wurde.
 
#47
Das würde mich aber interessieren was ist denn unter Oracle bei Java und anderen Produkten schlechter gewurden. Ich schau mir MySQL an und seh' die Probleme waren seit Jahren bekannt und Sun hat nichts getan, selbiges bei OO und Java. Java wäre halbtot wie Perl hätte Google nicht die Sache noch massiv gepusht. Und komm jetzt nicht mit dem Windows Installer und der Adware. Das Feature hatte bereits Sun integriert und jeder normale Mensch klickt das entweder weg oder wie ich sieht den Kram gar nicht weil er stets das SDK holt.
1) Oracle hat 2x hintereinander APIs und Dienste kaputt gemacht, gerade eben. Und zwar so, dass meine Kunden ausgesperrt wurden. Das haben sie auch mit voller Absicht gemacht und sind auch noch stolz darauf. Sie haben nämlich SSL so modifiziert, dass es nur noch die (aus meiner Sicht) unsichere Variante unterstützt, dass man ausschließlich CAs, die sie für gut heißen, in die Trust hinzuzieht. Das will ich nicht, denn solche CAs können bekannterweise Zertifikate fälschen. Ich bin bei meinen Anwendungen die einzige glaubhafte CA und diesen Mechanismus erlauben sie nicht mehr. Es gibt noch böse Hacks, die das ganze SSL-System noch unsicherer machen. Ich kann sie zufälligerweise nutzen, denn die Kommunikation über SSL geht eh nur zu einem Punkt. Aber andere Leute, die echtes SSL noch nebenbei brauchen, sind aufgeschmissen.

2) MySQL wird von einem Datenbankhersteller also besser unterstützt als von einem Systemhaus? Wo sind die News hier? Aber sieh Dich vor... Oracle macht den ganzen OpenSource-Kram den Sun noch schnell großzügigerweise der Community gespendet hat, komplett dicht. Sie bringen hier und da ihre Dreckslizenzen rein, sodass alle langsam auf den Oracle-Kram verzichten müssen.

3) Ich klick das schon weg. Aber meine Kunden können sich da was holen. Ich kriege da den Ärger mit solchen Kaspereien. Sogar meine Kollegen und ich haben schon mal aus Versehen das Häkchen da gelassen.
 

rudy

aint no stoppin us now
#49
ja eigentlich gibt es viel zu viele Programmiersprachen vor allen gibt es viel zu viele für den selben Einsatzzweck ;) was sind es jetzt etwas über 2000 Programmiersprachen ;)
So ich würde zu Python raten zumal die Sprache ja nun wirklich ausgereift ist und eine gute Community hat falls man Fragen hat und nicht weiter kommt und das kommt den Anfängern zugute tja was noch fast noch wichtiger als die Sprache an sich ist immer eine gute Dokumentation ;)

gehabt euch wohl