# Fachinformatiker Anwedungsentwicklung! Welche Programmiersprache?



## Shakti (29. Januar 2012)

Hi ich fange am Sommer bei einem Unternehmen an den Beruf FI AE zu lernen.

Ich werde dort wie man mir sagte mit Microsoft Dynamics NAV arbeiten.

Ich möchte mir daher vorher gerne selber ein paar Dinge aneignen.
Meine Frage wäre was könnte ich tun?
Welche Programmiersprache sollte ich mir anschauen oder schon mal ein paar Basics lernen?
Gibt es gute Literatur dafür?

Ich habe noch nie in meinem Leben so was gemacht deshalb bitte verständlich erklären bzw. beschreiben
Natürlich habe ich schon mal von C++; Java; etc. gehört. Aber halt noch nicht damit gearbeitet.


Danke


----------



## Memphys (29. Januar 2012)

Frag doch mal bei dem Unternehmen an, die werden dir garantiert nicht den Kopf abreißen weil du gut vorbereitet sein willst. Wenn du weißt was du lernen willst sind die eBooks/openbooks von Galileo Computing ganz gut. Find ich persönlich recht verständlich und ich weiß von meinem Vater das Azubis bei denen in der Firma die auch immer an den Kopf geknallt bekommen


----------



## hBGl (29. Januar 2012)

In der Berufsschule wirst du eine Sprache lernen um die Grundlagen des Programmierens zu erlernen. Es ist im Endeffekt egal mit welcher du anfängst. Wahrscheinlich wird das Java oder C/C++ sein.

Gibt da sehr gute online Turorials für totale Neueinsteiger.

Mit Microsoft Navision werde ich bald auch arbeiten. Ist auf jeden Fall ziemlich cool.


----------



## Shakti (29. Januar 2012)

Danke für die Antworten 

Ich werde dann mal bei der Firma nachfragen und mir mal Material besorgen.
Wenn sich hier jemand gut mit NAV und prgrammierung auskennt, darf er sich gerne bei mir melden damit ich evtl einen Ansprechpartner für die Zeit bis zur Ausbildung habe.

Soweit schönen Sonntag euch allen


----------



## Mashed (30. Januar 2012)

In der Wirtschaft sind Java, C#, C++ und C am meisten gefragt, wobei Java auf Platz 1 liegt. Auch wenn ich persönlich Java nicht mag, empfehle ich dir die Sprache zu lernen, weil du dann schnell auf andere viel verwendete Sprachen umsatteln kannst. Wenn du Hintergrundwissen haben willst, "wie ein Computer tickt", solltest du auch C lernen. C hat viele Stolpersteine, aber man lernt einiges über Computer dabei.


----------



## Ahab (30. Januar 2012)

Die beste Grundlage liefert sicherlich ein Anfang mit C. Das hilft so ziemlich jede andere Sprache zu lernen. So könntest du auch relativ einfach auf C++ und C# umsatteln. Auch der Umstieg auf Java wird nicht schwer sein. 

Frag doch am besten mal bei der Firma nach, welche Sprache hauptsächlich verwendet wird.


----------



## Playa (8. Februar 2012)

"*C*" für den Anfang ist schwierig, zumal *C* wenig Fehler verzeiht.

Du würdest nichts verkehrt machen, wenn du mit Java anfängst.
Da mußt du dich anfangs auch nicht um das Speicheraufräumen kümmern. Das erledigt für dich schon die _Garbage collection_.

Die meisten Berufschulen lehren auch Java. Manchmal auch erst im 2. oder 3. Lehrjahr.

Mit dem Einstieg in Java, kriegst du schon die ersten Grundkenntnisse der Programmierung. 
Objektorientierte Programmiersprachen ähneln sich im Aufbau und der Syntax sehr.

In deiner späteren Prüfung wirst du auch nicht auf dein Aufgabenzettel was in einer bestimmten Programmiersprache runterkritzeln, sondern in eine Pseudocode.

Eine gute Alternative die ich dir zu Java noch empfehlen könnte, wäre Delphi.
Java jedoch ist weiter verbreitet und wird ebenso vielfach für Webdesign, Mobile Geräte (wie Smartphones) und Waschmaschinen verwendet.


----------



## hardware_fanatiker (8. Februar 2012)

Je nachdem wie motiviert und ausdauernd du bist, wäre C++ vielleicht auch ne gute Alternative, denn da wirst du erstmal auf nem normaleren Weg an das klassische Build-Verfahren ran geführt und musst dich nicht gleich mit Sachen wie der Java-Runtime Auseinander setzen. Außerdem empfand ich zu mindestens es einfacher, erstmal nicht alles Klassen und Objekte packen zu müssen. Und die Anzahl der Fälle , in denen man noch selbst den Garbage Collector spielen muss, lassen sich an einer Hand abzählen, weil mittlerweile sich so gut wie alles auch mit Containern machen lässt.


----------



## Olstyle (8. Februar 2012)

Die Anwendungsentwickler die ich kenne haben mit C# gelernt und dabei wohl auch viel mit SQL Server hantiert(Abschlussjahrgang 2011). Soo wichtig ist es aber eigentlich garnicht mit welche C-Dialekt man anfängt.

Was ich bei reinem C (und C++), gerade für Anfänger ohne einen der drüber guckt, unschön finde ist dessen Grundannahme " der Programmierer hat immer recht". Wenn z.B. ein Index aus dem Array läuft wird halt der Speicherbereich darüber gelesen. . 
Bei Java, C# etc. merkt solche Fehler schon der Compiler, das kann einem gerade beim Einstieg viel Frust ersparen.


----------



## Frezy (9. Februar 2012)

> Die beste Grundlage liefert sicherlich ein Anfang mit C. Das hilft so ziemlich jede andere Sprache zu lernen. So könntest du auch relativ einfach auf C++ und C# umsatteln. Auch der Umstieg auf Java wird nicht schwer sein.


 
Also da muss ich Playa recht geben. Mit C anzufangen wäre ein sehr schwierige Angelegenheit. Am besten du fängst mit C# oder Java an um einmal die Logik und Grundlagen zu lernen.

Ich habe in meine Ausbildung mit Java begonnen (bin kein Fan von Java) und nach 2 Jahren auf C# umgesattelt. Vor zwei Jahren habe ich mich erst in die Welt von c++ begeben und habe dabei sehr viel gelernt und muss sagen, dass ich es nicht umbedingt einfach fand. Anders als bei C# und Java, musst du in c/c++ deinen Speicher selbst verwalten (kein garbage collector ). Ohne meine Vorkenntnisse (5 Jahre Programmieren mit Java und C#, professionell in der Schule, kein Zuhause Hobby programmieren) wäre ich wahrscheinlich verzweifelt. 

Also ich würde dir C# oder Java ans Herz legen. Meiner Meinung ist C# am besten um in die Welt der Programmierung einzutauchen. Das riesige .NET Framework mit den 10000 Klassen und Funktionen werden dich auch dabei unterstützen. Außerdem hast du eine große Community und eine (meiner Meinung die beste) Doc wo du immer nach Hilfe suchen kannst.

Am Anfang musst du sowieso einmal die Grundlagen lernen. Am Anfang musst du sowieso die Syntax und Semantik der Sprache kennenlernen und auch die Grundlagen wie Datentypen, Schleifen, etc. erforschen die eigentlich in jeder Sprache gleich sind. (Bezogen auf Java und C#. In C++ wirst du einige davon nicht finden.)

Mit freundlichen Grüßen,
Frezy


----------



## thysol (9. Februar 2012)

Frezy schrieb:


> Also ich würde dir C# oder Java ans Herz legen. Meiner Meinung ist C# am besten um in die Welt der Programmierung einzutauchen. Das riesige .NET Framework mit den 10000 Klassen und Funktionen werden dich auch dabei unterstützen. Außerdem hast du eine große Community und eine (meiner Meinung die beste) Doc wo du immer nach Hilfe suchen kannst.
> 
> Am Anfang musst du sowieso einmal die Grundlagen lernen. Am Anfang musst du sowieso die Syntax und Semantik der Sprache kennenlernen und auch die Grundlagen wie Datentypen, Schleifen, etc. erforschen die eigentlich in jeder Sprache gleich sind. (Bezogen auf Java und C#. In C++ wirst du einige davon nicht finden.)
> 
> ...



Von Java und C# würde ich als erste Sprache eigentlich erstmal abraten. Ich würde erstmal klassisch mit C anfangen und nicht mit Objekt-orientierten Kram wie Java oder C#. Danach würde ich auf C++ ausweiten, allerdings nur wenn nötig, wenn du alleine arbeitest dürfte C ausreichen, wenn du in einem Team arbeitest dürfte C++ besser sein. Und nur mal nebenbei, C# läuft nur auf Windows-systemen. Mann kann zwar mit Mono auch C# code auf Linux zum laufen bringen aber da kommt es oft zu Problemen wenn mann auf externe Programmbibliotheken angewiesen ist.


----------



## Kel (9. Februar 2012)

Playa schrieb:


> Eine gute Alternative die ich dir zu Java noch empfehlen könnte, wäre Delphi.


 
Der war gut


----------



## Olstyle (9. Februar 2012)

thysol schrieb:


> Von Java und C# würde ich als erste Sprache eigentlich erstmal abraten. Ich würde erstmal klassisch mit C anfangen und nicht mit Objekt-orientierten Kram wie Java oder C#.


Lass mich raten. Du hast vor Jahren prozedurale Programmierung gelernt und wurdest irgend wann zur Objektorientierung "gezwungen"?!
Dann lass dir gesagt sein dass Objektorientierung keine unnötige Verkomplizierung vom Programmieren wie du es kennst sondern schlicht ein anderer (modernerer) Ansatz ist.
Beide Ansätze kann man ähnlich schnell lernen, wenn man bei 0 startet.

Und ich sehe mittlerweile keinen Grund mehr nicht beim neueren, sich immer mehr durchsetzenden Ansatz zu beginnen.


----------



## thysol (9. Februar 2012)

Olstyle schrieb:


> Lass mich raten. Du hast vor Jahren prozedurale Programmierung gelernt und wurdest irgend wann zur Objektorientierung "gezwungen"?!


 
Richtig geraten.



Olstyle schrieb:


> Dann lass dir gesagt sein dass Objektorientierung keine unnötige Verkomplizierung vom Programmieren wie du es kennst sondern schlicht ein anderer (modernerer) Ansatz ist.



Das stimmt auch, aber bei den kleinen Programmen die mann als Anfänger schreibt ist Objekt-Orientierung in meinen Augen eine unnötige verkomplizierung. Bei grösseren Programmen vereinfacht Objekt-Orientierung natürlich alles, keine Frage, vorallem wenn mann im Team arbeiten muss.



Olstyle schrieb:


> Beide Ansätze kann man ähnlich schnell lernen, wenn man bei 0 startet.



Ich würde aber erst "klassische" Programmierung lernen und dann auf Objekt-Orientierung ausweiten.



Olstyle schrieb:


> Und ich sehe mittlerweile keinen Grund mehr nicht beim neueren, sich immer mehr durchsetzenden Ansatz zu beginnen.


 
Nur mal so, prozedurale Programmierung wird bei vielen "modernen" Sachen noch benutzt. Im GPGPU Computing Bereich zum Beispiel wird sehr viel ohne Objekt-Orientierung gemacht. Das gilt auch für Anwendungen im Bereich Verteiltes Rechnen.


----------



## bingo88 (9. Februar 2012)

Ich sehe da kein Problem bei Java oder C#. Man kann als Anfänger auch bei diesen Sprachen ziemlich lange ohne (richtiges) OOP auskommen (EVA-Programme bspw.).

Das es bei GPGPU/HPC wenig bis kein OOP gibt, hat aber eher Performancegründe. Abgesehen davon ist das schon ein sehr spezieller Bereich


----------



## Crysis nerd (10. Februar 2012)

Ich verstehe nicht ganz die Panikmache, dass C/C++ so schwer sein soll. 
Was gesagt wird, dass es keine Fehler verzeiht, das kann schon sein, aber ich finde das nicht schlecht. Wir Programmierer arbeiten doch genau so: Wir müssen eine bestimmte Syntax beherschen und unsere Programme in dieser Syntax schreiben. Und das bezieht sich auch auf andere Bereiche der Programmierung, wie Speicherverwaltung und Arrays. 
Wenn man einen nicht existierenden Index beim Array angibt, hat man halt verloren, dann muss man es verbessern und dann geht es. Fertig.  Wenn ich eine Website schreibe, nutze ich auch XHTML und mache sie XHTML Strict valid und nicht nur HTML Geschmiere.
Ich finde es hat was gutes. Man lernt exakt und genau zu arbeiten. Andere Sprachen fallen einem danach wahrscheinlich sogar einfacher.

Allerdings kann ich nichts über Java oder C# sagen, weil ich mich kaum mit den Sprachen außernander gesetzt habe... Das werde ich aber demnächst tun.

Ich finde die Aussage eines Vorposters schon ganz gut: Bei C lernt man eine Menge über den PC. Und man lernt exakt zu arbeiten. 
C# ist für viele Dinge jedoch praktischer dank seiner vielen Bibliotheken.

Mein Tipp: Mit C/C++ anfangen und Grundlagen ordentlich lernen. Und dann kannste nach einiger Zeit auf C# oder Java (falls du Waschmaschinen programmieren willst  ) umsteigen.

mfg
Lukas


PS: Einer meinte C++ ist richtig schwer.. Finde ich garnicht, ich habe nur HTML und bat/batch gelernt (was ja keine richtigen Sprachen sind) und danach direkt C++


----------



## thysol (10. Februar 2012)

Crysis nerd schrieb:


> Bei C lernt man eine Menge über den PC.


 
Wenn mann eine Menge über den PC lernen will dann sollte mann lernen in Assembly zu programmieren.


----------



## bingo88 (10. Februar 2012)

thysol schrieb:


> Wenn mann eine Menge über den PC lernen will dann sollte mann lernen in Assembly zu programmieren.


 Das ist dann allerdings definitv nichts für Einsteiger


----------



## Frezy (10. Februar 2012)

Hey,



> Ich würde aber erst "klassische" Programmierung lernen und dann auf Objekt-Orientierung ausweiten.


 
Erm... wir schreiben das Jahr 2012 ... die Objektorientierte Programmierung ist der heutige Standard. So gut wie jede aktuelle Software setzt auf die oo Programmierung auf.



> Das stimmt auch, aber bei den kleinen Programmen die mann als Anfänger schreibt ist Objekt-Orientierung in meinen Augen eine unnötige verkomplizierung. Bei grösseren Programmen vereinfacht Objekt-Orientierung natürlich alles, keine Frage, vorallem wenn mann im Team arbeiten muss.


 
Also bist du der Meinung ich lerne alles zweimal? Also sry aber besonders in dem Bereich wo er dann arbeitet ist die OO-Programmierung wichtig. 



> Nur mal so, prozedurale Programmierung wird bei vielen "modernen" Sachen noch benutzt. Im GPGPU Computing Bereich zum Beispiel wird sehr viel ohne Objekt-Orientierung gemacht. Das gilt auch für Anwendungen im Bereich Verteiltes Rechnen.


 
Dann solltest du mal den Beitrag des Erstellers lesen. Es geht hier nicht um was soll ich lernen sondern wie kann ich mich auf meinen Job vorbereiten. Und wenn dort mit Microsoft Dynamics NAV arbeitet bin ich mir sicher, dass er dort eher mit C# oder VB konfrontiert wird und nicht mit C/C++.



> Ich verstehe nicht ganz die Panikmache, dass C/C++ so schwer sein soll.


Weil C/C++ nicht C/C++ ist. (Zumindest im Internet) C/C++ ist ein Standard... das sich jemand daran haltet ist nicht vorrausgesetzt. Im Internet wirst du mit C/C++, C++/CLI und anderen C/C++ Verschnitten konfrontiert. Das ist besonders am Anfang sehr verwirrend. Besonders wenn du gerade erst in die Welt der Programmierung einsteigst. 
In C# hast du das MSDN. Dort sind viele Leute die dir helfen, (meiner Meinung) die beste Dokumentation die du finden kannst und das größte Framework das es zurzeit gibt. In C/C++ bist du darauf angewiesen fast alles selber zu machen. In C# hast du weiß nicht wie viele Klassen die dir dabei helfen deine Idee umzusetzten. Wie viele Funktionen/Methoden/Klassen sind im C/C++ Standard definiert? Genau... im Gegensatz zum .NET Framework genau null. 



> Wenn man einen nicht existierenden Index beim Array angibt, hat man halt verloren, dann muss man es verbessern und dann geht es.


Also das ist ident zu C#. Verstehe nicht was du dadurch sagen willst. Nur das bei C# "Array overflow" und in C++ "Speicherzugriffsfehler im Bereich 0x000AB33FF2" angezeigt wird.



> Ich finde es hat was gutes. Man lernt exakt und genau zu arbeiten.QUOTE]
> Wenn du denkst du darf in C# unsauberen Code schreiben... dann hast du als Programmierer sowieso verloren.
> 
> 
> ...


----------



## Crysis nerd (10. Februar 2012)

Frezy schrieb:


> ...


 Worauf ich hinauswollte ist die Meinung die vor meinem Post haufenweise verkündet wurde: C++ verzeiht keine Fehler. Das heißt ja wohl, dass es andere Sprachen, die hier empfohlen werden, also Java und C#, Fehler verzeihen. Ich kann es nicht beurteilen, da ichs selber kaum programmiert habe, aber wie gesagt, das erschließt sich mir aus meinen Vorpostern.
Und darauf beziehe ich mich nur und habe es (eventuell ein bischen vorschnell) mit Xhtml und html verglichen. 

Was das mit dem "Lernen über den Computer" angeht, finde ich aber dass man natürlich bei Hardware nahen Sprachen mehr lernt. Klar ASM wäre noch ein Schritt weiter, aber das ist wiederrum zu ineffizient. 
Ich finde vorallem interessant, dass C++ beides bietet, die hardwarenahe strukurierte Programmierung UND OOP. klar ist OOP die Zukunft, aber man sollte trotzdem das andere nicht vernachlässigen.

Und ja ich war der "lustige Typ" (warum auch immer du zu dieser Meinung kommst), der nach den Sicherheitslücken meiner Homepage gefragt hatte. Aber ich verstehe wiederrum nicht, wie das für dich nicht zusammen passt? Ich darf doch wohl sauberen Code schreiben und trotzdem fragen, ob jemand Sicherheitslücken findet. Sicherheitslücken auf Homepages haben nichts damit zu tun, wie sauber der Code ist, sondern mit den eingebauten Sicherheitsmechanismen, um bestimmte Sachen zu escapen. Da musst du dich nochmal erklären...


Und sorry habe gerade nicht allzuviel Zeit, sonst hätteste von mir noch ein bischen mehr Text bekommen 

Und ja von mir auch ein Tut mir Leid an den TE 
(Aber das ist hier doch auch immer das gleiche oder? Jemand fragt nur ganz simple nach einer Programmiersprache und nachher hauen sich sofort wieder alle Fachwörter um die Ohren und Streiten sich, als wenns um Leben und tot geht..)

mfg
LUkas


----------



## Olstyle (10. Februar 2012)

Crysis nerd schrieb:


> Worauf ich hinauswollte ist die Meinung die vor meinem Post haufenweise verkündet wurde: C++ verzeiht keine Fehler. Das heißt ja wohl, dass es andere Sprachen, die hier empfohlen werden, also Java und C#, Fehler verzeihen.


Da hast du was falsch verstanden.
 Es ging mir darum dass C zum Teil logische Fehler zulässt welche die moderneren Sprachen direkt erkennen. Fehler bleiben es auch da.
Siehe Arraybeispiel: Der Speicherfehler mit C kommt unter Umständen vom OS, aber für den C-Compiler ist ein Zugriff "out of bounds" erlaubter Code der allenfalls mit einer Warnung kommentiert wird.  Wenn man nicht gerade einen Virus schreiben will("aus versehen" out of bounds so lesen und schreiben ist der gängigste Trick bei parasitären Programmen) ist es dann doch angenehmer wenn sowas schon beim Kompilieren das Problem aufgedeckt wird oder zumindest ein definierter Fehler Auftritt statt dass schlicht Schwachsinn passiert.


----------



## Playa (10. Februar 2012)

Ich merke schon, nicht nur an der Auslache über meinen Alternativvorschlag mit "Delphi", dass wir hier nicht wirklich auf einen gemeinsamen Nenner kommen.

Letztlich geht es darum dem Jungen eine 'anfängliche' Programmiersprache vorzuschlagen, doch irgendwie hauen sich hier alle die Köpfe ein, warum die Sprache besser ist und warum jene ..

Also Fakt ist, "C" ist und bleibt für Anfänger schwierig. 
Es kommt drauf an, was genau in seinem künftigen Betrieb programmiert/entwickelt wird, und daran sollte er sich richten.

Wenn es irgendwelche Programme mit grafischer Oberfläche für Windows-Systeme werden sollen, ist nahezu jede Objektorientierte Sprache gut.
Ratsam ist immer eine, die weit verbreitet ist. Das ist nunmal "C", "Java" und Delphi (..etc. pp.).

"C" verzeiht nunmal wenig Fehler (hmmm ... déjà vu ??   ) weshalb man hier doch auf etwas 'einfacheres' zurückgreifen sollte.

Java ist sehr C - ähnlich, jedoch können Anfänger sehr gut damit Programme schreiben ohne erst den Code lange nach Syntaxfehlern zu durchforsten und Speicherlecks zu schließen ...


Deshalb an den Themenstarter: Probier einfach etwas rum wenn du die Chance hast. Sieh dir ein paar Beispiel-Projekte in z.B. C# oder Java an, ließ ein wenig was über die Syntax und den Aufbau ... 
Hol dir vielleicht noch ein paar mehr Meinungen ein, ohne dass sich die Forenmitglieder von der Hauptfrage zu sehr abwenden und entscheide vielleicht dann.

Hast ja noch ein wenig Zeit ... nur warte nicht zu lange wenn du das vorhast.


----------



## fadade (10. Februar 2012)

Crysis nerd schrieb:


> Ich finde vorallem interessant, dass C++ beides bietet, die hardwarenahe strukurierte Programmierung UND OOP. klar ist OOP die Zukunft, aber man sollte trotzdem das andere nicht vernachlässigen.


 
Sorry, dass ich da widersprechen muss, aber wer momentan studiert lernt, dass man Objekte auch in funktionalen Programmiersprachen (als Beispiel sei mal wieder das össelige Scheme genannt ) viel besser repräsentieren kann ^^

Aber was auf jeden Fall stimmt ist, dass OOP-Sprachen jetzt und auch noch einige Zeit at the TOP bleiben 
Außerdem sollte sich ein Informatiker (Fach/Hobby/....) immer möglichst die Sprache zur Problemlösung auswählen, die am geeignetsten ist.



Playa schrieb:


> Ich merke schon, nicht nur an der Auslache über  meinen Alternativvorschlag mit "Delphi", dass wir hier nicht wirklich  auf einen gemeinsamen Nenner kommen.


  Meine Meinung: Um sich darauf *vorzubereiten *ist die Sprache eigentlich egal! Nur eine OOP-Sprache wirst du wahrscheinlich auch weiter im Beruf nutzen, weshalb das wohl am sinnvollsten ist.
Man schaue sich ein wenig um und nehme für den Anfang das, was einem am besten liegt. Später kann man sich dann auch an "schwierigere" Sprachen setzen.


----------



## Playa (10. Februar 2012)

fadade schrieb:


> Man schaue sich ein wenig um und nehme für den Anfang das, was einem am besten liegt. Später kann man sich dann auch an "schwierigere" Sprachen setzen.



Meine Rede .. !


----------



## Skysnake (11. Februar 2012)

Playa schrieb:


> "*C*" für den Anfang ist schwierig, zumal *C* wenig Fehler verzeiht.
> 
> Du würdest nichts verkehrt machen, wenn du mit Java anfängst.
> Da mußt du dich anfangs auch nicht um das Speicheraufräumen kümmern. Das erledigt für dich schon die _Garbage collection_.
> ...


Also ich frag mich echt immer mit eurer Speicherverwaltung habt.... Habt ihr schon mal angefangen C/C++ zu lernen?

Da habt ihr am Anfang genau NULL damit zu tun. So lange ihr keinen Stack/Heap Overflow habt, kann euch das so was von scheis egal sein, ob man da nun Speicher selbst verwalten muss oder nicht. Und wenn man es machen muss, dann ist das alles recht schnell geklärt. Bei uns wird darauf z.B. in der Info1 Vorlesung (besserer C/C++ Programmierkurs) überhaupt nicht drauf eingegangen. Ich bin selbst drauf gestoßen, das ich ein großes Array nutzen wollte, und dann lustige Fehlermeldungen bekommen habe. Das war dann in ner Stunde dann aber alles geklärt und seit dem ist auch die ach so "schwere" Speicherverwaltung kein Ding 

Ihr verkennt immer etwas C/C++.

C/C++ eröffnet einem viele Möglichkeiten. Wenn man aber keinen Bock hat diese zu nutzen, kommt man VERDAMMT weit. Seh es wie ein Fernseher mit der Mörder Fernbedienung. Da kannste auch einfach nur den Ein/Aus Knopf nur benutzen, genau wie bei solchen, die eben gar nicht mehr bieten, und schwieriger ist das auch nicht, weil die SO FETT sind, das man sie nicht übersieht. Wenn man aber will/muss, dann kann man aber auch alles mögliche mit machen, wo man bei den anderen Sachen aufgeschmissen ist.

Kurz um, die ganzen komplizierten Sachen kommen in C/C++ eigentlich nur dadurch zustande, das man Performance braucht, und da wirds egal in welcher Sprache kompliziert. Wenn ich z.B. Performance brauche, nutz ich Zeiger und Referenzen. Wenn nicht, kopier ich den Mist halt rum.




Olstyle schrieb:


> Die Anwendungsentwickler die ich kenne haben mit C# gelernt und dabei wohl auch viel mit SQL Server hantiert(Abschlussjahrgang 2011). Soo wichtig ist es aber eigentlich garnicht mit welche C-Dialekt man anfängt.
> 
> Was ich bei reinem C (und C++), gerade für Anfänger ohne einen der drüber guckt, unschön finde ist dessen Grundannahme " der Programmierer hat immer recht". Wenn z.B. ein Index aus dem Array läuft wird halt der Speicherbereich darüber gelesen. .
> Bei Java, C# etc. merkt solche Fehler schon der Compiler, das kann einem gerade beim Einstieg viel Frust ersparen.


 Ja, diese Grundannahme "der Programmierer hat immer recht" ist durchaus mit gewissen Fallstricken versehen  Hab ich selbst auch schon erlebt. Allerdings fängt man ja langsam an und lernt schritt für schritt das, was man brauch. Wenn einem Performance etc. egal ist, kommt man mit den ganzen fancy Sachen ja gar nicht in Berührung.

Ich nutz z.B. aktuell auch ein Array eines Structs, mit Zeigern auf arrays eines Structs mit Zeigern auf Listen  Total hässlich, sich das zu überlegen, wie man jetzt auf die einzelnen Sachen zugreifen muss, und wie man das jetzt genau anordnet, damit es modular ist, aber wenn mans einmal hat, dann ist es nur noch copy&paste. Wie so oft halt.




Frezy schrieb:


> Also da muss ich Playa recht geben. Mit C anzufangen wäre ein sehr schwierige Angelegenheit. Am besten du fängst mit C# oder Java an um einmal die Logik und Grundlagen zu lernen.


Wenn man ANSI C nimmt, was jetzt die Deklaration der Variablen auch in den Schleifen zu lässt etc. dann ist das kein Stück komplizierter. Dich zwingt ja keiner, dich mit dem schwierigen Themen zu befassen. Du KANNST es machen, aber für die meisten Sachen musst du es nicht.

Das ist es ja. C/C++ gibt dir viele Werkzeuge an die Hand, die du nutzen KANNST! du wirst aber nur selten dazu gezwungen Sie wirklich zu nutzen.



> Ich habe in meine Ausbildung mit Java begonnen (bin kein Fan von Java) und nach 2 Jahren auf C# umgesattelt. Vor zwei Jahren habe ich mich erst in die Welt von c++ begeben und habe dabei sehr viel gelernt und muss sagen, dass ich es nicht umbedingt einfach fand. Anders als bei C# und Java, musst du in c/c++ deinen Speicher selbst verwalten (kein garbage collector ). Ohne meine Vorkenntnisse (5 Jahre Programmieren mit Java und C#, professionell in der Schule, kein Zuhause Hobby programmieren) wäre ich wahrscheinlich verzweifelt.
> 
> Also ich würde dir C# oder Java ans Herz legen. Meiner Meinung ist C# am besten um in die Welt der Programmierung einzutauchen. Das riesige .NET Framework mit den 10000 Klassen und Funktionen werden dich auch dabei unterstützen. Außerdem hast du eine große Community und eine (meiner Meinung die beste) Doc wo du immer nach Hilfe suchen kannst.


Was willst du/er lernen? 

Wirklich programmieren und Lösungen selbst entwickeln, oder fertige Sachen zusammenstecken, wo man nicht weiß wies funktioniert.... 

Klar, das muss man auch können, für die Wirtschaft, wo es oft drum geht schnell etwas zu lösen, das hat dann aber für mich nichts mehr mit Informatik zu tun, sondern wirklich nur noch reines programmieren. Dafür nutz ich aber lieber nen Inder oder whot ever. Der ist billiger. Hier in D sollten sich die Leute schon bitte Gedanken darüber machen, was Sie da grad runter hacken.



> Am Anfang musst du sowieso einmal die Grundlagen lernen. Am Anfang musst du sowieso die Syntax und Semantik der Sprache kennenlernen und auch die Grundlagen wie Datentypen, Schleifen, etc. erforschen die eigentlich in jeder Sprache gleich sind. (Bezogen auf Java und C#. In C++ wirst du einige davon nicht finden.)


 Die Grundlagen sind halt in vielen Sprachen ziemlich ähnlich. Daher machts gerade am Anfang auch nur wenig Unterschied, ob man jetzt C/C++ Java, oder sonst was lernt. So lange die Sprache Datentypen kennt, und es nicht so fancy wie Python handhabt, ist das alles sehr ähnlich.


----------



## Lan_Party (11. Februar 2012)

Also ich mache gerade den Technischen Assi für Informatik. Letztes Jahr war es noch so das die Schüler C++ lernen mussten. Wir, die neuen, lernen nun C# und ich kann dir sagen es ist wirklich einfach!
Ich persönlich würde sagen das du mit C# anfangen solltest und etwas mit C++ arbeiten solltest.
Du musst für dich schauen was einfacher ist. Ich habe versucht C zu lernen und fand es wirklich schwer! C# vereinfacht alles aufs extremste!


----------



## Skysnake (11. Februar 2012)

Was fandest du denn daran schwer?

In C# bist du halt auf Windows fest genagelt. 

In C hat du ein paar Grundlegende Sachen, aus dem du alles andere basteln kannst. Halt programmieren.


----------



## hBGl (11. Februar 2012)

Was du am Anfang in der Berufsschule lernst ist sprachenunabhängig. Fang am besten mit C#, C++ oder Java an. Objektorientierung wirst du in der Berufsschule auf jeden Fall machen.

Das Niveau in meiner Berufsschule ist so niedrig, dass ich mir da an deiner Stelle keine Sorgen machen würde. Da machen wir in einem halben Jahr Sachen, die du dir an einem Samstag Nachmittag selbst beibringen könntest.

Wenn du dich auf die Ausbildung vorbereiten willst dann lerne die Grundlagen des Programmierens in einer der Sprachen und schau zu, dass du auch gut Englisch kannst. Englische Texte sollte man als Programmierer flüssig lesen und vor allem verstehen können.

Viel mehr würde ich gar nicht machen. Die Ausbildung heißt Ausbildung weil du da was lernen sollst und nicht schon alles mitbringen musst.


----------



## Frezy (13. Februar 2012)

Hey,



> Letztes Jahr war es noch so das die Schüler C++ lernen mussten. Wir, die neuen, lernen nun C# und ich kann dir sagen es ist wirklich einfach!


 
Jep, genau so war es bei mit Java vor 7 Jahren bzw. C# vor 4 Jahren. Nur hald in einer HTL. 



> In C# bist du halt auf Windows fest genagelt.


 
Gut das du auf Windows beschränkt bist ist bei C# klar. (Hört mir bitte mit Mono auf.) Jedoch muss ich dazusagen, dass du auch in C++ mit vielen Funktionen (nicht ANSI) auf verschiedene OSs festgenagelt bist. Vor allem wenn es ums Dateisystem geht. (Da hab ich meine ersten Bekanntschaften gemacht. Mutexes etc.) Dann kannst du auch anfangen Codesegmente für jedes OS zu schreiben.
Da ist dann hald die einzige Möglichkeit in Java zu coden, wenn du das umgehen willst.

Aber ich glaube wir verwirren dich nur mehr mit unserem geklappere.

Laut Wikipedia wird in MS Dynamics NAV mit der Programmiersprache C/AL gearbeitet. Diese ähnelt sich am ehersten mit Pascal.

"C/AL (_C/SIDE Application Language_) ist eine interne Programmiersprache für Microsoft Dynamics NAV auf Basis der C/SIDE-Entwicklungsumgebung. C/AL ist ereignisgesteuert, aber nicht objektorientiert. C/AL zählt zu den Programmiersprachen der 4. Generation. C/AL ist syntaktisch mit Turbo Pascal verwandt, hat allerdings nicht eine so strenge Typisierung wie Pascal.
Praktisch der gesamte Funktionsumfang von Microsoft Dynamics NAV ist in C/AL programmiert und für die Solution-Center zugänglich. Somit kann NAV komplett an die Bedürfnisse und Wünsche der Kunden angepasst werden.
Der Zugang zu C/AL kann optional in einer Entwickler-Lizenz erworben werden. Programmierer erhalten dadurch die Möglichkeit, die Anwendung an ihre spezifischen Anforderungen anzupassen. Die Anwendungsobjekte können durch eine binäre oder textbasierte Import-/Exportfunktion einfach portiert werden."

Quelle: Microsoft Dynamics NAV

Jedoch arbeitet Microsoft an einer neueren Version die auf .Net Basis geschrieben wird. Ich bin mir sicher früher oder später wird Micrsoft den Support für C# ermöglichen. Somit wäre C# eine gute Alternative wenn du was für die Zukunft lernen willst.

"
Die im Dezember 2010 aktuelle Version von Navision ist Dynamics NAV 2009 R2. Parallel zur Weiterentwicklung von Navision entwickelt Microsoft mittel-/langfristig eine Version auf Basis von .NET, die die MBS-Produkte Dynamics NAV, Dynamics AX und Dynamics GP zu einem ERP-System zusammenführen soll. Der Support von NAV (Navision) wurde Anfang 2008 nach offiziellen Angaben von Microsoft [3] auf 10 Jahre erweitert: 5 Jahre Mainstream Support und 5 Jahre Extended Support. Der Support beginnt mit der Version NAV 5.0.
Im ersten Quartal 2008 erschien eine Lösung für kleine Unternehmen und Kleinstunternehmen. Diese Lösung erhielt den Namen Microsoft Dynamics Entrepreneur Solution 2008 und basierte auf Dynamics NAV 5.0. Microsoft hat die Weiterentwicklung von Entrepreneur jedoch eingestellt und eine Herausnahme aus dem Sortiment für Ende 2009 angekündigt, um sein Marketing strategisch auf NAV 2009 konzentrieren zu können. (Verkündet per Brief und Mail an MS Partner sowie auf dem 2008er Microsoft Dynamics ERP Launch in Fürstenfeldbruck, 8./9. September 2008)
Dynamics NAV 2009 erhielt als erstes NAV-Release statt der bisherigen Versionsnummer die bei Microsoft-Software übliche Jahreszahl. Diese Version bot erstmals:

Die Auswahlmöglichkeit zwischen dem neuen rollenbasierten Client („Role Tailored Client“) und dem bekannten Client, der nun als „Classic Client” bezeichnet wird.
Optionale Drei-Schichten-Architektur statt der bisherigen Zwei-Schichten-Architektur.
Änderungen der Benutzeroberfläche, z. B. neues Form-Design, Grafiken (Infoparts), Icons (Papierstapel), Action Panel, „Breadcrumb Bar”, Command Bar.
Programmierung erfolgt weiterhin in C/AL, der Quelltext wird aber intern nach C# portiert und eine DLL erstellt.
Für die Version NAV 2009 wird für den rollenbasierten Client Microsoft SQL Server 2005 (oder höher) vorausgesetzt, bei Verwendung des bisherigen Clients kann weiterhin der proprietäre "Dynamics NAV Database Server" eingesetzt werden, der aber technisch nicht mehr weiterentwickelt wird."
Quelle: Microsoft Dynamics NAV

Mit freundlichen Grüßen,
Frezy


----------



## Kel (13. Februar 2012)

Playa schrieb:


> Ich merke schon, nicht nur an der Auslache über meinen Alternativvorschlag mit "Delphi", dass wir hier nicht wirklich auf einen gemeinsamen Nenner kommen.
> Ratsam ist immer eine, die weit verbreitet ist. Das ist nunmal "C", "Java" und Delphi (..etc. pp.).


Delphi war schon am verrotten, als ich den Mist in der Schule durchnehmen musste, es wird nicht wieder lebendig und das ist auch gut so .
Ich wüsste genau 0 Gründe, weshalb Delphi
- verbreitet wäre
- gut wäre
- gut war
- irgendwelche Vorteile gegenüber einer der lebendigen Sprachen (C,C++, Java, Ruby, Python, C# etc etc) bietet

Daneben kostet es 199€, um an eine aktuelle Delphiversion zu kommen, die nebenbei nichtmal UTF8 oder 64bit beherrscht .
Die Entwicklung ist auch jedes Jahr bei nem anderen Unternehmen, es wird hin und her verkauft ....


----------



## Frezy (13. Februar 2012)

Hey,

So das ist mein letzter Beitrag hier. Wie man sieht hat sich der TE schon lang nicht mehr gemeldet und das endet nur mehr im Chaos.



> Also ich frag mich echt immer mit eurer Speicherverwaltung habt.... Habt ihr schon mal angefangen C/C++ zu lernen?
> 
> Da habt ihr am Anfang genau NULL damit zu tun.



Dann kommst du aber nicht weit wenn du das so siehst.



> So lange ihr keinen Stack/Heap Overflow habt, kann euch das so was von scheis egal sein, ob man da nun Speicher selbst verwalten muss oder nicht. Und wenn man es machen muss, dann ist das alles recht schnell geklärt. Bei uns wird darauf z.B. in der Info1 Vorlesung (besserer C/C++ Programmierkurs) überhaupt nicht drauf eingegangen. Ich bin selbst drauf gestoßen, das ich ein großes Array nutzen wollte, und dann lustige Fehlermeldungen bekommen habe. Das war dann in ner Stunde dann aber alles geklärt und seit dem ist auch die ach so "schwere" Speicherverwaltung kein Ding



Dann will ich nicht wissen wie viele Memory Leaks du in deine Programme gebaut hast. Wenn du glaubst, mit Pointern hat sich das ganze getan, dann solltest du dich noch etwas länger mit der Speicherverwaltung beschäftigen.



> Kurz um, die ganzen komplizierten Sachen kommen in C/C++ eigentlich nur dadurch zustande, das man Performance braucht, und da wirds egal in welcher Sprache kompliziert. Wenn ich z.B. Performance brauche, nutz ich Zeiger und Referenzen. Wenn nicht, kopier ich den Mist halt rum.



o.0 mehr sag ich dazu nicht...



> Wirklich programmieren und Lösungen selbst entwickeln, oder fertige Sachen zusammenstecken, wo man nicht weiß wies funktioniert....



Du KANNST in C# auch alles selber machen ... musst du aber nicht, da du ein riesiges Framework hast. In C++ hast du das nicht... Auch wir mussten verschiedene Algorithmen (Bubblesort, etc.) programmieren, obwohl eine es eine Alternative im .NET Framework dafür gibt. C# verbietet dir nicht deine Algorithmen selbst umzusetzen, stellt aber viele zur Verfügung. Aber wenn du meinst das man als Programmierer fertige Sachen zusammensteckt, dann hast du wohl noch nicht sehr viel mit dem Beruf zu tun.

Als Programmierer bin ich nicht nur dafür zuständig Code zu schreiben. Viel eher geht es um die Entwicklung eines Algorithmus und ein bestimmtes Problem in die Hand zu nehmen. (Mir kommt vor du beschreibst einen Programmierer als ein Kind mit vielen Legosteinen. Leider ist es damit nicht getan.)

Also wie oben bereits geschrieben, war das mein letzter Beitrag hier. Themenverfehlung... 5... setzen.

Mit freundlichen Grüßen,
Frezy


----------



## Skysnake (14. Februar 2012)

Frezy schrieb:


> Hey,
> Dann kommst du aber nicht weit wenn du das so siehst.


Lass mich mal überlegen.. hm.. Ich komm so weit, wie ich kein new/malloc brauch, also schon SEHR weit (Constructor/Destructor klammer ich da aus. Keiner zwingt dich zu OoP). Ergo, gerade wenn man lernt, kommst du mit der explizieten Speicherverwaltung eigentlich gar nicht in Berührung, sondern erst wenn du größere und kompliziertere Projekte machst, dann solltest du aber eh schon wissen was du denn da eigentlich fabrizierst.



> Dann will ich nicht wissen wie viele Memory Leaks du in deine Programme gebaut hast. Wenn du glaubst, mit Pointern hat sich das ganze getan, dann solltest du dich noch etwas länger mit der Speicherverwaltung beschäftigen.


Wayne interessiert ein Memory Leak bei nem Programm, das nach ein paar Sekunden/Minuten fertig ist? Zudem, wie willst du ein MemoryLeak ohne new/Malloc erzeugen, und ohne OoP? Bin ich mal gespannt. Es geht ums LERNEN! nicht um "wie schreibe ich eine kommerzielle Software". Da muss man dann nämlich wirklich auf Memory Leaks aufpassen, vor allem wenn das Ding länger stabil laufen soll. Jetzt tun wir aber bitte nicht so, als ob Memory Leaks nur ein Problem von C/C++ ist. Das ist grundsätzlich ein Problem jeder Programmierung ab einem gewissen Komplexitätsgrad, einfach weil kein Code Fehlerfrei ist, und durch solche Fehler eben gerne auch mal Memory Leaks entstehen. Also von daher den Ball mal flach halten, und nicht den Teufel an die Wand malen. 



> o.0 mehr sag ich dazu nicht...


Ja warum machste denn sonst die Zeiger/Referenc gymnastik. Machste halt call by value und gut ist. Übergeb ich der Funktion halt das 100MB Struct statt einfach den Zeiger darauf. Juckt mich ja nicht. Genau so juckts mich nicht, ob ich das jetzt in nem 1D array mit alignment abspeicher, oder in nem 2D array, oder ob ich 10 mal mehr Speicher verbrauch als nötig, oder ob ich jetzt AOS oder SOA nehm ist dann auch kack egal. Genau so wie Cache-Größen, Cachelines, etc. etc. Mit so was KANN man sich beschäftigen, und damit einiges aus seinem Programm raus holen, aber das ist doch für Leute, die eine Sprache lernen wollen total fürn Arsch. Über so was kann man sich gedanken machen, wenn man Sie wirklich brauch...



> Du KANNST in C# auch alles selber machen ... musst du aber nicht, da du ein riesiges Framework hast. In C++ hast du das nicht... Auch wir mussten verschiedene Algorithmen (Bubblesort, etc.) programmieren, obwohl eine es eine Alternative im .NET Framework dafür gibt. C# verbietet dir nicht deine Algorithmen selbst umzusetzen, stellt aber viele zur Verfügung. Aber wenn du meinst das man als Programmierer fertige Sachen zusammensteckt, dann hast du wohl noch nicht sehr viel mit dem Beruf zu tun.
> 
> Als Programmierer bin ich nicht nur dafür zuständig Code zu schreiben. Viel eher geht es um die Entwicklung eines Algorithmus und ein bestimmtes Problem in die Hand zu nehmen. (Mir kommt vor du beschreibst einen Programmierer als ein Kind mit vielen Legosteinen. Leider ist es damit nicht getan.)
> 
> Also wie oben bereits geschrieben, war das mein letzter Beitrag hier. Themenverfehlung... 5... setzen.


Lesen/Verstehen, das sieht man mal wieder deutlich. Ich sag:" Programmieren ist *nicht* nur Nimm Bilbiothek XY und wurschtel das mit Bibliothek Z zusammen", und du erzählst mir ich würde genau das Gegenteil behaupten... Wenn du dann schon von Noten anfängst, dann Setzen 6, Textverständnis nicht vorhanden...

Gerade als Anfänger ist es zwar schön und gut, wenn man viele Bibliotheken hat, aus denen man sich bedienen kann, dadurch verkommt Programmieren aber eben genau zu dem von dir verschriehenen Legokasten.... Gerade als Anfänger sollte man lieber mal eine doppelt verkettete Liste selbst implementieren, genau wie die anderen Standardalgorithmen, um ein Gefühl für die Sprache zu bekommen und auch dafür, welche Auswirkungen es hat, wenn man Sachen unterschiedliche implementiert. Gerade ein parallel reduze ist eine gute Fingerübung. Klar nutzt man später gern mal Bibliotheken, einfach weil man ein Projekt fertig machen muss, und eben auch gar nicht die Zeit/das Geld hat, um alles selbst zu implementieren, und zumindest genau so schnell zu sein, wie die Bibliotheken. An denen haben ja viele Leute mitgearbeitet mit guten Ideen. Programmieren ist aber halt schon etwas mehr, denn die Entscheidung ob ich jetzt Bibliothek XY mit diesem oder jenen Sortierverfahren einsetze, die liegt schon noch bei mir. Genau so kann ich durch die ganze Programmstrucktur viel beeinflussen, und auch so manches Problem/zusätzliche Arbeit geschickt einsparen. Das schaff ich aber erst, wenn ich weiß, was da passiert. Wenn Bibliotheken für mich einfach nur Blackboxen sind, in die ich was rein werf und dann kommt hinten wieder was raus, dann ist das zwar praktikabel, aber man sollte doch zumindest den Ansatz einer Idee haben, was da wohl gemacht wird, und spätestens wenn ich wirklich in den Code rein schau, sollte ich verstehen können, was da passiert, und warum etwas so und nicht anders gemacht wird. 

Dazu muss ich aber mir halt auch mal selbst gedanken machen und etwas selbst schreiben, auch wenn es dazu schon 10k Bibliotheken gibt, die 1000 mal schneller sind als das was ich da fabrizier. Aber so seh ich dann was gut ist und was schlecht ist. 

PS:
Halt den Ball flach und les mein Sach nochmal durch. Du braucht mir nämlich nicht erzählen, das ein Informatiker mehr ist als nur stur irgend welchen Code runter hacken, sondern die Algorithmen und Datenstruckturen sehr wichtig sind. Aber hey, ich bin ein kleines dummes nichts wissendes Kind, was von tuten und blasen keine Ahnung hat, und deswegen auch schon mal um nen Faktor 2 schneller war als der Dozent...


----------



## thysol (14. Februar 2012)

Frezy schrieb:


> Als Programmierer bin ich nicht nur dafür zuständig Code zu schreiben. Viel eher geht es um die Entwicklung eines Algorithmus und ein bestimmtes Problem in die Hand zu nehmen. (Mir kommt vor du beschreibst einen Programmierer als ein Kind mit vielen Legosteinen. Leider ist es damit nicht getan.)


 
Das ist hier allen vollkommen bewusst, aber warum soll ich das Rad neu erfinden wenn das schon jemand anders getan hat? Klar muss mann als Programmierer Probleme lösen, aber doch nicht unbedingt Probleme die Leute schon vor dir hatten, dafür gibt es dann die Legosteine.


----------



## Skysnake (14. Februar 2012)

Jaein. 

Du wirst nie DIE perfekte Lösung finden, es sei denn es sind triviale Sachen, wie z.B. Einfach etwas zu sortieren, z.B. in einer Liste. Oft kann man aber hier oder dort eine Abhängigkeit eliminieren, oder auch Strukturen nutzen, so dass das Sortieren schneller geht, weil man schon eine gewisse Ordnung hat, und dann nur noch Teilbereiche sortieren muss. 

Sortieren ist ein gutes Beispiel dafür, wo es keinen Sinn macht, das selbst zu implementieren. Dafür gibts Bibliotheken, an deren Speed man wohl nie selbst ran kommen wird. Das steckt ja auch ne ganze Menge höherer Mathematik dahinter.

in den meisten Fällen, besteht deine Aufgabe ja aus mehr als nur das sortieren von Listen etc. Da muss man dann eh selbst Hand anlegen. Genau so kann z.B. sinnvoll sein, das einlesen von Bilddateien selbst zu schreiben, obwohl es dafür auch Bibliotheken gibt, einfach weil man eine bestimme Datenstruktur brauch oder was auch immer. 

Z.B. gibts ja auch die Vectoren in der STL. Wenns auf das letzte Quäntchen Performance an kommt, nutzt man aber lieber 1D arrays, und sorgt selbst für alignment. Die Dinger können halt in dem Fall mehr als man brauch, und es gibt ein einfacher Konstrukt, was die Aufgabe auch erfüllt. Für 99,9999999% der Programmierer dürfte das allerdings völlig belanglos sein. Es soll aber das Prinzip verdeutlichen. Wenn du Bibliotheken nutzt, dann haben die immer einen ziemlichen Rattenschwanz an Zeug hinten dran, den du NIE im leben brauchst. Da muss man dann immer abwägen, ob ich das Ding einfach nutzen kann, oder ob es aus welchen Gründen auch immer nicht mehr praktikabel ist.

Insbesondere wenn man dann die Datenstrukturen ändern muss um eine Bibliothek zu verwenden, wirds  fraglich, ob es nicht doch besser ist, selbst eine Lösung zu implementieren.

Wie gesagt, solche Überlegungen tauchen aber meist erst bei kommerziellen/laufzeitkritischen Applikationen auf. 

Man lernt halt fürs Leben und nicht für den speziellen Fall, und da sind Grundlagen einfach entscheidend. Daher finde ich es absolut richtig, das man am Anfang trotzdem die Probleme durcharbeitet, die schon 10k mal vor einem gelöst wurden, und wo es schon VIEL bessere Lösungen für gibt frei verfügbar. Man lernt einfach etwas dabei, was einem später hilft, wenn man nicht drum rum kommt.

Ist wie die Rettungsübung auf Kreuzfahrtschiffen. Normal total überflüssig, aber wenns dann doch mal knallt, ist man froh halbwegs bescheid zu wissen.


----------



## Triniter (24. Februar 2012)

Ich hab auch in der FH mit C++ angefangen und entwickle mittlerweile mit C Embedded Software. Insgesamt bin ich zwar schon der Meinung das es nie verkehrt ist C/C++ zu lernen aber wenn ich heute nochmal anfangen müsste wäre mir C# sicher auch lieber bzw. eingängiger. Gerade weil bei C/C++ schon ein paar richtig gemeine Sachen möglich sind, wie z.B.


```
[FONT=Arial][COLOR=black][FONT=Courier New]
const unsigned char [/FONT][/FONT][FONT=Courier New][COLOR=black]foo[/FONT][FONT=Courier New][COLOR=black]=1;[/FONT] [LEFT][FONT=Courier New][COLOR=black]unsigned char *[/FONT][FONT=Courier New][COLOR=black]ptr[/FONT][FONT=Courier New][COLOR=black]; // the pointer "target" is not declared const correct would be: const unsigned char *ptr = &foo;[/FONT][FONT=Courier New][COLOR=black]ptr[/FONT][FONT=Courier New][COLOR=black]=&[/FONT][FONT=Courier New][COLOR=black]foo[/FONT][FONT=Courier New][COLOR=black];           // this should at least generate a compiler warning but might not!
*[/FONT][FONT=Courier New][COLOR=black]ptr[/FONT][FONT=Courier New][COLOR=black]=2;             // this will change the value of the constant foo![/FONT][/LEFT]
```
Klar jetzt werden einige argumentieren, jaja sowas ist doch spezielles Zeugs, aber solche Sachen passieren unwissentlich.


----------



## Skysnake (24. Februar 2012)

naja, wer mit pointern arbeitet sollte wissen was er tut. 

Das ist halt wie mit ner geladenen Knarre rum laufen  da sollte man schon wissen, was man macht.


----------

