Suche eine Programmiersprache!



  • Danke für deine Antwort! Nun C oder C++? Egal?
    C++ tönt zumindest mal besser:-)

    @Dali
    Ich suuuche und suuuche und suuuche 😃

    Andere Meinungen?



  • auf keinen fall C, wenn du dir den C++-stil nicht total versauen willst. und es gibt kein C/C++.



  • volkard schrieb:

    auf keinen fall C, wenn du dir den C++-stil nicht total versauen willst. und es gibt kein C/C++.

    damit meinte ich oder 😉



  • volkard: Der Stil ist imho doch eh schon php-versaut. Also ne Sprache mit ner C-unähnlichen Syntax.



  • volkard schrieb:

    auf keinen fall C, wenn du dir den C++-stil nicht total versauen willst.

    weshalb versaut man sich den c++-stil, wenn man erst eine prozeduale sprache lernt und dann eine objektorientierte?

    ich habe mit diesem lego-zeugs angefangen, dann nqc ( fürs lego, aber c-syntax)
    und dann c++ gelernt und ich muss ehrlich sagen, ich halte meinen c++-stil für sehr gut, und die kentnisse in c helfen eher...



  • Wenn Du bisher in PHP hauptsächlich prozedural programmiert hast, kannst Du durchaus auch mit C anfangen. C ist eine kleine, einfache und simple Sprache, und schneller erlernbar als C++.

    Wenn Du bisher in PHP hauptsächlich objektorientiert programmiert hast, dann nimm vielleicht gleich C++ oder C# oder Java.

    C++ ist sehr komplex und vielschichtig; für einen Anfänger kann das verwirrend sein, wenn vermeintlich einfache Konstrukte nicht funktionieren, so wie sollen.

    Um mehr Gefühl für die objektorientierte Programmierung zu bekommen, nimm besser zuerst eine "harte" OO-Sprache wie Java oder C#.

    Java und C# sind vergleichsweise langsam, und Du kannst dann später immer noch C++ lernen.

    Jedenfalls um einige Tücken von C++ zu verstehen, wie Zeiger, dynamische Speicherverwaltung, und klassische C Arrays (Vektoren), ist es besser, zuerst C zu lernen, um ein Gefühl dafür zu kriegen.

    Die Unterschiede zwischen C / C++ / C# :

    C ist eine einfache prozedurale Sprache, die aus der Sprache BCPL hergeleitet wurde (mehr oder weniger begann es als BCPL mit Datentypen und Strukturen). Sie kann als Konkurrent von Pascal betrachtet werden. Die Hardwarenähe von C brachte ihr den Ruf eines "mit Syntax verzuckerten Assemblers" (Niklaus Wirth, Erfinder von Pascal) ein. Jedoch ist das in mehrerlei Hinsicht unzutreffend, vor allem, da der vom Compiler erzeugte Code meist ca. 5-10 mal schlechter als vergleichbarer Assembler-Code ist. Natürlich ist C heutzutage keine "langsame" Sprache mehr, angesichts der schnellen Computer, die wir heute haben.

    C++ ist eine "weiche" OO-Sprache, die auf C aufbaut. Weich deshalb, weil sie es erlaubt, prozedurale Programmierung und objektorientierte Programmierung zu mischen. Template-Klassen waren ursprünglich dazu gedacht, die Makro-Orgien, die oft mit der Benutzung des C Präprozessors einhergingen, zu beenden, und eine saubere Syntax für Makroprogrammierung in C zu entwickeln. Durch sine Klassen, Mehrfachvererbung und Templates ist C++ immernoch die mächtigeste OO-Sprache überhaupt (gefolgt von Ada 95, dessen OO-Features allerdings schwer verständlich sind).

    C# ist eine Microsoft-Erfindung und hat weder etwas mit C noch mit C++ zu tun. Der Name soll wohl primär dazu dienen, C und C++ Entwickler zu C# zu locken. C# wurde als Microsoft-Version von Java entwickelt. Microsoft fand, daß Java nicht mächtig genug sei und entwickelte eine eigene Sprache. C# bietet sehr viele interessante Features, hat aber weitaus weniger Features als C++ oder Java.

    Java ist eine objektorientierte Sprache, die aus Oak entwickelt wurde, einer portablen Sprache zur Steuerung von Mikrocontrollern. Java-Programme sind heutzutage immer noch sehr langsam im Vergleich zu C++ Programmen, trotz HotSpot Engine. Irgendwann werden die Rechner vielleicht schnell genug um auch Java-Programme so schnell zu machen, daß man damit performante Programme schreiben kann.

    Sowohl Java als auch C# sind ideal zur Programmierung grafischer Oberflächen, was man von C++ nicht unbedingt behaupten kann, da die Bibliotheken bei Java und C# genormt sind, und bei C++ nicht. Für C++ gibt es eine Vielzahl plattformspezifischer und plattformübergreifender Bibliotheken, auch für die Programmierung grafischer Obeflächen.

    Wenn Du einen langsamen Übergang zu compilierten Sprachen haben willst, solltest Du Dir vielleicht noch Perl ansehen, das viel mächtiger als PHP ist, aber dennoch Skriptsprachen-Charakter hat. Beide, PHP und Perl, sowie Python sind "weiche" objektoriente Sprachen wie C++.



  • Vielen Dank für den ausführlichgen Thread!

    Na ja, Oo hab ich in PHP nicht wirklich aktiv betrieben! Ich werde mich mal im Netz ein paar Tuts besorgen und dann entscheiden welches mir zusagt!

    Ihr habt mir sehr geholfen!

    Danke



  • Power Off schrieb:

    Jedoch ist das in mehrerlei Hinsicht unzutreffend, vor allem, da der vom Compiler erzeugte Code meist ca. 5-10 mal schlechter als vergleichbarer Assembler-Code ist. Natürlich ist C heutzutage keine "langsame" Sprache mehr, angesichts der schnellen Computer, die wir heute haben.

    Und auch die Compiler haben seit Anfang der 70er dazu gelernt 🙄 .



  • @OT:

    LUZA schrieb:

    volkard schrieb:

    auf keinen fall C, wenn du dir den C++-stil nicht total versauen willst.

    weshalb versaut man sich den c++-stil, wenn man erst eine prozeduale sprache lernt und dann eine objektorientierte?

    ich habe mit diesem lego-zeugs angefangen, dann nqc ( fürs lego, aber c-syntax)
    und dann c++ gelernt und ich muss ehrlich sagen, ich halte meinen c++-stil für sehr gut, und die kentnisse in c helfen eher...

    Ist "dieses Lego zeugs" mindstorms? Damit hab ich auch angefangen (bin dann aber gleich auf "echtes" C++ umgestiegen). War schon geil, grüne und rote und tolle gelbe und blaue blöcke und der robo Fährt die linie lang 😃 .



  • jupp... rcx... das war was nices... aber mit nqc wirklich ganz anständig



  • Walli schrieb:

    Power Off schrieb:

    Jedoch ist das in mehrerlei Hinsicht unzutreffend, vor allem, da der vom Compiler erzeugte Code meist ca. 5-10 mal schlechter als vergleichbarer Assembler-Code ist. Natürlich ist C heutzutage keine "langsame" Sprache mehr, angesichts der schnellen Computer, die wir heute haben.

    Und auch die Compiler haben seit Anfang der 70er dazu gelernt 🙄 .

    Ich sprach ja von heutigen Compilern. Früher erzeugten die Compiler besseren Code, weil es auf jeden Taktzyklus ankam. Heute wird da eher geschlampt ...

    sowas wie Compiler, deren Optimizer nicht funktionieren (weil sie fehlerhaften Code erzeugen), gab es früher nicht so oft.



  • Du weißt aber, wie man die Optimierungen einschaltet?



  • Walli schrieb:

    Du weißt aber, wie man die Optimierungen einschaltet?

    Klar! Wenn man z.B. bei GCC "-O3" setzt und das Programm sich nicht mehr kompilieren läßt, oder beim Start gleich krepiert. Da kann man sich nur drüber bedanken.

    (Oder wenn Microsoft in seinen billig-Schrott-Compilern gar nicht erst einen Optimizer einbaut, weil der eh nicht funktioniert hätte)



  • Power Off schrieb:

    Klar! Wenn man z.B. bei GCC "-O3" setzt und das Programm sich nicht mehr kompilieren läßt, oder beim Start gleich krepiert. Da kann man sich nur drüber bedanken.

    Das hängt ja wohl stark von dem ab was der Code tut. Ich kenne einen, der schreibt Embedded-Software. Auf seiner Plattform hab es keine Möglichkeit den Instruction-Pointer auszulesen. Einfacher Trick: Ne Funktion aufrufen und die Adresse vom Stack lesen. Hat auch gut funktioniert. Nur wenn man die Optimierung auf -O3 gesetzt hat, dann hat der Compiler die Funktion geinlined... was dabei rauskommt ist wohl klar. Aber ist das nun unbedingt ein Compiler-Fehler?

    Power Off schrieb:

    (Oder wenn Microsoft in seinen billig-Schrott-Compilern gar nicht erst einen Optimizer einbaut, weil der eh nicht funktioniert hätte)

    Huh? Von was redest Du? In den Visual C++ Compilern ist doch ein Optimierer drin. Nur in der sehr günstigen Standardversion ist keiner drin.

    Deinen Faktor von 5-10 halt ich im übrigen für frei erfunden.

    Vielleicht kannst Du aber auch einfach mal ein paar Fakten nachlegen statt nur zumzumotzen.



  • Power Off schrieb:

    Walli schrieb:

    Du weißt aber, wie man die Optimierungen einschaltet?

    Klar! Wenn man z.B. bei GCC "-O3" setzt und das Programm sich nicht mehr kompilieren läßt, oder beim Start gleich krepiert. Da kann man sich nur drüber bedanken.

    (Oder wenn Microsoft in seinen billig-Schrott-Compilern gar nicht erst einen Optimizer einbaut, weil der eh nicht funktioniert hätte)

    Dann lies doch mal das und das.



  • Hallo!

    Neben C, C++ und C# gibts noch Objective-C! Diese Sprache ist besonders interessant, wenn man für MacOS etwas schreiben will oder unter GNUstep 😋 entwickeln möchte.

    Gruß
    Michael



  • Power Off schrieb:

    Um mehr Gefühl für die objektorientierte Programmierung zu bekommen, nimm besser zuerst eine "harte" OO-Sprache wie Java oder C#.

    was soll man dazu sagen, ausser müde zu lachen? Wenn Java "hart" OO ist, dann will ich garnicht wissen, was Smalltalk für dich ist ;). Und mal davon abgesehen, dass OOP nicht "alles in Klassen stecken" ist, wies java tut.

    Jedenfalls um einige Tücken von C++ zu verstehen, wie Zeiger, dynamische Speicherverwaltung, und klassische C Arrays (Vektoren), ist es besser, zuerst C zu lernen, um ein Gefühl dafür zu kriegen.

    ähm...nein? mit C++ kannst du dich zuerst drumrum drücken, und wenn du bereit dafür bist, wirst du auch keine schwierigkeiten mehr haben diese "Tücken" zu verstehen.

    C++ ist eine "weiche" OO-Sprache, die auf C aufbaut. Weich deshalb, weil sie es erlaubt, prozedurale Programmierung und objektorientierte Programmierung zu mischen.

    C++ ist keine OO sprache, sie ist Objektbasiert! Und templates wurden nicht gegen die makro orgien eingesetzt, sondern sins spätestens seit dem letzten standard ein mächtiges Werkzeug für generische Programmierung!

    Java-Programme sind heutzutage immer noch sehr langsam im Vergleich zu C++ Programmen, trotz HotSpot Engine.

    Lassen wir halt mal einfach ausser acht, dass Java je nach problem gleich schnell oder sogar schneller ist 😉



  • Jester schrieb:

    Das hängt ja wohl stark von dem ab was der Code tut. Ich kenne einen, der schreibt Embedded-Software. Auf seiner Plattform hab es keine Möglichkeit den Instruction-Pointer auszulesen. Einfacher Trick: Ne Funktion aufrufen und die Adresse vom Stack lesen. Hat auch gut funktioniert. Nur wenn man die Optimierung auf -O3 gesetzt hat, dann hat der Compiler die Funktion geinlined... was dabei rauskommt ist wohl klar. Aber ist das nun unbedingt ein Compiler-Fehler?

    Und was machste, wenn's nicht daran liegt, sondern wenn's ganz sauber programmierter ANSI C++ Code ist?

    Richtig, Du guckst in die Röhre. No optimizer for you, we're terribly sorry!

    Jester schrieb:

    Huh? Von was redest Du? In den Visual C++ Compilern ist doch ein Optimierer drin. Nur in der sehr günstigen Standardversion ist keiner drin.

    Deinen Faktor von 5-10 halt ich im übrigen für frei erfunden.

    Vielleicht kannst Du aber auch einfach mal ein paar Fakten nachlegen statt nur zumzumotzen.

    Ich benutz Visual C++ (2002) zu Hause seit 2002, und beruflich seit ca. 1996. Bis jetzt gab es keinen Grund für mich, dem Compilerpaket besondere Qualitäten zuzusprechen. Der alte MS C Compiler für DOS hatte auch schon so seine Macken, und den habe ich vorher benutzt (1991-1993).

    Ja, ich weiß, daß in der Standardversion kein Optimizer drin ist, jammerschade, was! Wer gibt schon € 1000 für einen Compiler aus? (*Sarkasmus*)

    Das mit Faktor 5-10 kannste selber nachprüfen, in dem Du mal Code vergleichst, den Du in handoptimiertem Assembler selber geschrieben hast (die Prozessorhandbücher warten schon auf Dich, um Dir zu zeigen, wieviel Prozent des Befehlsatzes der Compiler benutzt).



  • ness schrieb:

    @OT:

    LUZA schrieb:

    volkard schrieb:

    auf keinen fall C, wenn du dir den C++-stil nicht total versauen willst.

    weshalb versaut man sich den c++-stil, wenn man erst eine prozeduale sprache lernt und dann eine objektorientierte?

    ich habe mit diesem lego-zeugs angefangen, dann nqc ( fürs lego, aber c-syntax)
    und dann c++ gelernt und ich muss ehrlich sagen, ich halte meinen c++-stil für sehr gut, und die kentnisse in c helfen eher...

    Ist "dieses Lego zeugs" mindstorms? Damit hab ich auch angefangen (bin dann aber gleich auf "echtes" C++ umgestiegen). War schon geil, grüne und rote und tolle gelbe und blaue blöcke und der robo Fährt die linie lang 😃 .

    Das schönste war die Roboter zusammen zu bauen, wie in der guten alten Lego zeit 🙂



  • otze schrieb:

    was soll man dazu sagen, ausser müde zu lachen? Wenn Java "hart" OO ist, dann will ich garnicht wissen, was Smalltalk für dich ist ;). Und mal davon abgesehen, dass OOP nicht "alles in Klassen stecken" ist, wies java tut.

    Ultrahart? Noch härter? 😉

    Ja, eigentlich sollte ich von Smalltalk voll das OO-Rohr kriegen! 😉

    Hab mich bis jetzt noch nicht damit beschäftigt.

    Klar, Java ist "alles in Klassen stecken". Du und ich, wir wissen, daß wahre OO-Programmierung im Kopf stattfindet.

    otze schrieb:

    ähm...nein? mit C++ kannst du dich zuerst drumrum drücken, und wenn du bereit dafür bist, wirst du auch keine schwierigkeiten mehr haben diese "Tücken" zu verstehen.

    Sicher, so geht es auch. Vielleicht denke ich nur, daß man besser zuerst C lernen sollte, weil ich's selber so gemacht hab! 😉

    otze schrieb:

    C++ ist keine OO sprache, sie ist Objektbasiert! Und templates wurden nicht gegen die makro orgien eingesetzt, sondern sins spätestens seit dem letzten standard ein mächtiges Werkzeug für generische Programmierung!

    Na ja, im Prinzip sind templates ja gar nix anderes als Makros (aus der Sicht des Compilers).

    Für generische Programmierung wäre Ada 95 aber besser geeignet! Leider ist das viel zu umständlich, da ist C++ definitiv sehr viel lesbarer.

    Und klar, mit der STL oder selbergeschriebenen Templates kann man sehr gut generisch programmieren.

    otze schrieb:

    Lassen wir halt mal einfach ausser acht, dass Java je nach problem gleich schnell oder sogar schneller ist 😉

    Hmm ... das liegt aber nur an den bescheidenen Template-Klassen der STL. Z.B. die String-Klasse ist 10 mal so langsam wie meine eigenen, woran das bloß liegt? 😉


Anmelden zum Antworten