Scala und c++



  • Xin schrieb:

    Übliches - durchaus funktionierendes - Realtime-Java entfernt den GC. Aber warum programmiere ich dann Java!?

    Weil man auf Schmerzen steht? 🤡



  • Xin schrieb:

    Zeus schrieb:

    http://www.tutego.de/blog/javainsel/2011/03/inselupdate-echtzeit-java-real-time-java/

    Übliches - durchaus funktionierendes - Realtime-Java entfernt den GC. Aber warum programmiere ich dann Java!?

    Lern lesen und lern denken, in den Artikel steht dass RT-Java Scoped Memory eingeführt hat, da steht nicht das der GC weggefallen ist, und dort wird die Spezifikation erwähnt und eine Implementierung die JamaicaVM, und schon durch ersten verlinkten Artikel, wissen wir das sie ein modifizierten GC hat, also ScopedMem + GC. Überhaupt mach es kein Sinn mit dir darüber zu argumentieren. Du scheinst dich in dein Know-How zu verbeissen, obwohl du nicht mal dich um den aktuellen Entwicklungsstand informierst, ziehst großzügig Argumentation bei den Wolken her. Nein, warum du überhaupt RT-Java programmieren sollst, hab ich überhaupt keine Arhnung.



  • kantaki schrieb:

    ok danke.

    Ich denke ich werde nie realtime Anwendungen schreiben, jedenfalls nicht in nächster Zeit, deswegen bleibe ich jetzt erst einmal bei Scala.

    Und ich ziehe Clojure vor.



  • Xin schrieb:

    GPC schrieb:

    Ich finde GCs ansonsten schon ganz cool - aber ich programmiere halt auch Desktopanwendungen. Und ich würde auch keine Webprogrammierung mit C++ machen, insofern 🙂

    Läuft inzwischen ganz schnuckelig, kann ich inzwischen eigentlich nur empfehlen. 🙂

    Kennst Du eigentlich http://www.tntnet.org/?



  • ich bins schrieb:

    Xin schrieb:

    GPC schrieb:

    Ich finde GCs ansonsten schon ganz cool - aber ich programmiere halt auch Desktopanwendungen. Und ich würde auch keine Webprogrammierung mit C++ machen, insofern 🙂

    Läuft inzwischen ganz schnuckelig, kann ich inzwischen eigentlich nur empfehlen. 🙂

    Kennst Du eigentlich http://www.tntnet.org/?

    Nein, kenne ich nicht.

    Ich habe mir eine cgi-lib angesehen und bin zu dem Schluss gekommen, dass es einfacher und schneller ist, selbst den Webservice zu schreiben, der direkt mein vorhandenes Framework anspricht, als einen Wrapper um Vorhandenes.
    Das erspart mir zum einen die Abhängigkeit von einer anderen Lib, zum anderen muss ich mich nicht in die Lib erst einarbeiten.
    Ein Webservice ist eine vergleichsweise überschaubare Sache.

    Zeus schrieb:

    Xin schrieb:

    Zeus schrieb:

    http://www.tutego.de/blog/javainsel/2011/03/inselupdate-echtzeit-java-real-time-java/

    Übliches - durchaus funktionierendes - Realtime-Java entfernt den GC. Aber warum programmiere ich dann Java!?

    Lern lesen und lern denken, ... Überhaupt mach es kein Sinn mit dir darüber zu argumentieren. Du scheinst dich in dein Know-How zu verbeissen, obwohl du nicht mal dich um den aktuellen Entwicklungsstand informierst, ziehst großzügig Argumentation bei den Wolken her.

    Liebelein, 50% Deines Textes sind - um das freundlich zu formulieren - sehr unhöflich formuliert. Du lässt Dich ausführlich darüber aus, wie ich scheinbar zu sein habe.

    Wo allerdings vollkommen richtig liegst ist, dass ich mich bei Java nicht um den aktuellen Entwicklungsstand kümmere, denn es ergibt keinen Sinn bei Java auf dem aktuellen Entwicklungsstand zu sein. Java frickelt seit Jahren - inzwischen Jahrzehnten - das nach, was in C++ bereits problemlos machbar war, als Java noch Oak hieß und für das Java-Konzept heute monströsen Aufwand bedeutet. Mir ist ehrlich gesagt sowas von egal, ob es eine JamaicaVM gibt. Ich programmiere C++, ich habe überhaupt nicht das Problem, dass ich mit aktuellen Java-Entwicklungen lösen müsste.
    Wenn ich also aktuelle Entwicklungen sehen will, dann schaue ich bestimmt nicht zu Java.

    Wenn ein Konzept einen Riesenaufwand machen muss, um gegen ein einfaches Konzept anzustinken, dann muss man sich halt irgendwann fragen, welches Konzept sinnvoller ist.
    Die Frage bleibt also: Warum sollte ich Java programmieren?

    Zeus schrieb:

    in den Artikel steht dass RT-Java Scoped Memory eingeführt hat,

    Uiii, toll... das sind also "aktuelle Entwicklungen" bei Java? Du bist kein Java-Entwickler schriebst Du... Du bist Comedian? Du hast zumindest Talent. 😉

    Und jetzt die Masterfrage: Warum machen die sowas wohl...?



  • ich werde mich in nächster zeit auf webdevelopment fokussieren und ich denke da hat scala einen vorteil.

    Naja ich werde C++ dann auch irgentwann anfangen zu lernen, mal schauen wie die sprache mit dann gefällt.

    Danke



  • machs lieber in php/python/rails o.ä. wenn es dann 'besucher' hat und zu langsam wird, kann man es noch immer 'scala'.

    ich hab den fehler gemacht und es im gegensatz zu den letzten projekten nicht in php gemacht (wo es mir relativ leicht von der hand geht). aus meiner erfahrung kann ich dir sagen, dass die entwicklung absolut unwirtschaftlich ist und wenn ich fertig bin, das teil aller voraussicht nach schon so überholt ist, das sich keiner dafür interessieren wird. aber einmal kann ich mir das schon leisten 😋

    man darf auch nicht vergessen, dass ich da keinen anderen dran lassen kann, weil er mich hassen und im anschluß töten wird 😞

    um es ohne bla bla auf den punkt zu bringen, verwende eine sprache die dir leicht fällt, du schnell vorwärts kommst und ein gute/große auf webentwicklung ausgerichtete library hat.



  • kantaki schrieb:

    Naja ich werde C++ dann auch irgentwann anfangen zu lernen, mal schauen wie die sprache mit dann gefällt.

    Hmm... joah, wie könnte das wohl aussehen...

    Du wirst sie hassen, weil sie kompliziert ist und fehleranfällig und außerdem hat sie viel zu viel Boilerplate, außerdem funktioniert alles ganz anders als Du es gewohnt bist und für richtig empfindest und Du wirst damit nicht nur recht haben, Du wirst auch aufhören sie zu lernen, lange bevor Du verstehst, was sie eigentlich auszeichnet und warum es den Aufwand trotzdem wert ist.

    PS: irgenDwann... scnr



  • Xin schrieb:

    kantaki schrieb:

    Naja ich werde C++ dann auch irgentwann anfangen zu lernen, mal schauen wie die sprache mit dann gefällt.

    Hmm... joah, wie könnte das wohl aussehen...

    Du wirst sie hassen, weil sie kompliziert ist und fehleranfällig und außerdem hat sie viel zu viel Boilerplate, außerdem funktioniert alles ganz anders als Du es gewohnt bist und für richtig empfindest und Du wirst damit nicht nur recht haben, Du wirst auch aufhören sie zu lernen, lange bevor Du verstehst, was sie eigentlich auszeichnet und warum es den Aufwand trotzdem wert ist.

    PS: irgenDwann... scnr

    Was zeichnet C++ denn aus? Warum C++ anstatt zB Scala?

    ps: In c++11 kamen ja Threads für Concurrency. Wie schwer ist es in c++ concurrent zu programmieren?



  • kantaki schrieb:

    Was zeichnet C++ denn aus? Warum C++ anstatt zB Scala?

    Ich schichte Dir bereits einen entsprechenden Link.

    Ich halte C++ für die derzeit ausgefeilteste Sprache für große und sehr Projekte. Darum - und nur darum - mache ich Webentwicklung in C++. Für eine Seite mit zwei, drei Funktionen würde ich das auch nicht tun.

    Es gibt einige Dinge, die - imho - für C++ sprechen. Es beginnt damit, dass C++ zu den Mainstream-Sprachen gehört und Scala eben nicht: Es ist durchaus von Vorteil, wenn man mit der Masse der Entwickler zusammenarbeiten kann. Ausgefallenere Sprachen, wie Scala, sind hier eher ein Bonus, selten die Grundvoraussetzung.

    C++ ist, wie soll man das beschreiben, eine grundsätzliche Sprache. Ein Fundament. Es gibt keinen Putz an den Wänden, man muss die Toilette selbst mit dem Eimer spülen, es ist eben nicht "schick". Aber Du kannst alles selbst sehen, begreifen, Einfluss nehmen und ausprobieren. Du kannst lernen, aus diesem scheinbaren Rohbau, ein Zuhause zu machen und Du bekommst dafür qualitatives Werkzeug an die Hand. Vor allem - und das halte ich für das wichtigste - Du lernst, was nicht geht. Dynamit sieht cool aus, ist aber meistens unpraktisch beim Häuserbau. Pointerarithmetik wäre so ein Dynamit. In C++ darfst Du damit spielen. Du musst nicht, aber wenn Du es mal eilig hast, ein Haus umzubauen, ist Pointerarithmetik das schnellste Mittel mal ein paar Wände zu versetzen - wenn man damit umgehen kann. In vielen anderen Sprachen ist Pointerarithmetik verboten, da gefährlich. Wenn Du Sprengmeister werden willst, wenn Du wirklich lernen willst, dann ist C++ Dein Spielplatz. Du lernst was nicht geht, weil das Programm explodiert - nicht weil das die Sprache es Dir verbietet.

    Wenn Du lernen willst, halte ich selbst Anzupacken für richtig, wenn Du alles selbst machen kannst, kannst Du auf Hilfswerkzeuge wie Java oder Scala umsteigen, die Dir Arbeit abnehmen. Du verstehst, aber welche Arbeiten diese Sprachen Dir abnehmen und was das für Deine Programmierung bedeutet. Und wenn das so nicht passt, kannst Du eine richtige Lösung in C++ formulieren, statt einen Workaround in Java oder C#.

    Wenn Du von C++ kommst, wirst Du Sprachen ohne Const-Correctness hassen. Genauso wie Dir Sprachen mit ausschließlich konstanten Objekten zuwider sind. Du wirst Templates Bauen, die Templates bauen, Du wirst Dir einen eigenen Werkzeugkasten mit Werkzeug füllen und Dich daraus wie aus einer Legobox bedienen und Dir über Mehrfachvererbung und generischen Typen in fünf Zeilen die Lösung für Dein Problem typsicher und ohne weiteren Implementierungsbedarf generieren lassen.

    Du fängst in einem dreckigen Rohbau an, aber Deine Werkzeuge arbeiten zuverlässig mit, wenn Du ein Hochhaus baust, die semantische Analyse des C++ Compilers hilft Dir, nachdem Du verstanden hast, Const-Correctness, Mehrfachvererbung und Templates richtig einzusetzen, den Überblick über sehr große Projekte zu behalten. Das lernt man nicht in Sprachen, die diese Konzepte nicht unterstützen.

    Ich zitiere dazu gerne Benjamin Lee Whorf: "Language shapes the way we think, and determines what we can think about."

    Ich lerne Scala als Bonus und ich werde Dich auf keinen Fall davon abhalten, Scala zu lernen - zumal ich von Scala nicht genug Ahnung habe, das überhaupt sinnvoll zu begründen. Der wichtigste Grund ist eben: Lerne von der Pike auf, wenn Du begreifen willst, was Du tust und was es bedeutet irgendwas zu tun. C++ tut nichts, ohne dass Du es explizit forderst. Damit lernst Du eben zu erkennen, was für eine Anweisung gefordert ist - auch in Sprachen, die diese Dinge implizit für Dich erledigen, ohne dass Du es bewusst mitbekommst.
    Die Programmiersprache bestimmt auch, was du als Programm formulieren und damit denken kannst. Und hier setzt Dir C++ kaum Grenzen, die über die Beschränkung der Maschine hinausgehen.

    Du kannst in C++ alles gestalten, was Du in Scala formulieren kannst. Eventuell musst Du mehr tippen, aber Du kannst jederzeit auch auf Werkzeuge wechseln, die Dir in Scala gar nicht angeboten werden.

    kantaki schrieb:

    ps: In c++11 kamen ja Threads für Concurrency. Wie schwer ist es in c++ concurrent zu programmieren?

    Habe ich in C++11 noch nicht ausprobiert, auch sonst habe ich das Problem bisher kaum. Eine qualifizierte Antwort kann ich Dir also nicht geben.
    Es gibt sicherlich Sprachen, die besser sind als C++ vor C++11, das bezweifle ich nicht entferntesten. Ob C++11 hier 'gut' ist, weiß ich nicht.

    Mein Webservice forkt derzeit einfach, das Verhalten ist definitiv nicht optimal, aber schnell implementiert, keine 10 Zeilen. Ich würde das als "einfach" bezeichnen. Hier müssen aber auch keine Ergebnisse wieder zusammengeführt werden. Da müsstest Du mich fragen, wenn ich an dieser Baustelle das aktuelle Provisorium abreiße.



  • Ich halte C++ für die derzeit ausgefeilteste Sprache für große und sehr Projekte. Darum - und nur darum - mache ich Webentwicklung in C++. Für eine Seite mit zwei, drei Funktionen würde ich das auch nicht tun.

    Ach, und wieviele Sprachen kennst du? Schon vergleichbares ich Scheme, Lisp oder Clojure probiert?

    Du lernst, was nicht geht.

    Was geht denn nicht?

    Wenn Du lernen willst, halte ich selbst Anzupacken für richtig

    Und was ist mit C oder gar ASM?

    Wenn Du von C++ kommst, wirst Du Sprachen ohne Const-Correctness hassen

    Nein, ich hasse C nicht. So emotional gehe ich da nicht heran.

    "Language shapes the way we think, and determines what we can think about."

    Wieviel Sprachen kennst du und kannst du? Ach verdammt, ich drehe mich im Kreis.

    Verstehe mich nicht falsch, aber gegen fast jeden deiner Punkte koennen leicht Gegenargumente gefunden werden.

    In c++11 kamen ja Threads für Concurrency. Wie schwer ist es in c++ concurrent zu programmieren?

    Die Sprache nimmt dir das Denken nicht ab. Deswegen: Genauso schwer.



  • Xin schrieb:

    Wenn Du von C++ kommst, wirst Du Sprachen ohne Const-Correctness hassen. Genauso wie Dir Sprachen mit ausschließlich konstanten Objekten zuwider sind. Du wirst Templates Bauen, die Templates bauen, Du wirst Dir einen eigenen Werkzeugkasten mit Werkzeug füllen und Dich daraus wie aus einer Legobox bedienen und Dir über Mehrfachvererbung und generischen Typen in fünf Zeilen die Lösung für Dein Problem typsicher und ohne weiteren Implementierungsbedarf generieren lassen.

    Du fängst in einem dreckigen Rohbau an, aber Deine Werkzeuge arbeiten zuverlässig mit, wenn Du ein Hochhaus baust, die semantische Analyse des C++ Compilers hilft Dir, nachdem Du verstanden hast, Const-Correctness, Mehrfachvererbung und Templates richtig einzusetzen, den Überblick über sehr große Projekte zu behalten. Das lernt man nicht in Sprachen, die diese Konzepte nicht unterstützen.

    All diese Konzepte werden in Scala auch oder in ähnlicher Form angeboten (einzige Ausnahme: Fundament verändern). Seiteneffektfreies Programmieren z.B., das durch const-correctness ermöglicht wird, gehört bei Scala zu einem der Grundkonzepte der Sprache (funktionale Programmierung). Allgemein kann man bei funktionalen Programmiersprachen verdammt viel lernen (vor allem Programmierkonzepte) was einem das Leben sehr erleichtern kann. Das Wissen kann man dann auch ohne Probleme in anderen Sprachen wie C++ anwenden und sich daran erfreuen.
    Ich bezweifle, dass man all den Nutzen von const-correctness vollständig verstehen kann ohne eine funktionale Programmiersprache, wie Scala oder Haskell, richtig zu beherrschen. Auf der anderen Seite, stimme ich dir zu, dass man Probleme bekommen dürfte die Abstraktionen von Scala oder Haskell lieben zu lernen oder gar nur zu verstehen wenn man sich noch nie mit einer Sprache beschäftigt hat, mit der man mehr low-level programmieren kann.

    Es fällt mir daher schwer eine Empfehlung auszusprechen ob man (speziell der TO) eher mit Scala oder C++ weiterarbeiten sollte. C++ ist noch ein klein weniger mächtiger als Scala (da man eben Zugriff auf die Bit und Bytes des Rechners hat, auf die man mit Scala nicht zugreifen kann) und vor allem viel mehr verbreitet und angesehen. Auf der anderen Seite sieht C++ einfach kacke aus. 😉 Scala erlaubt kürzeren, schöneren und deswegen vermutlich auch wartbareren Code. Scalas Macros und Typsystem ist reines Scala - C++ Templates dagegen sind mehr eine eigenen Programmiersprache bzw. DSL in C++. Scala wirkt somit mehr wie aus einem Stück gegossen.

    Weiterhin muss ich hier auch einfach sagen, dass es unglaublich lange dauern wird jemals all diese Features auszureizen. Es wird vermutlich nur sehr wenigen gelingen ernsthaft zu sagen, dass sie C++ oder Scala "sehr gut" beherrschen, wenn sie darin weniger als 10 Jahre Erfahrung haben (zumindest wenn man nicht nur die Grundsprache meint, also die Teile einer Sprache, die man ständig braucht, sondern wirklich alle möglichen Features). Ebenso dürfte es auch nur für die wenigsten interessant sein, all diese Sachen jemals zu können.

    Speziell nun an den TO: Ich würde also sagen, fange mit der Sprache an, die dir momentan mehr Spaß macht (du hast gemeint, dass das Scala wäre). In 2-3 Jahren kannst du dir C++ dann immer noch angucken, du musst Scala ja nicht bis zum geht nicht mehr ausgereizt haben um dir eine andere Sprache angucken zu können (hast du ja bisher auch nicht gemacht). Besonders empfehlenswert finde ich C++ als "Nebensprache" zu lernen, bei mir ist das momentan Haskell. Immer dann wenn ich ein funktionales Konzept in Scala vorfinde, das ich nicht verstehe, dann gehe ich zu Haskell, versuche es dort nachzubauen und damit zu verstehen, damit ich dann zu Scala zurück gehen und es dort anwenden kann.

    Xin schrieb:

    Du kannst in C++ alles gestalten, was Du in Scala formulieren kannst. Eventuell musst Du mehr tippen, aber Du kannst jederzeit auch auf Werkzeuge wechseln, die Dir in Scala gar nicht angeboten werden.

    Ich bin mir nicht ganz sicher ob Scala nicht auch etwas kann, dass C++ nicht kann 😉 Kann man in C++ dem Compiler sagen, dass er z.B. auf eine Datenbank zugreifen soll um daraus Informationen zu holen, die zur Compilierung des Programms benötigt werden? Und sind Templates eigentlich turingvollständig?

    knivil schrieb:

    Ich halte C++ für die derzeit ausgefeilteste Sprache für große und sehr Projekte. Darum - und nur darum - mache ich Webentwicklung in C++. Für eine Seite mit zwei, drei Funktionen würde ich das auch nicht tun.

    Ach, und wieviele Sprachen kennst du? Schon vergleichbares ich Scheme, Lisp oder Clojure probiert?

    Nichts gegen diese Sprachen, aber sie sind nun mal dynamisch typisiert. Für mich wäre das ein Ausschlusskriterium um sie in größeren Projekten einzusetzen.



  • knivil schrieb:

    Wenn Du von C++ kommst, wirst Du Sprachen ohne Const-Correctness hassen

    Nein, ich hasse C nicht. So emotional gehe ich da nicht heran.

    Soll das heißen in C achtest du nicht auf Const-Correctness? 😃



  • um dir eine andere Sprache angucken zu können (hast du ja bisher auch nicht gemacht).

    Ich habe mir sogut wie alle bekannten Sprachen abgeschaut. Und mit angeschaut meine ich jeweils ein Buch gelesen und mit der Sprache gearbeitet. Bisher gefiel mir Scala am besten, allerdings war es auch meine erste "funktionale" Sprache.

    Ich denke ich schaue mir aufjedenfall auch noch haskell, lisp und Erlang an.

    Aber ich denke ich werde erst einmal bei scala beleiben.



  • knivil schrieb:

    Ich halte C++ für die derzeit ausgefeilteste Sprache für große und sehr Projekte. Darum - und nur darum - mache ich Webentwicklung in C++. Für eine Seite mit zwei, drei Funktionen würde ich das auch nicht tun.

    Ach, und wieviele Sprachen kennst du? Schon vergleichbares ich Scheme, Lisp oder Clojure probiert?

    Joah, das übliche "Du bist Scheiße"... erstaunlich, wieso wusste ich es, als ich das letzte Posting abgeschickt habe? ^^

    Keine Ahnung, wieviele ich kenne. Zählen Dialekte? Also zum Beispiel Motorola Assembler und Intel Assembler? Gibt's überhaupt eine Chance, eine Zahl zu nennen, die hoch genug ist, um Deinen Segen zu haben?

    Scheme nein, Lisp ja, Clojure nein. Und was sagt Dir das jetzt? Es gibt bestimmt 1000 Sprachen, die ich noch nicht kenne, also kann ich nur unfähig sein. 🙂

    knivil schrieb:

    Du lernst, was nicht geht.

    Was geht denn nicht?

    ((int)0)=0; // <- geht in der Regel nicht.
    Kann man gelegentlich aber trotzdem sinnvoll verwenden.

    Und noch ein paar andere Dinge. Wer weiß, was man nicht macht, kann mit dem Rest programmieren.

    knivil schrieb:

    Wenn Du lernen willst, halte ich selbst Anzupacken für richtig

    Und was ist mit C oder gar ASM?

    Sehr zu empfehlen! OOP bringe ich den Leuten bevorzugt mit C bei, damit sie es "begreifen".

    Assembler habe ich auch ein paar Jahre programmiert, da lernt man erst zu denken und dann zu programmieren. Das bekommt man aber kaum vermittelt, denn wie blöd muss einer sein, wenn er heute noch Assembler lernt und wie arrogant muss ich sein, wenn ich erzählen würde, dass ich als größer Assemblerprogrammierer soviel besser denken könnte als die Nicht-Assemblerprogrammierer. Außerdem geht's ja um Konzepte und nicht um Sprachen... jaja... weil ich auf die Diskussion keinen Bock habe, lasse ich den Rat zu Assembler weg und rate nur den Leuten dazu, die das mit dem Programmierenlernen wirklich ernst meinen oder von mir programmieren lernen wollen.
    Für den Rest bin ich nicht verantwortlich, die können machen, was sie für richtig halten.

    knivil schrieb:

    Wenn Du von C++ kommst, wirst Du Sprachen ohne Const-Correctness hassen

    Nein, ich hasse C nicht. So emotional gehe ich da nicht heran.

    Brauchst Du ja auch nicht, struct Bla const * ist in C ja auch nicht verboten.

    knivil schrieb:

    "Language shapes the way we think, and determines what we can think about."

    Wieviel Sprachen kennst du und kannst du? Ach verdammt, ich drehe mich im Kreis.

    Joah, wird nicht spannender.

    Aktiv programmiert, also mindestens ein Jahr oder länger, habe ich in diversen Basics, Assembler auf mehreren Plattformen, pures C, C++, Delphi, PHP, Java, JavaScript, C# und einer Lisp-ähnlichen Sprache, die ich dank gleichartiger Klammersetzung gehasst habe, sowie Prolog.

    Ich habe 1986 angefangen zu programmieren. Das heißt also nicht, dass ich alles gleichzeitig gemacht habe. Nur C++ mache ich seit 1994 durchgehend. Mit PHP oder Java plane ich in diesem Leben nichts erwähnenswertes mehr zu machen. Java stirbt eh weg, von daher werde ich da wohl auch nicht mehr in Versuchung kommen.

    Ansonsten immer mal wieder etwas Python, Perl, Bash, ... ach keine Ahnung, früher hatte ich mal eine Liste, inzwischen interessiert es mich eigentlich nicht mehr.

    Aktuell lerne ich Scala, aber nicht, um sie aktiv zu verwenden.

    knivil schrieb:

    Verstehe mich nicht falsch, aber gegen fast jeden deiner Punkte koennen leicht Gegenargumente gefunden werden.

    Dann hoffen wir, dass "Wieviel Sprachen kennst Du?" nicht Dein bestes Argument war.
    Da ist ein kläffender Hund hinter'm Tor jedenfalls imposanter.

    Was programmierst Du? Was! Was! Was! Was!... 😉

    In c++11 kamen ja Threads für Concurrency. Wie schwer ist es in c++ concurrent zu programmieren?

    Die Sprache nimmt dir das Denken nicht ab. Deswegen: Genauso schwer.[/quote]
    Das ist zu vermuten. Ich habe es noch nicht ausprobiert, von daher muss ich Dir da einfach mal glauben, dass Du das besser weißt.

    kantaki schrieb:

    Aber ich denke ich werde erst einmal bei scala beleiben.

    Habe ich kein Problem mit. Viel Spaß. 🙂



  • knivil schrieb:

    Ich halte C++ für die derzeit ausgefeilteste Sprache für große und sehr Projekte. Darum - und nur darum - mache ich Webentwicklung in C++. Für eine Seite mit zwei, drei Funktionen würde ich das auch nicht tun.

    Ach, und wieviele Sprachen kennst du? Schon vergleichbares ich Scheme, Lisp oder Clojure probiert?

    Joah, das übliche "Du bist Scheiße"... erstaunlich, wieso wusste ich es, als ich das letzte Posting abgeschickt habe? ^^

    Keine Ahnung, wieviele ich kenne. Zählen Dialekte? Also zum Beispiel Motorola Assembler und Intel Assembler? Gibt's überhaupt eine Chance, eine Zahl zu nennen, die hoch genug ist, um Deinen Segen zu haben?

    Scheme nein, Lisp ja, Clojure nein. Und was sagt Dir das jetzt? Es gibt bestimmt 1000 Sprachen, die ich noch nicht kenne, also kann ich nur unfähig sein. 🙂

    knivil schrieb:

    Du lernst, was nicht geht.

    Was geht denn nicht?

    ((int)0)=0; // <- geht in der Regel nicht.
    Kann man gelegentlich aber trotzdem sinnvoll verwenden.

    Und noch ein paar andere Dinge. Wer weiß, was man nicht macht, kann mit dem Rest programmieren.

    knivil schrieb:

    Wenn Du lernen willst, halte ich selbst Anzupacken für richtig

    Und was ist mit C oder gar ASM?

    Sehr zu empfehlen! OOP bringe ich den Leuten bevorzugt mit C bei, damit sie es "begreifen".

    Assembler habe ich auch ein paar Jahre programmiert, da lernt man erst zu denken und dann zu programmieren. Das bekommt man aber kaum vermittelt, denn wie blöd muss einer sein, wenn er heute noch Assembler lernt und wie arrogant muss ich sein, wenn ich erzählen würde, dass ich als größer Assemblerprogrammierer soviel besser denken könnte als die Nicht-Assemblerprogrammierer. Außerdem geht's ja um Konzepte und nicht um Sprachen... jaja... weil ich auf die Diskussion keinen Bock habe, lasse ich den Rat zu Assembler weg und rate nur den Leuten dazu, die das mit dem Programmierenlernen wirklich ernst meinen oder von mir programmieren lernen wollen.
    Für den Rest bin ich nicht verantwortlich, die können machen, was sie für richtig halten.

    knivil schrieb:

    Wenn Du von C++ kommst, wirst Du Sprachen ohne Const-Correctness hassen

    Nein, ich hasse C nicht. So emotional gehe ich da nicht heran.

    Brauchst Du ja auch nicht, struct Bla const * ist in C ja auch nicht verboten.

    knivil schrieb:

    "Language shapes the way we think, and determines what we can think about."

    Wieviel Sprachen kennst du und kannst du? Ach verdammt, ich drehe mich im Kreis.

    Joah, wird nicht spannender.

    Aktiv programmiert, also mindestens ein Jahr oder länger, habe ich in diversen Basics, Assembler auf mehreren Plattformen, pures C, C++, Delphi, PHP, Java, JavaScript, C# und einer Lisp-ähnlichen Sprache, die ich dank gleichartiger Klammersetzung gehasst habe, sowie Prolog.

    Ich habe 1986 angefangen zu programmieren. Das heißt also nicht, dass ich alles gleichzeitig gemacht habe. Nur C++ mache ich seit 1994 durchgehend. Mit PHP oder Java plane ich in diesem Leben nichts erwähnenswertes mehr zu machen. Java stirbt eh weg, von daher werde ich da wohl auch nicht mehr in Versuchung kommen.

    Ansonsten immer mal wieder etwas Python, Perl, Bash, ... ach keine Ahnung, früher hatte ich mal eine Liste, inzwischen interessiert es mich eigentlich nicht mehr.

    Aktuell lerne ich Scala, aber nicht, um sie aktiv zu verwenden.

    knivil schrieb:

    Verstehe mich nicht falsch, aber gegen fast jeden deiner Punkte koennen leicht Gegenargumente gefunden werden.

    Dann hoffen wir, dass "Wieviel Sprachen kennst Du?" nicht Dein bestes Argument war.
    Da ist ein kläffender Hund hinter'm Tor jedenfalls imposanter.

    Was programmierst Du? Was! Was! Was! Was!... 😉

    In c++11 kamen ja Threads für Concurrency. Wie schwer ist es in c++ concurrent zu programmieren?

    Die Sprache nimmt dir das Denken nicht ab. Deswegen: Genauso schwer.[/quote]
    Das ist zu vermuten. Ich habe es noch nicht ausprobiert, von daher muss ich Dir da einfach mal glauben, dass Du das besser weißt.

    kantaki schrieb:

    Aber ich denke ich werde erst einmal bei scala beleiben.

    Habe ich kein Problem mit. Viel Spaß. 🙂



  • ((int)0)=0; // <- geht in der Regel nicht.

    Da sind wir schon, in der Regel. Hab hier ein System, da geht das.

    Gibt's überhaupt eine Chance, eine Zahl zu nennen, die hoch genug ist, um Deinen Segen zu haben?

    Das war eine rhetorische Frage. Auf den Unterschied zwischen Kennen und Koennen habe ich hingewiesen.

    die ich dank gleichartiger Klammersetzung gehasst habe

    Naja, man gewoehnt sich dran. Spaeter sieht man die Klammern einfach nicht mehr. Ueber das Leerzeichen zw. Woertern beschwere ich mich ja auch nicht.

    Ich verzichte Mal auf den Rest, der ist mir insgesamt zu allgein gehalten. Fuer alle anti-dynamisch Typisierer oder Webprogrammierer etc.: http://www.paulgraham.com/avg.html . Ach und Programmiersprachen sind keine Religion.

    Das ist zu vermuten. Ich habe es noch nicht ausprobiert, von daher muss ich Dir da einfach mal glauben, dass Du das besser weißt.

    Die meisten Sprachen bringen komfortable Bibliotheken mit, die einem das Leben angenhmen machen.



  • knivil schrieb:

    ((int)0)=0; // <- geht in der Regel nicht.

    Da sind wir schon, in der Regel. Hab hier ein System, da geht das.

    Na, ist doch super, dann programmiere Du so und ich bringe meinen Schülern bei, dass das keine gute Idee ist.

    knivil schrieb:

    Gibt's überhaupt eine Chance, eine Zahl zu nennen, die hoch genug ist, um Deinen Segen zu haben?

    Das war eine rhetorische Frage.

    Wie, echt jetzt?

    knivil schrieb:

    die ich dank gleichartiger Klammersetzung gehasst habe

    Naja, man gewoehnt sich dran. Spaeter sieht man die Klammern einfach nicht mehr.

    Ich bin nicht "man".

    Die meisten Sprachen bringen komfortable Bibliotheken mit, die einem das Leben angenhmen machen.

    "Ich verzichte Mal auf den Rest, der ist mir insgesamt zu allgein gehalten."

    Um dem Gespräch mit Dir hier irgendeinen Sinn zu geben: Jemand stellt eine Frage, er wünscht sich eine Antwort. Da hier Menschen mit unterschiedlichen Erfahrungen antworten, wird er auch unterschiedliche Antworten erhalten.

    Ich halte C++ für die ideale Einstiegssprache aus genau den Gründen, weswegen die meisten C++ für eine schlechte Einstiegssprache halten: Weil man begreifen muss. Ich unterrichtete Leute im Programmieren, ich weiß ziemlich genau, was Anfänger verstehen und wo es üblicherweise Erklärungsbedarf gibt. Es gibt Feedback auf das, was ich tue. Ich weiß auch, wohin der Threadstarter unterwegs ist, weil ich diese Leute dann abholen und mit denen "Gruppentherapie" machen durfte, um die verkorksten Vorstellungen gerade zu biegen.
    Aus dem Threadstarter kann ein ganz toller Programmierer werden, wenn er (selbst-)kritisch an die Sache rangeht. Dafür braucht er entweder den richtigen Weg oder sehr, sehr viel Erfahrung.
    Ich habe auch mit Basic angefangen, aber da war ich Grundschüler. Ich habe inzwischen sehr, sehr viel Erfahrung, denn ich hatte keinen, der mir erklärte, wie ich von da, wo ich bin, am besten voran komme.
    Wahrscheinlich wird er sich aber mit dem gewählten Weg irgendwo verhaspeln, wenn er keinen Mentor hat, der dafür sorgt, dass er sich die konkrete Funktionsweise eines Computers aus einer abstrakten Sprache zusammen phantasiert und ihn wieder auf den richtigen Weg bringt, wenn er sich verhaspelt. Aber das darf jeder für sich entscheiden.

    Und dann kommen die "knivels", die das alles besser wissen.
    Hast Du irgendwas sinnvolles in diesem Thread beigetragen, was dem Threadstarter geholfen hat, außer vollkommen unbegründet "Ich bevorzuge Closure" zu schreiben. Nun denn, ich habe die Karten auf den Tisch gelegt und ich habe mal deine letzten Postings im Board überflogen. Was kannst Du eigentlich - außer Lispklammern zählen und dagegen sein?

    --------------------------------------------------------------------
    Antoras hatte ich übersehen:

    Antoras schrieb:

    Ich bezweifle, dass man all den Nutzen von const-correctness vollständig verstehen kann ohne eine funktionale Programmiersprache, wie Scala oder Haskell, richtig zu beherrschen.

    Der Aha-Effekt lässt sich in wenigen Zeilen Code herstellen. Wie ich schon schrieb, ich bringe den Leuten nicht bei gute Programme zu schreiben, sondern schlechte Programme. Dann kommt der Aha-Effekt und sie wissen, warum sie das nicht tun sollten.

    Antoras schrieb:

    Auf der anderen Seite, stimme ich dir zu, dass man Probleme bekommen dürfte die Abstraktionen von Scala oder Haskell lieben zu lernen oder gar nur zu verstehen wenn man sich noch nie mit einer Sprache beschäftigt hat, mit der man mehr low-level programmieren kann.

    Und ich habe die Erfahrung gemacht, dass Leute, die von Low-Level aufsteigen, auch High-Level leichter verstehen. Wer von High-Level auf Low-Level kommt, muss sich im High-Level-Bereich danach häufig neu orientieren - was überflüssig ist, wenn man sein Know-How mit einem Fundament beginnt.

    Antoras schrieb:

    Es fällt mir daher schwer eine Empfehlung auszusprechen ob man (speziell der TO) eher mit Scala oder C++ weiterarbeiten sollte. C++ ist noch ein klein weniger mächtiger als Scala (da man eben Zugriff auf die Bit und Bytes des Rechners hat, auf die man mit Scala nicht zugreifen kann) und vor allem viel mehr verbreitet und angesehen. Auf der anderen Seite sieht C++ einfach kacke aus. 😉

    Wenn man WinAPI-Programmierung oder MFC macht, definitiv.

    Das mache ich gegen finanzielle Bestechung, wenn es sein muss. Man kann aber auch sehr schönes C++ schreiben.

    Antoras schrieb:

    Scala wirkt somit mehr wie aus einem Stück gegossen.

    Ja, eine heile Welt, die schön und sauber ist, aber mit der Realität wenig zu tun hat.

    Stell Dir eine Toilette in einem deutschen Neubau vor. Sauber gefliest, alles Hochglanz. Und jetzt gehst Du in die weite Welt hinaus und stellst fest, dass man anderswo über einem Loch hockt. Mit etwas Glück handelt es sich um eine französische Schüssel, aber es könnte auch einfach ein Loch in der Erde sein. Wie auch immer - so sieht die Realität aus.
    Und wer programmieren lernen möchte, sollte sich in der Realität zurecht finden, nicht nur in einem sauber gefliesten Bad auf modernstem Stand: Das gibt's nämlich da draußen in der Regel nicht.
    Unser ganz reales Erdloch, das unser Überleben sichert, heißt übrigens Fortran. Und im Vergleich dazu ist eine C++ Schüssel, auf der man wenigstens mit einem Eimer selbst spülen kann, echter Luxus.

    Auf Scala programmieren lernen ist wie in der Fahrschule mit Automatik lernen. Man kann Auto fahren, aber es fahren so wenig passende Autos herum.

    Antoras schrieb:

    Speziell nun an den TO: Ich würde also sagen, fange mit der Sprache an, die dir momentan mehr Spaß macht (du hast gemeint, dass das Scala wäre). In 2-3 Jahren kannst du dir C++ dann immer noch angucken, du musst Scala ja nicht bis zum geht nicht mehr ausgereizt haben um dir eine andere Sprache angucken zu können (hast du ja bisher auch nicht gemacht).

    Spaß ist der wichtige Faktor. Macht das ganze keinen Spaß, hat man keine Motivation. Ohne Motivation, kann man es eh bleiben lassen. Scala und Spaß dabei haben ist in jedem Fall besser als C++ ohne es wirklich zu wollen..

    Xin schrieb:

    Ich bin mir nicht ganz sicher ob Scala nicht auch etwas kann, dass C++ nicht kann 😉 Kann man in C++ dem Compiler sagen, dass er z.B. auf eine Datenbank zugreifen soll um daraus Informationen zu holen, die zur Compilierung des Programms benötigt werden?

    Hehehe, das ist eine böse Falle... ^^
    Ich bin versucht zu sagen, dass die Vorbereitung der Kompilierung eigentlich nicht Sache des Compilers ist, aber da ich selbst an einem Compiler arbeite, der nicht wie üblicherweise die Compilerphasen abarbeitet und fertig, kann ich nur sagen, dass ich nicht sehe, wieso ein Compiler eine Verbindung mit einer Datenbank aufnehmen müsste.

    Xin schrieb:

    Und sind Templates eigentlich turingvollständig?

    Sind Kaffeemaschinen turingvollständig?

    Ich habe mich nie mit Template-Metaprogrammierung beschäftigt, ich halte das für Blödsinn. Aber Templates sind ein gutes Werkzeug und Kaffeemaschinen sind praktisch, wenn man Kaffee möchte.

    Xin schrieb:

    Nichts gegen diese Sprachen, aber sie sind nun mal dynamisch typisiert. Für mich wäre das ein Ausschlusskriterium um sie in größeren Projekten einzusetzen.

    👍 👍 👍



  • Ich unterrichtete Leute im Programmieren, ich weiß ziemlich genau, was Anfänger verstehen und wo es üblicherweise Erklärungsbedarf gibt. ...

    Jajajaja, mein Hintergrund ist aehnlich, aber ich bin dort nicht haengen geblieben und stelle ihn selten heraus.

    Um dem Gespräch mit Dir hier irgendeinen Sinn zu geben

    Wir sind bereits auf Seite 5.



  • Xin schrieb:

    kantaki schrieb:

    Was sind denn die großen Vorteile von C++?

    http://www.proggen.org/doku.php?id=start:cppjava

    Proggen.org schrieb:

    C ist wie Mathematik - es wird erst schwer, wenn man gelernt hat, dass es schwer ist - und es bleibt nur solange schwer, wie man glaubt, dass es schwer wäre.

    Was ist an C schwer? Ich finde C++, Java und selbst Python komplexer. Weshalb? Weil die so viel Abstraktion bieten. C ist hingegen richtig schön komptakt und so schön "konkret". In C zu programmieren mag aufwändiger sein, wenn man das gleiche erreichen will wie in C++ oder Java und erst dadurch steigt die Komplexität, aber die Einstiegshürde halte ich bei C für deutlich geringer als in Java oder C++.

    L. G.
    Steffo


Anmelden zum Antworten