Welche Programmiersprache als erstes lernen?



  • Dein VS? Ja wieso bleibt bei mir der Programm nicht offen?



  • Es ist irgendwo sicher einstellbar.
    Da ich grad kein VS zur Hand habe, hab ich google gefragt 😃

    Rechtsklick auf die Projektmappe
    Projekteigenschaften
    Linker-Reiter auswählen
    System auswählen
    Und bei Sub-System Console auswählen.
    

    Alle Angaben wie immer ohne Gewähr



  • Ich bin im moment voll verwirrt:}
    ich Hab Microsoft Visual C++ Express und wenn ich das hier eingebe blendet sich das Programm ein und sofort wieder aus.:
    // Erster Test
    #include <iostream>

    int main()
    {
    std::cout << "Mein erstes Programm!" << std::endl;
    }

    deine Variante geht bei mier irgendwie nicht, und Starten ohne Debugging ist auch keine Lösung



  • BasicMan01 schrieb:

    // Erster Test
    #include <iostream>
    
    int main()
    {
        std::cout << "Mein erstes Programm!" << std::endl;
    
        std::cin.get(); // !!!!!!!!!!!!!
    }
    

    für Codefragen solltest du dann in Zukunft gleich in den C++-Forenbereich schreiben. Da dürfte es schneller gehen 😉



  • Verwechseln nicht, was du willst und was der Author des Tutorial zeigt. Man hat dir den Code schon gezeigt, wie er aussehen soll, wenn sich das Fenster nicht schließen soll.



  • Wenn du beim Tutorial liest siehst du das er als Lösung für das "Fenter nicht schliessen" sagt das man Starten ohne Debugging benutzen soll, aber bei mir funktioniert das nicht.



  • im Laufe deines Programmiererlebens wirst du oft auf Tutorials und Lösungen stoßen, die bei anderen funktionieren und bei dir nicht.
    Hier musst du dann entscheiden, ob es sich lohnt, daran festzuhalten oder eine alternative Lösung anzunehmen. Oftmals kommt später die Erleuchtung.

    Mein Vorschlag für dich wäre, das cin.get() erstmal anzunehmen und lieber was cooles zu programmieren, als stundenlang darauf zu bestehen, das Microsoft so funktioniert, wie es im Tutorial steht 🤡



  • Zeus schrieb:

    Wie soll die Freiheit von C# beeinflusst, wenn man LLVM als Backend-Optimizier für CLI verwendet?

    Mein Fehler. Ich habe angenommen LLVM-Mono erstellt LLVM-Bytecode anstatt CLI-Bytecode und löst sich damit weiter von Microsoft-Technologie. Also kein Rechtsvorteil durch LLVM in Mono. Trotzdem ist C#/Mono noch freier als Java dank eines verbindlichen Versprechens Microsofts:
    http://www.golem.de/0907/68198.html

    Ich habe immer Java als freier und rechtlich sicherer angesehen als C#, und Sun als "fairer" als Microsoft, aber seit dem Versprechen Microsofts bezüglich C# und CLI und der Übernahme Suns durch Oracle sieht es meiner Meinung nach eher umgekehrt aus.



  • Frei Dom schrieb:

    dank eines verbindlichen Versprechens Microsofts:
    http://www.golem.de/0907/68198.html

    HAHA! HAHA! HAHA! HAHA! HAHA!
    Dann kommt halt .net+ raus mit neuen Trivialpatenten und das alte .net funktioniert unter dem neuen Windows nicht.
    MS kann *jederzeit* beliebig viele Gegner auf PCs abwürgen. Sie werden nur strategisch und klein am Leben gelassen, weil man als offensichtlicher Monopolist zu viel Gegenwind bekommt.



  • Das ist nur Marketing-Blabla! C#/CLI/BCL sind ECMA Standardisiert.

    Und die ECMA sieht vor.

    2. If an Ecma International Standard is developed and a party may own or control a patent or application with claims that are required to implement such Ecma International Standard

    2.1 The patent holder is prepared to grant licenses free of charge to other parties on a non-discriminatory basis on reasonable terms and conditions.

    d.h. Wenn Microsoft es will können sie Mono gewaltig abspecken.



  • Damit steht C# trotzdem noch besser da als Java.

    Java hat eine geschlossene Implementierung und eine Patentklage an eine alternative Implementierung vorzuweisen.

    C# hat eine offene Implementierung und ein verbindliches Versprechen vorzuweisen.

    Microsoft ist erfahrungsgemäß nicht zu trauen, aber Oracle hat jegliches Vertrauen bereits enttäuscht.

    Ich bin zum Glück auf Beides nicht angewiesen.



  • Und vom OpenJDK die unter GPL steht haben wir nicht gehört?



  • Dany5 schrieb:

    Ich bin im moment voll verwirrt:

    Weil du dir einen Compiler hast aufzwingen lassen. Schlechte Idee. Zum Einsteigen willst du einen Interpreter, weil ein Interpreter naturgemäss einige Debugging-Möglichkeiten hat. Ausserdem willst du einen Garbage-Collector, weil du lernen willst wie man programmiert, und nicht wie man Speicher verwaltet. Und wahrscheinlich willst du auch ein latentes (schwaches) Typsystem, damit du drauflos schreiben kannst, ohne vor dem Testen genaue Auskünfte über die verwendeten Typen einzuholen.

    In diesem Sinn solltest du schnell auf Python oder Scheme oder sowas umsatteln. Die vielen C++-Empfehlungen kannst du getrost ignorieren, weil von einem C++-Forum nichts anderes zu erwarten ist.
    🙂



  • mngbd schrieb:

    Ausserdem willst du einen Garbage-Collector, weil du lernen willst wie man programmiert, und nicht wie man Speicher verwaltet.

    Hä? Wieder ein C++-Hasser? Hat ja erstaunlich viele Seiten lang gedauert. Früher kamen so Sprüche stets schon auf der ersten Seite.



  • mngbd schrieb:

    Weil du dir einen Compiler hast aufzwingen lassen. Schlechte Idee. Zum Einsteigen willst du...

    Wie wäre es solchen Unsinn zu lassen, nein, es geht mir nicht um Interpreter und Compiler, sondern jemanden zu sagen was er zu wollen hat.

    Was er will ist natürlich sehr schwer zu ermitteln, aber zu sagen was er will ist ziemlich anmaßend. Je nach dem was er sich als Ziele setzt kann deine Aussage stimmen oder komplett falsch sein (und teilweise mächtig nach hinten losgehen, falls er später auch C oder C++ lernen will. Ich habe sehr viele Fälle erlebt, in denen jemand extreme Probleme hatte von einer Sprache mit GC & Co auf eine ohne zu wechseln, umgekehrt fällt es häufig leichter, hat aber auch eine höhere Einstiegshürde).



  • Als allererste Programmiersprache würde ich aber auch NICHT C++ empfehlen, da man als Anfänger dort mehr falsch als richtig machen kann und von den Compilerfehlermeldungen häufig völlig irritiert wird.
    Und der Frust führt dann eher dazu, daß man auf Programmieren dann gar keine Lust mehr hat (weil man ja nicht weiß, wie einfach es manchmal sein kann, aber das bringt eben nur die Erfahrung -).

    Und die Grundsätze der OOP lernt man mit anderen Sprachen viel besser (C#, Java), da C++ eben eine Multiparadigmensprache ist (und Templates, Zeiger/Referenzen sowie das Streaming am Anfang eher abschreckend wirken).

    Aber ich verstehe schon die Bedenken, daß man danach beim Wechsel auf C++ es (ebenso) schwer hat (man glaubt, programmieren zu können, muß aber trotzdem nochmal bei Null anfangen).

    Ich finde C++ kann man nur schätzen (lernen), wenn man die Nachteile anderer Sprache kennt (ohne zu vergessen, daß auch C++ nicht perfekt ist. Und durch C++0x wird die Schere zwischen "C++ mit Klassen"-Programmierern und echten "C++ Profis" immer größer).

    P.S. Ich würde C++ auch noch mehr lieben, wenn sie viel mehr alten Ballast (das sog. C Erbe) wegwerfen würden (zumindestens mit einer Compiler-Option!!!)



  • volkard schrieb:

    Hä? Wieder ein C++-Hasser? Hat ja erstaunlich viele Seiten lang gedauert. Früher kamen so Sprüche stets schon auf der ersten Seite.

    Nö, gar nicht. Aber zum Anfangen ist C++, und sogar C#, mal ehrlich gesagt, nichts. Da muss was möglichst einfaches her, etwas, das man schnell intuitiv bedienen kann. So ist es einfacher, die schwierigeren Themen experimentell anzugehen. Und später, wenn man eine Vorstellung davon hat, was ein Stack ist, kann man sich erklären lassen, dass und warum new ein Objekt nicht auf "dem" Stack anlegt, und was "der" Stack eigentlich ist.

    Ich glaube nicht, dass eine solche "Einstiegs-Phase" bei ehrlichem Interesse länger als ein paar Wochen dauern muss. Aber nach ein paar Wochen kennt man einige Eigenschaften der meisten Programmiersprachen, so wie: Algol60-Blockstruktur, Funktionen mit Parametern und Rückgabewerten, Infix mit optionalen Klammern, usw. Man unterscheidet dann Argumente von Parametern, auch wenn man die beiden Worte noch nie gehört hat.

    Und die Meinung ist eben, auch wenn sie euch gar nicht gefällt, dass C++ die Voraussetzungen für eine Einstiegs-Sprache in diesem Sinn nicht erfüllt.

    Der Behauptung, ich hätte vor, "jemanden zu sagen was er zu wollen hat", halte ich entgegen, dass sie nicht stimmt.
    🙂

    Edit: Die Blöcke gab's scheinbar schon in Algol60.



  • Th69 schrieb:

    Als allererste Programmiersprache würde ich aber auch NICHT C++ empfehlen,

    In der Regel gebe ich dir Recht, wobei auch diese Aussage abhängig von der Zielsetzung abhängig ist. Wenn jemand ein Ziel hat, wofür Skriptsprachen nicht geeignet sind, rentiert es sich nicht, mit einer Skriptsprache zu beginnen, um dann direkt wieder umlernen zu müssen. Genauso wie umgekehrt...

    Th69 schrieb:

    ...da man als Anfänger dort mehr falsch als richtig machen kann und von den Compilerfehlermeldungen häufig völlig irritiert wird.

    Zwar ist C++ komplex, aber je nach Lektüre kann ich die Aussage so nicht unterschreiben. Ja, es gibt viele Fallstricke, aber die Lektüre macht auch viel aus.

    Th69 schrieb:

    Und die Grundsätze der OOP lernt man mit anderen Sprachen viel besser (C#, Java)...

    Wenn man vorrangig OOP lernen will (wobei ich C# und Java auch nicht unbedingt als die sauberste OO ansehe).

    Th69 schrieb:

    ...da C++ eben eine Multiparadigmensprache ist (und Templates, Zeiger/Referenzen sowie das Streaming am Anfang eher abschreckend wirken).

    Wobei man manche Themen auch ignorieren kann. Niemand zwingt einem Templates zu lernen (solange man diese grundlegend verwenden kann, wie std::vector<int>, was aber wesentlich einfacher ist, als ein komplettes Verständnis der Hintergründe).

    Zeiger sind auch keinen Zwang bei den ersten Gehschritten (man kommt durchaus auch mit Stackvariablen und Containern aus).

    Und ob Streaming wirklich kompliziert ist, muss jeder selbst entscheiden, ich fand die C++ Streams einfacher als die kriptischen Kürzel bei printf & Co.

    Th69 schrieb:

    Und durch C++0x wird die Schere zwischen "C++ mit Klassen"-Programmierern und echten "C++ Profis" immer größer).

    Sehe ich auch wieder nicht so: Man muss nicht den ganzen Sprachumfang kennen, um sauber zu programmieren.

    Th69 schrieb:

    P.S. Ich würde C++ auch noch mehr lieben, wenn sie viel mehr alten Ballast (das sog. C Erbe) wegwerfen würden (zumindestens mit einer Compiler-Option!!!)

    Und eine binärkompatible Schnittstelle (zumindest pro OS), und damit Bibliotheken bzw. ein Modulsystem endlich mal integrieren könnte.



  • mngbd schrieb:

    Der Behauptung, ich hätte vor, "jemanden zu sagen was er zu wollen hat", halte ich entgegen, dass sie nicht stimmt.
    🙂

    mngbd schrieb:

    Zum Einsteigen willst du einen Interpreter, weil ein Interpreter naturgemäss einige Debugging-Möglichkeiten hat. Ausserdem willst du einen Garbage-Collector, weil du...

    Naja, das kann man leichter anders verstehen als so, wie Du es auslegst.

    ps: Du willst ja gar nicht dazulernen. Es gab doch hier wirklich genug von merkbefreiten Anti-C++-Trollen angeheizte Diskussionen.

    Es gibt sogar gute Gründe, nicht mit C++ anzufangen. Aber das hängt stark vom Lerner ab, wie stark die ziehen. Deine Gründe ziehen gar nicht. Debugger für C++ sind gut. Freispeicher, wer braucht denn sowas, wenn es doch std::string und std::vector gibt? Später mal für Polymorphie, und wenn man dann einen ptr-Container nimmt, ist delete immer noch nocht nötig. Irgendwann mal zur Übung eine verkettete Liste basteln, ja, aber wenn man so weit schon ist, kann man im .remove() neben dem Umketten und droppen des gelöschten Knotens auch schnell ein delete reinschreiben.



  • Man kann mit Basiswissen in C++ schon Anwendungen programmieren. Das Basiswissen reizt halt die Möglichkeiten der Sprache nur nicht aus. Aber man kann sich ja entwickeln, das ist aber bei jedem der C++ Profis hier der Fall gewesen.

    Meistens gibt es solche Fallen, das jemand ein C++/CLI Projekt im MSVC erstellt und sich dann wundert, das es nicht so läuft wie im Buch beschrieben.

    Und wenn in den Büchern auf den ersten Seiten mit Pointern und C-Funktionen um sich geschmissen wird, braucht man sich auch nicht wundern, das C++ dem Einsteiger die Lust am Programmieren nimmt. Gerade C++ ist doch mit seinen Standardklassen (string, vector etc.) prädestiniert Spaß in die Programmierung zu bringen.

    Das einzige Hindernis ist wirklich die fehlende GUI Lib.


Anmelden zum Antworten