Suche eine Programmiersprache!



  • 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? 😉



  • 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?

    mal davon abgesehen, dass "10mal so langsam" ganz schlechter stil ist...die string klassen der stl sind auf keinen spezialfall optimiert, sie versuchen alles gut zu können, und das geht halt nicht ;). Ausserdem ist das sehr implementationsabhängig, gibt ja verschiedene anbieter der stl...



  • Power Off schrieb:

    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? 😉

    Wenn du ne os-unabhängig, allgemeingültig verwendbare Stringklasse
    hast, die 10 mal schneller als die handelsüblichen STL-Implementierungen sind,
    solltest du dich mal als Chef-Entwickler bei Microsoft, Borland oder... bewerben.
    Ein sechstelliges Jahresgehalt wär doch sicher nicht schlecht oder.

    Wer angibt hat mehr vom Leben

    😃 😃 😃



  • Redhead schrieb:

    Wenn du ne os-unabhängig, allgemeingültig verwendbare Stringklasse
    hast, die 10 mal schneller als die handelsüblichen STL-Implementierungen sind,
    solltest du dich mal als Chef-Entwickler bei Microsoft, Borland oder... bewerben.
    Ein sechstelliges Jahresgehalt wär doch sicher nicht schlecht oder.

    Mit den Funktionen der C-Standard-Library und einem "greedy allocation scheme" (also "gierigem Speicherzuweisungsschema") kann man das ohne Weiteres machen. Predictive, also voerhersagende, Speicherverwaltung ist ganz leicht zu implementieren und vermeidet unnötige Reallocs.

    So eine Klasse muß nicht unbedingt eine Template-Klasse sein. Schließlich braucht ja meistens nur Strings die 8-Bit oder Unicode-Zeichen enthalten (und letztere kann man ja über UTF-8 auch als 8-Bit codieren).

    Sechsstellige Gehälter sind in Amerika für erfahrene Programmierer (senior programmers) gang und gäbe.



  • Bisher sind mirdiese "superschnellen" Strings noch nicht in freien oder
    kommerziellen (STL-)Implementierungen begegnet. Obs da vielleicht auch
    Nachteile gibt. 😉

    Wir sind hier aber nicht in USA und haben daher auch nicht diese Standards. 😞



  • Redhead schrieb:

    Wir sind hier aber nicht in USA und haben daher auch nicht diese Standards. 😞

    Ja leider; aber vielleicht kommt das noch irgendwann, wenn die Regierung das Sozialsystem weiter abbaut. Wenn der Kündigungsschutz aufgehoben wird, gilt das ja wahrscheinlich beiderseitig. In den USA kann man von einen Tag auf den anderen kündigen, man wirft bloß ein Kärtchen in einen Briefkasten und fertig. Deswegen sind die Firmen in den USA auch so erpicht darauf, ihre Angestellten zu behalten. Deswegen zahlen sie auch mehr.

    Aber in den USA geht zur Zeit das Schreckgespenst des Outsourcings um -- Firmen verlagern z.B. Entwicklungzentren knallhart ins Ausland (nach Indien oder China). Ob sich das wirklich rechnet, ist eine andere Frage.

    Bin jedenfalls noch immer froh, in Deutschland zu sein ...



  • <Habe nun hier etwas über Python gelesen!>

    C ist für den Anfang ganz gut, man muß es halt können. Wenn man C oder besser noch C++ kann,
    ist es leicht, andere Sprachen zu lernen, denn gerade C++ ist derart
    kompliziert, daß es einem den Atem verschlägt, wenn man sieht, wie man
    Programme, die in C++ Bildschirmseiten füllen (gerade Listenverarbeitung,
    Komprehension oder auch Funktionen als Argumente) mit Python in ein paar
    Zeilen hinschreiben kann.


Anmelden zum Antworten