Jump to content

Welche programmiersprache für FIAE

Empfohlene Beiträge

Aber vielleicht erklärst Du mir und vorallem dem Threadersteller, wo die Vorteile von C++ als Lehrsprache liegen.

Vorteil? Man wird im Laufe der Zeit dazu gezwungen, das zu verstehen, was man macht. Das empfinde ich als sehr wichtigen Faktor, der bei manchen, wie du Sie bezeichnest, didaktisch sinnvolleren Sprachen, leichter in den Hintergrund fallen kann. Ich meine - klar ist der Einstieg definitiv schwerer und es werden einem mehr Hürden in den Weg gelegt - dadurch, dass es eben Sachen wie Namespaces, Templates, Pointer, Vectors etc. gibt, aber dranbleiben ist hier eine Sache, die sich später eher bezahlt macht, schlichtweg. Meine Meinung. Akzeptier's oder lass es. :)

bearbeitet von Dusk

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich denke jemand der naiv einfach so eine Sprache wie PHP lernt und dort einfach den Befehl "sort" Verwendet um z.B. ein Array zu sortieren, wird sich in den seltensten Fällen Gedanken darüber machen, ob dahinter ein O(n*log(n)) oder ein O(n^2) Algorithmus steckt, wobei man durchaus in der Realität für kleine Datenmengen feststellen wird, dass manchmal der naive Sortieralgorithmus wie ein Bubblesort oder Selektionsort schneller sind, als ein Quicksort.

Ich glaube nicht, dass sich ein 15 jähriger Programmierneuling darum Gedanken machen sollte, oder? Mal abgesehen davon, ob die überhaupt schon wissen, was logarithmisch bedeutet.

Python wie auch PHP haben z.B. keine festen Typenbindungen (siehe Chomsky Hierarchie), C/C++ dagegen schon.

Und an welcher Stelle lag das Problem?

Ich denke gerade einem Anfänger muss klar sein, was eben im Rechner geschieht, wenn man z.B. ein Array deklariert oder ein Objekt erzeugt wird. Denn nur dann kann man später effiziente Algorithmen entwerfen.

Ich kann Dir nur schwer folgen. Ich denke auch, um zu wissen, ob ein Array, eine Liste oder eventuell ein Stapel oder andere Datenstrukturen sinnvoll eingesetzt werden können, sollte man wissen was diese Datenstrukturen sind; aber warum sollte ich mich e.g. mit malloc und free herumschlagen müssen?

Mir fällt häufig auf, dass gerade bei Java oder eben den Scriptsprachen, einfach programmiert wird ohne sich eben Gedanken über den Speicher zu machen.

Das hat aber nichts mit Java zu tun, oder?

Deshalb denke ich auch, dass eine Sprache wie C oder C++ ganz klar ein "back to the roots" sind, d.h. als Anfänger lernt man, was ein Pointer ist, was ein call-by-value oder call-by-refernce ist, was eine feste Typenbindung ist

Ja, oder anders: Mit C kann der Neuling lernen, wie man sich geschickt aufhängt und mit C++ kann er sich auch gleich ein Baumobjekt dazu generieren. Wie schön :D

Bei der Argumentation frage ich mich, warum man nicht gleich Assembler empfiehlt.

Vorallem das Stichwort "Pointer" ist an der Stelle vollkommen deplaziert: Nichts bereitet dem Anfänger mehr Kopfzerbrechen als irgendwelche Pointerarithmetik oder wilde Pointer.

Dann würde man im nächsten Step zu Objekten und danach zu Metaprogrammierung via Templates kommen, wobei man dann gerade bei C++ eben auch sieht wie sich diese Metaprogrammierung auf die Typenbindungen auswirkt (sprich welche Einschränkungen man ggf durch den Compiler bekommt).

Jo. Das sind alles Fragen, die 15 Jährige brennend interessieren :rolleyes:

Ich glaube Du schießt ein wenig über das Ziel hinaus...

Was ich auch als Grundlagenprogrammiersprache immer sehr schön finde, ist Pascal, denn hier hat man eine sehr klar definierte Sprache

100% Zustimmung!

wobei man eben in diesem Zusammenhang Algorithmen erlernen soll und nicht die Sprache.

Und ob man die Algorithmen dann in Python oder C# implementiert, ist doch ersteinmal Wumpe. Nur empfehle ich bspw. Python, weil man "direkt loslegen" kann. Man hat dazu noch eine nette Konsole, bei der man ein paar Sachen ausprobieren kann.

Vorteil? Man wird im Laufe der Zeit dazu gezwungen, das zu verstehen, was man macht. Das empfinde ich als sehr wichtigen Faktor, der bei manchen, wie du Sie bezeichnest, didaktisch sinnvolleren Sprachen, leichter in den Hintergrund fallen kann. Ich meine - klar ist der Einstieg definitiv schwerer und es werden einem mehr Hürden in den Weg gelegt - dadurch, dass es eben Sachen wie Namespaces, Templates, Pointer, Vectors etc. gibt, aber dranbleiben ist hier eine Sache, die sich später eher bezahlt macht, schlichtweg. Meine Meinung. Akzeptier's oder lass es.

Man wird dazu gezwungen, zu verstehen was man macht? Und das geht in anderen Programmiersprachen nicht? Da entstehen Algorithmen einfach aus dem Nichts?

Wenn ich Deinen Post zusammenfasse, steht darin folgendes:

Namespaces, Pointer und Vectoren sind tolle Sachen, die man zwar als Anfänger nicht bzw. nur schwer versteht, und die einem das Leben schwer machen, aber toll sind sie schon und es lohnt sich, weil sie so toll sind.

Bei derart fundierten Aussagen tendiere ich zu letzterem ... ;)

Anmerkung: Wenn ich mich so umsehe, welcher Art die Probleme im C(C++) Forum hier sind, so sind es gefühlte 99% die gleichen - es wird eine char-Variable angelegt, in der Hoffnung, man kann in einem Char eine ganze Zeichenkette ablegen ("weil char hat ja irgendwo was mit Buchstaben=Character zu tun"); es wird ein Array angelegt und gnadenlos über das Ende hinweggeschrieben; es werden Pointer angelegt, die entweder nicht initialisiert werden oder falsch dereferenziert werden etc. pp.

bearbeitet von lilith2k3

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ja, oder anders: Mit C kann der Neuling lernen, wie man sich geschickt aufhängt und mit C++ kann er sich auch gleich ein Baumobjekt dazu generieren. Wie schön :D

Bei der Argumentation frage ich mich, warum man nicht gleich Assembler empfiehlt.

Mir fällt da der Vergleich mit den natürlichen Sprachen ein. Welche Fremdsprache sollte man als erstes lernen?

Viele bestehen darauf: Latein! Den Ablativus absolutus sollte man unbedingt beherrschen, sonst hat man es nicht drauf. Nur wer Latein kann, kann die Klassiker im Original lesen. Wer Latein kann, der kann sämtliche modernen romanischen Sprachen in Nu lernen! Und wenn er einmal Papst werden will, braucht er das Latein nicht mehr extra lernen. Englisch hingegen ist für Warmduscher das die Sprache der dekadenten Moderne, und - am schlimmsten: Das kann fast jeder!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

nun werde ich mich morgen dann mal ans werk machen und eine geeignete seite fürs paskal lernen suchen, oder könntet ihr mir da eine vorschlagen. (ein buch geht auch

siehe Free Pascal - Advanced open source Pascal compiler for Pascal and Object Pascal - Home Page

@lilith2k3: Nach Deinem Profil bist Du selbst noch Azubi. Deine Argumentation ist an sich schon schlüssig, aber ich finde, dass Du eine sehr eingeschränkte Sichtweise hast.

Ich glaube nicht, dass sich ein 15 jähriger Programmierneuling darum Gedanken machen sollte, oder? Mal abgesehen davon, ob die überhaupt schon wissen, was logarithmisch bedeutet.

Es geht nicht darum, dass ich einem Azubi das formal ausrechnen lassen würde. Gerade den Vergleich O(n^2) / zwei ineinander verschachtelte Schleifen lassen sich wunderbar an einem Beispiel erklären. Ebenso halte ich es wichtig, dass man lernt was call-by-reference und call-by-value (bzw const Reference) ist. Hier kann man sehr schön an C++ zeigen, dass z.B. bei Objekten der Copy-Constructor aufgerufen wird, wenn ich ein call-by-value mache und eben für die Methode eine lokale Kopie angelegt wird.

Und an welcher Stelle lag das Problem?

Letztendlich lässt sich die Problematik anhand der Chomsky Hierarchie (hier speziell Typ 3 Grammatiken) erläutern. Bezüglich der Typenbindung kann man direkt die entsprechende Schlussfolgerung ziehen.

Anmerkung: Wenn ich mich so umsehe, welcher Art die Probleme im C(C++) Forum hier sind, so sind es gefühlte 99% die gleichen - es wird eine char-Variable angelegt, in der Hoffnung, man kann in einem Char eine ganze Zeichenkette ablegen ("weil char hat ja irgendwo was mit Buchstaben=Character zu tun"); es wird ein Array angelegt und gnadenlos über das Ende hinweggeschrieben; es werden Pointer angelegt, die entweder nicht initialisiert werden oder falsch dereferenziert werden etc. pp.

Dem würde ich auch so zustimmen, aber gerade bei C/C++ reicht es eben nicht, dass man sich alleine vor den Rechner setzt und drauf los codiert. Gerade bei beiden Sprache halte ich es essentiell wichtig, dass man einen guten (!) Lehrer hat. Der einem Schritt für Schritt erklärt (wobei dort ja auch die Sachen des Linkens hinzukommen).

Es ist natürlich ihm Rahmen der Ausbildung die Frage zu stellen, was man konkret macht. Wobei ich trotzdem immer zu Beginn einen kleinen Einblick in C geben würde, aber eben mit Hilfestellung.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

hallo,

langsam wirds verwirrend.

ähm aber was ich schon mal raus lesen konnte, war das keiner was gegen pascal hat, und 2 fanden das Pascal als Grundlagenprogrammiersprache immer sehr schön ist, denn hier hat man eine sehr klar definierte Sprache.

eiso werde ich mir wohl versuchen, pascal bei zu bringen. :)

ich danke euch noch mal allen für diese schöne und hilfreiche diskussion.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Gerade den Vergleich O(n^2) / zwei ineinander verschachtelte Schleifen lassen sich wunderbar an einem Beispiel erklären.

(...)

Letztendlich lässt sich die Problematik anhand der Chomsky Hierarchie (hier speziell Typ 3 Grammatiken) erläutern.

Du überforderst einen Mittelschüler doch damit, das ist doch völlig abgehobenes Zeug für einen Teenager. Er ist kein Mathematikstudent.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@lilith2k3: Nach Deinem Profil bist Du selbst noch Azubi. Deine Argumentation ist an sich schon schlüssig, aber ich finde, dass Du eine sehr eingeschränkte Sichtweise hast.

Ja, ich bin AzuBi! Hab ich jetzt mein Mitspracherecht verloren? :D

Ich verstehe nicht, was dran "eingeschränkt" ist, wenn man vorschlägt aus didaktischen Gründen erst das "Leichtere" und dann das "Schwerere" zu erlernen?

Es geht nicht darum, dass ich einem Azubi das formal ausrechnen lassen würde. Gerade den Vergleich O(n^2) / zwei ineinander verschachtelte Schleifen lassen sich wunderbar an einem Beispiel erklären.

Ich glaube, Du verwechselst einen 15 Jährigen mit einem Erstsemstler Informatik.

Da würde ich die entpsrechenden mathematischen Grundkenntnisse voraussetzen, bzw. 11te Klasse dürfte für die Grenzwertbetrachtung ausreichend sein. Aber doch nicht Mittelstufe.

Ebenso halte ich es wichtig, dass man lernt was call-by-reference und call-by-value (bzw const Reference) ist. Hier kann man sehr schön an C++ zeigen, dass z.B. bei Objekten der Copy-Constructor aufgerufen wird, wenn ich ein call-by-value mache und eben für die Methode eine lokale Kopie angelegt wird.

Im übrigen finde ich auch, dass ein guter Ingenieur sich bestens mit Differential- und Integralrechnung auskennen sollte, aber dafür verlange ich nicht, es in der Grundschule schon zu vermitteln.

Letztendlich lässt sich die Problematik anhand der Chomsky Hierarchie (hier speziell Typ 3 Grammatiken)

Wovon bestimmt schon jeder 10t-Klässler gehört hat :D

Hallo? Es geht hier nicht um eine akademische Diskussion der Vor- und Nachteile stark/schwach statisch/dynamisch typisierter Sprachen, sondern darum, dass jemand in dem Dschungel irgendwo einen Anfang sucht.

Dem würde ich auch so zustimmen, aber gerade bei C/C++ reicht es eben nicht, dass man sich alleine vor den Rechner setzt und drauf los codiert. Gerade bei beiden Sprache halte ich es essentiell wichtig, dass man einen guten (!) Lehrer hat. Der einem Schritt für Schritt erklärt (wobei dort ja auch die Sachen des Linkens hinzukommen).

Was man aber in dem Falle tut ist, Zeit in das Verstehen der Sprache zu investieren, anstatt drüber nachzudenken, wie man eigentlich Probleme löst, indem man sie algorithmisch aufbereitet.

Wobei ich trotzdem immer zu Beginn einen kleinen Einblick in C geben würde, aber eben mit Hilfestellung.

Wobei ich meinen Allerwertesten drauf verwette, dass in jedem dieser Kurse/Klassen/Proseminare genau die von mir angeprochenen Probleme wie sie hier im Forum auftauchen, ständig auftauchen werden. Und ebenfalls wette ich, dass ein Großteil der Programme aus den genannten Gründen abstürzen wird (Speicherbereich vergessen zu reservieren, Speicherbereich doppelt freigegeben etc.). Und das wird bei den Schülern/Studenten letztlich dazu führen, dass die Frustration steigt, die Motivation sinkt, und letztlich kaum Wissen vermittelt worden ist.

Ich spreche Sprachen wie C/C++/Assembler nicht ihre Relevanz ab, sondern ihre Tauglichkeit um Einsteigern das Programmierenlernen zu erleichtern.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Den Compiler von flash kapier ich mal gar nich, weil er nix speichern will, wenn ich auf Save as... gehe und dann ok drücke.

Wüsste wer nen leichteren, oder hab ich mir einfach nur den falschen auf der seite runtergeladen?

hab mir auf http://freepascal.org/download.var

unter Intel/i386 den hier: Win32, Win64 and WinCE (Windows 95, 98, ME, NT, 2000, XP, Vista) downgeloadet

Wovon bestimmt schon jeder 10t-Klässler gehört hat :D

Edit: 9. Klässler ;)

Ma so als zwischen frage, sollte ich wenn es mir möglich wäre auf die FOS gehen oder gleich nach der 10. ausbildung zum FIAE und danach vieleicht noch mal auf die BOS?

bearbeitet von Pompeus

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich spreche Sprachen wie C/C++/Assembler nicht ihre Relevanz ab, sondern ihre Tauglichkeit um Einsteigern das Programmierenlernen zu erleichtern.

Genau das ist eigentlich der Punkt, in dem wir unterschiedlicher Meinung sind. Ich würde eben genau deshalb mit C anfangen, aber eben mit menschlicher Anleitung, so dass man immer jemanden an der Hand hat den man fragen kann.

Ich habe nie behauptet, dass C leicht ist. Natürlich ist der Frustrationsfaktor höher, aber C vermittel eben ein Basiswissen, das eben in diesem Umfang keine andere Sprache bietet.

Gerade bei Java Neulingen fällt auf, dass man Tools wie Eclipse einsetzte, die im Grunde schon entsprechende Prototypen von Klassen und Methoden automatisch generieren, d.h. dem Anfänger wird schon sehr viel Arbeit durch die IDE abgenommen. Wenn ein Anfänger mit Eclipse beginnt, wird er nicht lernen was ein Classpath ist oder wie man per Hand einmal javac / jar bedient. Für einen erfahrenen Entwickler ist eine solche IDE natürlich sinnvoll, aber nicht für einen Anfänger.

Du möchtest, dass der Anfänger leicht ein Erfolgserlebnis hat und "erkaufst" es damit, dass Du eine Sprache wählst, die eben viel Funktionalität bietet. Liege ich damit richtig, dass Du eine 4GL Sprache, die Datenbank und Code zusammen verwendet, dann "noch optimaler" für den Einstieg wäre?

@Pompeus: Hinter dem Download Link erscheint eine weitere Seite, auf der Du auswählen musst, aus welchem Land Du die Sachen downloaden willst.

Zu dem Schulabschluss: Je höher er ist, um so besser stehen Deine Chancen einen Ausbildungsplatz zu finden.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Du möchtest, dass der Anfänger leicht ein Erfolgserlebnis hat und "erkaufst" es damit, dass Du eine Sprache wählst, die eben viel Funktionalität bietet. Liege ich damit richtig, dass Du eine 4GL Sprache, die Datenbank und Code zusammen verwendet, dann "noch optimaler" für den Einstieg wäre?

Ich möchte, dass der Einsteiger schnell versteht, wie er vom Gedanken zur Codezeile kommt, ohne lang über die Sprache nachdenken zu müssen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

also ich kann dir den Tipp geben fang mit C++ an. Damit habe ich angefangen zu Programmieren, dies war eig recht einfach. Ab dem Kapital Zeiger wird es aufwendiger aber überschaubar. Nachdem du C++ drauf hast, kannst du dir C anschauen.

So würd ich es machen. Ein Buch? Das haben wir benutzt in der Berufsschule.

C++ und UML

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
also ich kann dir den Tipp geben fang mit C++ an.

Versteh mich nicht falsch, aber ich empfehle ihm jetzt wieder Java, der Nächste kommt und sagt "C# ist viel einfacher", wieder der Nächste sagt "Lern nur Algorithmen, das bringt dir mehr".

Wir könnten uns auch über Autos unterhalten - jedes bringt dich schneller dahin, wo du hinwillst, jedes hat Eigenheiten, Vor- und Nachteile. Wenn mir ein Auto empfohlen wird, dann würde mich interessieren warum. Mir ist es erstmal egal, ich will nur Autofahren. Und ich bin nicht sicher, ob mir Begründungen wie "Fährt sich gut" (= "dies war eig recht einfach") genügen bzw. als Entscheidungshilfe wirklich brauchbar sind.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jetzt komme ich auch noch dazwischen.

Versteh mich nicht falsch, aber ich empfehle ihm jetzt wieder Java,

Bloß nicht. Alle aussagen von Java-Entwicklern, die runter nach C mussten hatten deutliche Probleme. Andersherum jedoch nicht.

Ich unterstütze jede Aussage von flashpixx. Allein aus 12 jähriger Erfahrung in der Ausbildung zum FIAE. Wenn ich könnte würde ich sogar mit Assembler anfangen, weil diese "Sprache" unheimlich diszipliniert.

Und nochwas: Bevor ihr anfangt, eine Programmiersprache zu erlernen, lernt programmieren, Anweisungen geben und überlasst die Vermittlung von Programmiersprachen den Ausbildern, die mögen das so herum lieber.

Erstes Ausbildungsjahr, zweite Ausbildungswoche: Bringt einem Alien bei, Kaffee zu kochen. Benutzt dazu: Gehe, Nimm, Drehe, Wenn, Solange usw., also Pseudocode. Wenn die Aufgabe erledigt ist, zeichnet dazu ein PAP nach DIN 66001.

Erst wenn das sitzt, gibt es bei uns eine leckere heisse Tasse C angefangen mit nativen Datentypen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@Akku: Danke. Ich kann mich dem nur anschließen. Ein typisches Beispiel am Anfang ist bei mir "schreibe einen Bruchtaschenrechner", d.h. ein kleines Programm, in dem man eben zwei Brüche eingibt und sie dann entsprechend multipliziert, dividiert, subtrahiert oder addiert werden und abschließend die Ausgabe wieder als Bruch in gekürzter Form ausgegeben wird.

Wenn ich eben mit Pseudocode anfange, habe ich festgestellt, dass viele alleine schon damit Probleme haben, Brüche der Form a/b als Variablen aufzufassen und vor allem dann die mathematischen Gesetze überhaupt passend zu formulieren. Wenn es an die Programmierung geht, dann wird da teilweise teilweise ja wie wild mit Datentypen gearbeitet z.B. wird dann versucht einen String durch einen String zu teilen.

Im Grunde muss man "nur" das Problem, das man hat, in so kleine Stücke zerlegen, dass man sie mit den Befehlen eben umsetzen kann.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wobei ich meinen Allerwertesten drauf verwette, dass in jedem dieser Kurse/Klassen/Proseminare genau die von mir angeprochenen Probleme wie sie hier im Forum auftauchen, ständig auftauchen werden. Und ebenfalls wette ich, dass ein Großteil der Programme aus den genannten Gründen abstürzen wird (Speicherbereich vergessen zu reservieren, Speicherbereich doppelt freigegeben etc.). Und das wird bei den Schülern/Studenten letztlich dazu führen, dass die Frustration steigt, die Motivation sinkt, und letztlich kaum Wissen vermittelt worden ist.

Falsch. Es wurde nämlich das Wissen vermittelt warum da Programme plötzlich abstürzen oder Speicherlecks verursachen und somit auch was da bei der Ausführung eines Programmes eigentlich passiert. Also solche Dinge die bei "moderneren" Sprachen durch String Klassen etc. verdeckt werden.

Sonst hast du nämlich am Ende Leute die Jahrelang Java oder C# oder sonst was programmiert haben wenn absolut keine Ahnung haben was Sache ist wenn sie dann doch mal vor einem solch grundlegenderem Problem stehen.

Ich sehe das genau andersrum wie du. Ich würde niemals wieder freiwillig eine GUI (eigentlich sogar ein beliebiges Programm) in C programmieren wollen solange ich die Möglichkeit habe das in C# zu machen. Aber zum Lernen würde ich immer wieder C nehmen.

PS: Ich kann mich noch erinnern wie das damals bei uns in der HBFI war. Wir haben erst wochenlang nur Struktogramme erstellt bevor wir das erste Programm auch nur gesehen haben. Es haben zwar irgendwann alle gemault weils langweilig war aber ich würde schon sagen das das gut so war.

bearbeitet von Guybrush Threepwood

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich finde das ist auch eher eine Frage dessen, was man denn selbst will.

Ich würde C z.B. nicht wollen, weil es nicht objektorientiert ist. Das muss nicht schlecht sein, aber ich habe einfach keine Lust darauf prozedural zu programmieren, das liegt mir nicht.

Ich hab damals mit C mit einem Buch angefangen, bisschen rumprogrammiert und am Ende hatte ich mir schon fast meine eigene Objektorientierung auf C-Basis entwickelt :D

Ich habe aber in der Ausbildung und auch später, bei einigen schon langjährig Berufstätigen bemerkt, dass viele Leute Probleme mit der Objektorientierung haben und diese einfach nicht verstehen, bzw. nicht anwenden können.

Raus kommt dann eigentlich prozeduraler Code in C++. Es werden zwar Klassen verwendet, aber eher mit statischen Methoden und globalen Structs, die dann auch entsprechend wild durcheinander aufgerufen werden. Schlimmer wird das noch dann, wenn man so auf ein objektorientiertes Framework (z.B. Qt) aufsetzt.

Was ich beim selbst Lernen mit dem Buch bemerkt habe: Das Buch hat mir ein paar Aspekte falsch vermittelt, ich habe das aber zu dem Zeitpunkt nicht verstanden und bin deswegen immerwieder in Probleme gelaufen.

Erst als ich durch die Ausbildung in eine C-Schulung und später in eine C++-Schulung geschickt wurde und mir ein erfahrener Spezialist erklärt hat, wie es richtig ist, wurden diese Missstände bei mir behoben.

Von demher glaube ich, ist Java oder C# auch keine schlechte Sprache für den Einstieg (man muss dafür ja nicht Eclipse oder Visual Studio nehmen), obwohl ich persönlich Java egtl. auch nicht mag.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich würde C z.B. nicht wollen, weil es nicht objektorientiert ist.

Moooment. Die Tatsache, dass wir mit C beginnen, heißt nicht, dass damit das Thema Programmieren abgeschlossen ist. Die Reihenfolge sieht bei uns halt so aus: C->C++->C#. So sind die Anforderungen in unserer OPS Abteilung. Hinzu kommt noch eine Portion PL/SQL. Und da wir noch eine PD Abteilung haben, gibt es obendrauf noch ein Schlag Java. Ich schicke kein Mädl und keine Junge in die Abteilungen, solange diese Vorraussetzungen nicht erfüllt sind. Das Fundament wird halt mit C gelegt. Das ist auch gut so.

bearbeitet von Akku

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Moooment. Die Tatsache, dass wir mit C beginnen, heißt nicht, dass damit das Thema Programmieren abgeschlossen ist. Die Reihenfolge sieht bei uns halt so aus: C->C++->C#.

Mein Post war nicht auf dein vorheriges bezogen. Wie gesagt habe ich nur festgestellt, dass viele beim Umstieg (oder Ausbau, wie immer man es nennen will) von C zu C++, bzw viel mehr von prozedural auf objektorientiert, Probleme haben.

Ich halte es nicht für nötig mit C anzufangen, v.a. wenn man nachher sowieso objektorientiert programmieren will/muss. Die nötigen Grundlagen allgemeiner Programmierung kann man an C++ genauso zeigen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich würde C z.B. nicht wollen, weil es nicht objektorientiert ist. Das muss nicht schlecht sein, aber ich habe einfach keine Lust darauf prozedural zu programmieren, das liegt mir nicht.

Mal ganz hart gesprochen, selbst die OOP ist prozedural, denn jede Methode die ich implementiere ist eine Prozedure, die aber im Kontext des später instantiierten Objekt läuft. Außerdem wird der Code, der durch das kompilieren generiert wird sicher nicht für jedes Objekt redundanten Methodencode erzeugen, sondern der Compiler erzeugt einmal den Methodencode und füttert die Methode entsprechend mit den Objektparametern.

OOP ist letztendlich nur eine weitere Abstraktionsschicht für den Entwickler.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

OOP ist letztendlich nur eine weitere Abstraktionsschicht für den Entwickler.

Genau, eine Abstraktionsschicht, die mir die Arbeit erleichtert und um die ich mich nichtmehr selbst zu kümmern brauche.

Und mal ganz ehrlich: Was bringt es einem Anfänger auf der Suche nach einer Sprache, wenn er weiß, dass man objektorienterte Programmierung auch prozedural abbilden kann? Oder ob ihn das überhaupt interessiert? Bzw ob er diese Aussage überhaupt versteht?

Mir ist das nicht fremd, wie ich oben schon geschrieben habe, habe ich mir in meinen Anfängen schon fast eigenes OOP mit C gebaut.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Was bringt es einem Anfänger auf der Suche nach einer Sprache, wenn er weiß, dass man objektorienterte Programmierung auch prozedural abbilden kann?

Weil er prozedural das Problem lösen muss. Denn wenn ein Anfänger seine eigene Klasse implementiert, muss er die Methoden implementieren und das sind eben Prozeduren. Ich erlebe es immer wieder, dass gerade Anfänger überhaupt keinen Zugang zu der OOP bekommen (mal von Vererbung, abstrakten & statischen Klassen o.ä. abgesehen), weil sie nicht verstanden haben, was eine Methode ist. Von Scopes der Variablen und Visibilities der Objekt Properties und Methoden reden wir erst einmal nicht.

Ich habe dabei den Eindruck, dass man hier jemanden Fahrrad fahren beibringen will, ohne das derjenige überhaupt laufen kann. Man kann ein einfaches Problem doch erst einmal nehmen und prozedural lösen, wenn man das sicher hin bekommt, kann man den nächsten Schritt machen, d.h. im Fall von C Structs entwerfen, vielleicht hier die Pointerarithmetik zusätzlich behandeln. Struct sind doch schon eine Vorstufe zu Objekten (in Pascal wären es Records). Wenn das wieder sicher sitzt, dann fängt man mit einfachen Klassen an (ohne Visibility, d.h. alles public und ohne Vererbung).

Dann wäre der nächste Schritt die Sichtbarkarten einzuführen, dann Vererbung, dann abstrakte und statische Klassen und dann kann man z.B. Serialisierung / Threading / Remoteobjekte behandeln.

Im Grunde soll der Anfänger direkt in die OOP hinein hüpfen und eben alles als Objekt behandeln, aber wie man eben so etwas konzipiert bleibt dabei auf der Strecke. Wobei wir wieder am Anfang sind, d.h. es beim Programmieren-Lernen darum geht, Algorithmen zu entwerfen, sprich ich muss mein Problem abstrahieren und in Teilstücke zerlegen, die ich implementieren kann, d.h. auch bei OOP Methoden und Eigenschaften, die zu größeren Strukturen, nämlichen den Objekten zusammengebunden werden.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
welche nun?

Gar keine - denn das ist die Aufgabe der Ausbildung.

Niemand kann verlangen, dass du bereits vor der Ausbildung schon x Programmiersprachen beherrschst.

Ausserdem besteht immer die Gefahr, dass du dir massenhaft Fehler angewöhnst, die dir in der Ausbildung erstmal abgewöhnen darfst.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung