C++ ist ein Superset von C und beinhaltet Objektorientierung. C# ist da etwas abgekappselt davon und ist im vergleich zu C und C++ eine High-Level Programmiersprache die in richtung Java geht.
@@8kylobit503 C++ ist in keiner Hinsicht ein Superset von C. Diese Sprache hat nen mehrfach größeren Funktionsumfang, noch größer als viele andere Sprachen, selbst wenn wir den C Teil rauslassen. Genauso wenig ist C++ “C + Klassen”, das hat der Ersteller auch schon mehrfach gesagt. Und C# fing basically als ein Java Klon an, einfach mit Syntax mehr Richtung C++, seitdem hat sich C# natürlich dramatisch entwickelt.
@@blockhunterlp8748 fast. Einer der größten unterschiede zu C/C++ ist, dass Rust dynamisch typisiert ist und C bzw C++ statisch typisiert. Du musst in Rust also keine Datentypen bei der Variablen Deklaration angeben (änlich wie in Python oder js). Rust ist wie C eine Systemnahe Sprache und ist damit sehr schnell. Das liegt auch daran dass beide Sprachen auf einen garbage kollektor verzichten. Zusammengefasst kann man sagen dass Rust eine Systemnahe Sprache ist die aber von der Syntax und der Typisierung eher wie eine hohe und moderne Programmiersprache wirkt. Das merkt man auch beim programmieren. Meiner Meinung nach kommt es einem nicht so vor als würde man damit systemnah programmieren. Deshalb programmier ich nach wie vor lieber in C und C++
C und C++ mussten wir im Physik-Studium lernen. C habe ich dann seitdem wirklich vertieft. C# habe ich später kennengelernt, das hat mir wirklich Spaß gemacht. C# liest sich einfach so flüssig wie ein Text und es funktioniert echt unkompliziert. Benutze auf der Arbeit aber auch viel PowerShell, da hat mir C# auch ein wenig geholfen. Gibt so vieles zu lernen, tolles Video!
Würdest du auch solche Anfängertutorials, wie Morhpheus für diverse Programmiersprachen machen? Deine Videos sind super, obwohl ich was ganz anderes studiere :)
Ich kann zu dem Thema das Buch crafting interpreters empfehlen (ich kann leider keinen Link Posten weil mein Kommentar dann als Spam erkannt wird). Das Buch ist online kostenlos lesbar und man lernt wie Mann eine kleine Programmiersprache entwickelt.
Zumindest bei C war die Sache recht naheliegend, da man die ganzen Grundstrukturen der Sprache als Bausteine sehen kann, hinter denen ein gewisser Assemblercode steckt. Was der BB-Code für HTML ist, das ist C für Assembler.
Ich habe einige Jahre die Übungen für die "Einführung in die Informatik" und "Einführung in die Programmiersprache C" als Tutor begleitet und bin mittlerweile großer Befürworter davon mit Python zu starten. Einer der Gründe: Python zwingt dich deinen Code korrekt einzurücken. Gefühlt 99% aller fehlender oder falsch gesetzter geschweifter Klammern konnte ich in den Tutorien auf falsche Einrückung zurückführen. Dennoch sollte man sich irgendwann intensiv mal mit C auseinander setzen, insbesondere um mal direkt mit Problemen, wie buffer oder stack overflows und Co. konfrontiert zu werden. Vor allem wenn man bedenkt, wie häufig solche Fehler auch im professionellen Umfeld auftreten. Für bestimmte Inhalte im Bereich Algorithmen und Datenstrukturen finde ich C auch ganz schön, da man auch mal Datenstrukturen (lists, stacks, queues) selbst implementieren kann.
Ich habe gerade mit dem Studium angefangen und wir haben zu erst c gelernt. Ich habe auch gemerkt das man damit versucht auszusieben, aber wenn man dran bleibt ist es auch ohne vorwissen schaffbar und man kann auf der Grundlage von c sehr schnell andere Programmiersprachen wie Java erlernen. P.s. Finde deine Videos echt informativ und unterhaltsam, da bekommt man Lust aufs ausprobieren 👍👍
Wie, schon gar nicht in einer Erstsemestervorlesung? C war mit das erste was ich in meinem Elektrotechnikstudium gelernt hab. Ich würd jetzt nicht sagen, dass mir das geschadet hat oder irgendwem sonst. Gut, wir benutzen das jetzt auch zum µC Programmieren, was mit Python wohl in einer Katastrophe enden würde.
Schwierig, mein Kumpel hat nur Python genutzt und als dann im Studium C/C++ kam ist er verzweifelt. Ein anderer Freund wollte auch von Python zu C# und hat mich gefragt, was der scheiß soll haha. Ich hab dahingehend weniger Probleme, da ich von C++ und Java zu Python gekommen bin. Aber ja im Endeffekt kommt es drauf an was man überhaupt vor hat.
@@mastermirror2842 ich benutze sowohl Java als aich Nim. Java hat Klammern bei dingen wie if, endet Befehle mit ; und basiert auf {} für Blöcke. Nim hat keine Klammern, beendet Befehle durch Zeilenende und basiert auf :, = und Einrückung für Blöcke
Ich hatte C jetzt im ersten Semester und muss sagen, das war gar nicht so schlecht... Klar war es bisschen schreibaufwand und die Speicherverwaltung war echt schwierig zu verstehen, aber wir hatten zum Glück ein Tutorium wo wir viele Fragen stellen konnten. Und es ist danach um so leichter auf python oder so umzusteigen denk ich :)
Mich würde es interessieren, ob man mehrere Programmiersprachen miteinander kombinieren kann. Wenn ich z.B. hardwarenah, also mit C, mit Arduino arbeiten will, aber zeitgleich ein KI, was mit Python geschrieben wird, kombinieren will, wäre eine Kombination aus Beidem an einem Projekt möglich?
Ja, das geht und ist sogar sehr sinnvoll. Die beiden Sprachen sind DAS perfekte Team. C ist schnell und hardwarenah. Python ist abstrakt und extrem ausdrucksstark. Kombinieren kann man über ctypes, cython, ...
@@songokkel7667 Das mit dem Arduino hatte ich überlesen. Da ist aufgrund von Speichermangel und geringer Leistung nur C drin. Die eigentliche Arbeit bei KI ist aber das Training und die Testdaten. Hier kommt wieder Python ins Spiel...
Das "return 0" kann man in der main-Funktion weglassen (was zugegebenermaßen vielleicht aber auch etwas verwirrender ist, da so der int-Rückgabetyp weniger Sinn macht) und statt "printf" könnte man eigentlich auch puts (für "put string") benutzen, was automatisch ein " " anhängt (vermutlich wird der Compiler im Endeffekt sogar den "printf"-Aufruf durch ein "puts" ersetzen). Theoretisch kann man sogar den include weglassen, was aber dann definitiv kein guter Stil mehr ist und auch ne Warnung erzeugt.
An der TU Berlin wird zum Erstsemester-Modul "Einführung in die Programmierung" C Gelehrt XD Ich glaube, die wollen einem da direkt auch Speicher erklären. Macht aber auch ein bisschen sinn, denn in einer Nebenvorlesung lernt man erste Hardware-Aspekte wie NAND, Zahlensysteme, etc. Da ergibt die Hardware-Nähe von C sinn.
Wenn du zum Beispiel einen Steuercomputer in einer Rakete hast und dort die Variablen vertauschst wirst du deswegen oft mit falschen Werten rechnen, da Variablen zu den falschen Adressen geschrieben und von den falschen Adressen gelesen werden. Dadurch ist es sehr wahrscheinlich, dass die Rakete, sagen wir mal ein paar Kratzer abbekommt. Wenn du verstehst, was ich meine.
Mein erstes Programm hab ich mit ruby geschrieben. Das war aber nur ein art wahlfach für eine woche. Richtig angefangen zu programmieren habe ich mit C und nachträglich gesehen war das auch gut, da man leichter versteht was der Computer überhaupt macht und wie es funktioniert.
Das simpelste hello world in c ist übrigens: main() { puts("Hello, World"); } Das ist zwar k&r Syntax, ist aber komplett valides c und das include darf, soweit ich weiß, auch weggelassen werden, da puts implizit definiert wurde.
@@maxsilvester1327 Standardmäßig sollte gcc glaub ich nicht C99 benutzen. Bei mir funktioniert das ohne Probleme, auch wenn's natürlich ne Warnung gibt. Kann aber sein dass das z.B. bei MSVC anders ist.
Sollte im Endeffekt doch quasi exakt das gleiche wie Java vs Python sein. C# ist mittlerweile schon eine deutlich größere und m.M.n. bessere Sprache, aber ich glaub nicht dass das für Anfänger einen großen Unterschied macht.
Also vorab persönlich würde ich sagen, dass man zuerst eine funktionale Programmiersprache lernen sollte, dann eine prozedurale Programmiersprache, dann erst eine objektorientierte Programmiersprache. Und danach eine deklarative Programmiersprache. Natürlich ist das jetzt nicht so einfach, weil viele Programmiersprachen ja mehrere Paradigmen in sich vereinen. Aber bei bestimmten Programmiersprachen sticht immer ein Paradigma besonders hervor.
Ich bin großer Freund von Golang. Das ist auch stark typisiert und kompiliert. Ich glaube, dass ist wirklich eine Sprache die sehr gut für viele Einsteiger ist, da man doch einiges lernt wie in C und es z.B. auch Pointer gibt. Sie ist aber längst nicht so kompliziert wie C und auch nicht so einfach wie Python.
hab direkt mit C++ angefangen, wobei ich da nur C Funktionen benutzt habe, hab aber die Grundlagen nicht mal ganz verstanden bin dann auf Python umgestiegen und hab da eigentlich die meisten überhaupt erst verstanden und sitze jetzt wieder vor C++ und sehe das sich die Sprachen inhaltlich gar nicht so doll unterscheiden nur die Schreibweise anders ist
Mir als noob ist Python deutlich leichter gefallen. Sicher habe ich vieles nicht effektiv gelöst aber es ist halt echt einfacher. Auch Hardware zeugs kann man mit Python programmieren (home automatisierung etc) ich zb habe OHNE jegliche Ausbildung ein automatischen Rasenmaher programmiert der mit Kompass kontrolliert im Garten rum fährt und den Rasen kurz hält. Zusätzlich ist er mit einer openCV Bild Erkennung ausgestattet die dafür sorgt das keine Blumen umgemäht werden. Sicher geht das effektiver mit c aber definitiv einfacher in Python.
@@TwixWaffles 1 sorry für mich als noob ist es hardware Kram. Shame on me :) 2 das ganze ist sehr hardware hungrig geworden. Denke mit c (und mehr skills) würde es viel weniger rechenpower benötigen und somit flotter laufen. Aber das wäre evtl zu schwierig für Leute die nicht vom Fach sind sondern nur Hobby mäßig im Thema sind.
Ich find, es ist so ne sache mit python, weil es mich eher dazu verleitet, einfach alles in eine datei reinzuklatschen und nach nem monat nicht mehr zu wissen, was ich da programmiert habe. Auch konnte ich das konzept von objektorientierter programmierung erst mit c++ halbwegs verstehen
In der Schule haben wir im Informatik Leistungskurs mit Java programmiert, jetzt im Studium Elektrotechnik starten wir im ersten Semester mit C, was mir total schwer gefallen ist, da Pointer und Garbage Collection nie ein Thema waren vorher
Also ich finde C im Elektrotechnik Studium im ersten Semester gut. Im späteren Semester kommst du fast nicht mehr ohne aus. In einer MCU Vorlesung macht die Arbeit mit pointern wesentlich mehr Sinn. In dieser Vorlesung geht man mit Assembler noch näher an die HW und dann bist du froh um C. Den der Verständnis Sprung ist wesentlich geringer als bei Python. Im Master arbeite ich zurzeit an einem Projekt mit microphython und es ist zwar schön simple. Die Performance lässt teilweise zu wünschen übrig und Messaufgaben werden fast unmöglich, da der RAM so voll ist. C ist wesentlichen Ressourcen schonender.
...yes, cpp ist wie "mit Kanonen auf Spatzen zu ballern", nicht immer unbedingt notwendig, aber macht unheimlich Bock!😂🤣😂😇 Geb dir dir voll und ganz recht, python ist gerade für Einsteiger perfekt. Denn erstmal das Interesse zudecken macht Sinn, da man mit Datenstrukturen, Pointen, etc. schon jemand sehr schnell den absoluten Abturn verschaffen kann. Was hältst du von einem Vergleich zwischen Javascript (nicht Java!) und Python, den fände ich auch mal sehr interessant!😉
Ich liebe es in Python zu schreiben, weil die Syntax viel einfacher ist und es alles viel mehr Sinn macht. Ich programmiere gerade eine Webseite mit flask und arbeite viel mit websockets und hasse den Part mit JavaScript. Ich brauche dort locker 5 mal länger in JavaScript weil dort alles so umständlich ist...
Alles eine Frage der Übung. Ich bin mit Python nie wirklich warm geworden. Wurde vor vielen Jahren mit ANSI-C, Assembler und Java ausgebildet, habe schon zuvor im Hobby mit PHP und Python gearbeitet und beruflich dann erst VB.NET und heute nur noch C# und JavaScript.
5:24 das ist leider falsch! Erstens was hat die exe damit zutun? Und außerdem kann man mit JIT Programmen auch eine executable generieren Video kriegt trotzdem nen like Cheers
Eine echte Herausforderung wäre es, eine gute Videoreihe zur VL Algorithmen und Datenstrukturen zu machen, würde aber wahrscheinlich unfassbar viel Zeit fressen, bedenkt man, dass das Modul zB bei mir 15 Wochen hatte, und allein in der ersten Woche 12 Sortieralgorithmen besprochen und theoretisch (mit Korrektheitsbeweisen, Laufzeitabschätzung, wahrscheinlichkeitstheoretischer Betrachtung verschiedener Wahlen des Pivotelements bei Quicksort etc) besprochen wurden. Overkill.
@@Florian.Dalwigk das kann ich durchaus nachvollziehen 😄 war auch nicht ganz ernst gemeint bzw nur wenn dir mal gar nichts mehr einfallen sollte. War eher als Rant gegen das Modul gemeint als ein ernsthafter Vorschlag.
Du sagtest ja man kann Python in ein C-Programm compilieren. Geht das immer und Recht unkompliziert? Und sind dann die Programme genauso schnell als wenn man gleich in C gecoded hätte?
Kann mir jemand mal erklären wieso eigentlich Python bei den ganzen Data science bzw Machine learning sachen eingesetzt wird anstatt z. B. C++ was sehr performant ist. Wäre es da nicht eigentlich besser eine performante Sprache zu wählen. Oder hat Python anstatt der einfachen Syntax in der Hinsicht noch andere Vorteile?
Das sind so die gängigsten Gründe die für Python in Data Science sprechen: - Kann gut untereinander ausgetauscht werden da der Syntax leicht verständlich ist - Hat eine Menge Libraries die auf Datenanalysen ausgelegt sind (Panda, NumPy, SciPy ect) - Grosse Community - Automatisierte Unittests - Einfache Skalierbarkeit - Einfache Visualisierungsmöglichkeiten (mathplotlib) - Python ist sehr schnell wenn es um die Verarbeitung von Daten mit beispielsweise regex geht. C++ ist grade mal 10% schneller beim verarbeiten von regex, benötigt aber einen grösseren Schreibaufwand Quellen: www.activestate.com/blog/python-vs-c-text-processing/ www.whizlabs.com/blog/python-and-big-data/ www.geospatialworld.net/blogs/why-is-python-a-perfect-choice-for-big-data/ www.coursereport.com/blog/how-is-python-used-for-data-science-metis towardsdatascience.com/top-10-reasons-why-you-need-to-learn-python-as-a-data-scientist-e3d26539ec00 marutitech.com/python-data-science/ www.cbtnuggets.com/blog/technology/data/why-data-scientists-love-python
Das fiese an C ist einfach wie krass voll es mit Pitfalls ist, ganz zu schweigen vom Präprozessor der gerne ignoriert wird, aber syntax erzeugen kann die abolut unklar sind wenn man nicht weiß was passiert. Keine Ahnung was ich jemandem empfehlen würde... C ist halt ultra wichtig, und man lernt erst richtig kennen was der PC überhaupt im Hintergrund macht, wenn man mit Python anfängt läuft man in Gefahr dann vor C Angst zu bekommen.
Findet ihr es empfehlenswert mit Python anzufangen um später C/C++ zu lernen? Ich hab mit dem arduino angefangen zu programmieren zu programmieren, nach ein paar Wochen kam ich aber bei fast jedem Projekt an einem Punkt wo ich nicht mehr weiter kam und ich den Fehler nicht finden konnte, das hat mich so frustriert, das ich erst mal ganz aufhörte. Da ich mich aktuell für KI interessiere kam ein bekannter auf die Idee, ich solle mir doch mal Python anschauen und ein paar Programme nach bauen um das Grundprinzip vom programmieren besser zu verstehen und dann ggf. Später wieder mit C weiter zu machen.
Würde ich nicht unbedingt sagen. Meiner Meinung nach ist es fast egal welche Sprache man zuerst wählt. Wichtig ist die wichtigsten Programmierkonzepte zu kennen. Mein bisheriger Weg war Batch --> Bash --> Python --> SQL --> C --> PHP --> VBA. Bash und Batch habe ich mittels try/error gelernt (Also ohne ein Buch oder eine Anleitung welche mich in die Konzepte der Programmierung eingeführt haben). Für Python habe ich mir dann mein erstes Fachbuch gekauft, welches die gängigsten Programmierkonzepte erklärt hat. C und VBA hatte ich in der Schule und PHP musste ich für eine Webapp lernen. Der Übergang von Python zu C ist mir nicht wirklich schwergefallen. Ich musste halt nur jeweils rausfinden wie man die einzelnen Konzepte in C umsetzen muss. Und na klar habe ich zu Anfangs immer mal wieder Semikolons vergessen oder eine Variabeldeklaration nicht gemacht, das ist aber reine Gewöhnungssache. Meine Mitschüler die kein Vorwissen in Programmieren hatten, nahmen folgenden Weg (durch die Schule vorgegeben): Batch & Bash (Prozedural) --> SQL --> C (Prozedural) --> VBA (Objektorientiert + Funktionen/Prozeduren). Die Schule hat praktisch nur Prozedural unterrichtet ausser bei VBA, da hat man noch kurz Funktionen und objektorientierte Programmierung eingeführt. Die meisten in unserer Klasse können bis heute nicht wirklich programmieren. Das Hauptptoblem welches ich bei Nachhilfe feststelle ist nicht, dass sie den Syntax nicht beherrschen sondern, dass sie keine Ahnung haben welche Konzepte man wann verwenden kann.
Angenommen man hat ein halbes Jahr nur C gelernt und danach Python, kann man dann zwischen beiden Sprachen nach Bedarf wechseln oder verwirrt das nur? (Z.b alles für Arduino in C und am Desktop alles in Python)
Algorithmen und Datenstrukturen wird an vielen Unis so verwendet, das möglichst wenig Leute in den danach anstehenden Praktika in den Folgesemestern kommen. Die Schlagzahl in dem Modul ist so hoch, das man im Endeffekt nichts lernt. Wir hatten in der ersten VL Sortieralgorithmen und in der zehnten von 30 schon irgendwelche abgespacten wahrscheinlichkeitstheoretischen Betrachtungen des Travelling Salesman Problems, wobei noch niemand verstanden hatte, wie man das löst oder was das überhaupt ist. Und dann so abgefahrene NP Reduktionen und Co-NP und die ganzen Komplexitätsklassen ineinander überführt, was im ersten Studienjahr überhaupt keinen Sinn ergibt das zu machen, meiner Meinung nach. Im Endeffekt kann ich dadurch fast keinen der Algorithmen, da man nie etwas mehr als eine VL hatte. Am besten war die Woche, wo alle Typen von Bäumen mit Balancieralgorithmen vorgestellt wurden, eine Woche war da ÜBERHAUPT NICHT ausreichend für. Und in der nächsten Woche war dann ein ganz anderes Thema.
Es tut mir wirklich Leid, dass du diese Erfahrung machen musstest. Ich verstehe die Unis in dem Punkt auch nicht ... leider müssen (?) die den kalkulierten "Schwundfaktor" einhalten, weil oftmals mehr Studierende ins erste Semester aufgenommen als eigentlich betreut werden können. "Der Abschluss muss ja schließlich etwas wert sein." Das ist aber nicht an allen Unis so!
@@Florian.Dalwigk danke für die aufmunternden Worte, ich hab das Modul hinter mir, viele Kollegen haben es leider nicht gepackt. Ich hatte das Modul im zweiten Semester, und deswegen hat sich bei uns traditionell die Zahl der Studierenden nach dem zweiten Semester halbiert. 1. Sind im 3ten Semester Pflichtpraktika, wo nur für x Leute Platz ist und Informatik ist zulassungsfrei, und 2. "ist zum 3ten Semester der optimale Zeitpunkt einen anderen Studiengang zu beginnen und zu entscheiden, das Informatik doch nichts für einen ist". Gerade da das erste Semester entspannt war (Java + Programmierkonzepte + Grundlagen der Mathematik für die Informatik) und das zweite unglaublich hart (Betriebbsysteme + Kommunikationssysteme + Algorithmen und Datenstrukturen + Angewandte Mathematik für die Informatik) hat dazu geführt, dass viele nach dem 2ten und 2x durch Algorithmen und Datenstrukturen fallen das Handtuch schmeißen.
Ja, das hört sich ziemlich nach bewusstem Sieben an :( Wirklich schade, da Informatik richtig viel Spaß macht, wenn man den Anfang überstanden hat! Bei uns war das 2. Semester ebenfalls sehr hart. Das Praktikum in Softwareentwicklung 2 hat bis heute Spuren hinterlassen und ist mit das erste, was ich von meinem Studium berichte, wenn jemand danach fragt. Wir haben mit den paar Java-Kenntnissen aus dem ersten Semester einen Raytracer programmieren müssen (ohne vorher Computergrafik o. ä. besucht zu haben). Dazu noch angewandte Mathematik, diskrete Mathematik, Theoretische Informatik und IT-Systeme ... wenn statt IT-Systeme noch Netzwerktechnik hinzugekommen wäre, hätte ich ein Praktikum schieben müssen. Rückblickend erfüllt es mich aber mit Stolz, doch alles geschafft zu haben. Und so solltest du das auch sehen :) Glaub mir, die nächsten Semester werden besser und WESENTLICH ENTSPANNTER!
@@Florian.Dalwigk ich bei schon ein Stückchen weiter und kann dir nur recht geben. Hab zwar einen anderen Verlaufsplan aber das zweite Semester hört sich bei dir genauso an wie mein zweites war, was echt nicht so motivierend ist, das ist etwas unfair den Studierenden gegenüber. Wir hatten auch jede Woche in Alg. und Dat. so absurd schwierige Programmier- und Theorieaufgaben. Führt dazu, dass viele abschreiben und so noch mehr durch die Klausur fallen. 90% der Aufgaben könnte ich jetzt schon nicht mehr lösen.
@@Florian.Dalwigk ich frag mich auch, warum man dann nicht lieber eine Zulassungsbeschränkung einführt, anstatt das zweite Semester so unglaublich hart zu machen.
hab gaaaanz früher aufm C64 etwas assembler gemacht (das BASIC war einfach zu primitiv und langsam zugleich) ... dann weiss man was 1..n Schichten unter JEDER anderen Sprache läuft.
Ich bevorzuge C/C++ würde es aber nicht als erstsprache empfehlen, obwohl ich sagen muss dass manuelle dynamische Speicherverwaltung in C++ durch die erweiterte Objektorientierung deutlich einfacher ist als in C meiner Meinung nach. Ich würde als Anfänger mit C# oder Java/Kotlin anfangen ansonsten läuft man mit Html/CSS/JavaScript auch nicht schlecht. Python ist so flexibel es auch in seinem Angebot ist vom Jobangebot genauso wie C/C++ oftmals etwas anspruchsvoller als die anderen genannten (C++ etwas weniger) sollte aber nicht abschrecken da C/C++ gerne mal als Third Party Sprache benutzt wird wegen der Performance und Python auch wegen der Vielzahl an Libaries deshalb C/C++ und Python als Zweit- beziehungsweise Folgesprache.
- "int main() {return 0;}" is nicht zwingend nötig! "main() {}" compiliert zum exakt den gleichen Maschinencode. - Pointer werden in Python exzessiv hinter den Kulissen benutzt und können zu subtilen Fehlern führen, Stichwort Flache und Tiefe Kopien! Sie werden hier nur einfach nicht Pointer genannt.
@@Florian.Dalwigk Hi erst mal Danke für Deine Videos. Ich wollte nur klarstellen, dass es einen in den Arsch beißen kann, wenn man nicht weiß, dass in Python solche Variablen-Zuweisungen von z.B. Listen eben als Pointer, aka Flache Kopie durchführt. Wäre das Pointer Problem komplett hinter den Kulissen, würde die Zuweisung an eine neue Variable eine Flache Kopie erzeugen und beim ersten ändern der Inhalte in einer der nun auf das selbe Objekt weisenden Variable eine Tiefe Kopie erzeugen.
Da ist glaub ich ein kleiner Fehler in der Benennung der Zeitmarken: müsste es nicht Hello World in C und Python heißen ? Macht es nicht Sinn gleich mit c++ anzufangen. Das mache ich zumindest
@@Florian.Dalwigk Wäre interessant gewesen, da Dart Javascript in besser sein soll und Server sowie Client Seitig funktioniert, also hätte mich Interessiert, ob es sich lohnt da zeit zu investieren oder weiter bei Python zu bleiben. Aber danke trotzdem für deine Antwort.
00:40 "Python kann, wie auch C, für die objektorientierte Entwicklung von Programmen genutzt werden." - Glattweg falsch. C++ oder Objective-C vielleicht, aber da war im Video zuvor noch gar keine Rede von. Und C der Einfachheit halber mit C++ gleich setzen ist doch grob fahrlässig, wenn's hier um ein Lern-Video für Anfänger gehen soll...
Bitte lieber Algorithmen verstehen, wenn du auf ein anderes Video verweisen willst, verwende das Infocard Feature statt einen Link in der Beschreibung. Das macht die Navigation vor allem auf dem Handy viel einfacher. :)
Sehr schönes Video ich wollte zuerst mit C anfangen war mir aber zu schwer. Daraufhin habe ich mit Python angefangen und konnte so C besser verstehen. Also als Anfänger empfehle ich Python so wie du es gesagt hast C ist schon schwer um damit anzufangen. Das Erlernen von C hat mir aber sehr viel Spaß gemacht ^^
Man darf aber nicht vergessen, dass es in der Informatik nichts umsonst gibt. Wenn man in python programmiert hat man Bequemlichkeit, zahlt dafür aber einen Preis
@@Florian.Dalwigk ja ich nin jetzt kein python basher. Numpy etc ist schon extrem nice. Wenn ich das in c machen muss hab ich schnell mal 10fachen code. Python kst halt extrem bequem. Sehe die Bequemlichkeit aber nur in der objektorientierten programmierung und dann kann man direkt c++ nehemen, da kann ich alles in x schreiben und wenn es nicht geht mach ich halt nen extern c Ps. Matrix Multiplikation ist in python halt schon ehr nice, aber da kann kann man auch ne Bibliothek schreiben
why does python live on land? because it's above C level! ich würde für Anfänger eher C empfehlen. da lernt man mehr, wodurch es später deutlich einfacher ist andere Sprachen zu lernen, und wird anders als in java nicht von unsinnig langen befehlen und objektorientierung überschwemmt. Solange es nur um grundlegendes geht finde ich C einfacher als java.
Läuft aber meines Wissens nach nur auf Windows vernünftig. Das ist zwar das am weitesten verbreitetste Desktop-Betriebssystem. Wenn man aber mal MacOS oder Linux benutzt (wie ich), lernt man es zu hassen, durch sowas "links liegen" gelassen zu werden. Und die Lizenzierung ist bei C# nicht ganz so schön wie bei Java, Python oder C. Aber von dem was ich gesehen habe, scheint es rein von den features her wirklich gut zu sein 😌 Korrigiert mich, wenn ich Falsches erzähle.
@@tayustgemil9285 C# läuft mittlerweile fast überall mit .NET 5 und auch Mobilgeräte werden mit .NET 6 voll unterstützt. Außerdem ist .NET mittlerweile auch Open Source
Ich finde C deutlich intuitiver und es hat den Vorteil, dass man deutlich weniger eingeschränkt wird. Python ist in Rohrform durch die Schwache Performance kaum zu gebrauchen. Der ganze KI, ML Kram usw läuft ja auch nicht nativ in Python. Mir kommt Python Entwicklung oft so vor als würde man ein einfaches Job Script schreiben in dem man 90% des Codes (meist in C geschrieben und Compiliert wegen der Performance) importiert und dann per Script die Funktionen aufruft.
Wenn man Aufwand und Ertrag noch miteinbezieht kann das auch anders aussehen. Bei regexprüfungen ist C++ grad mal 10% schneller (kenne den Vergleich zu C nicht) als Python und benötigt bis zu 50% mehr code. Ein PC der 10% länger rechnet kostet u.u. weniger als ein Mitarbeiter der 50% länger programmieren muss
@@AnoNymous-ie3wc C lohnt sich vor allem bei großen Arrays usw. C hat keine Default Werte für Datentypen. In Java, C++, C# usw hat ein int immer den Standardwert 0. Das hat beim Programmieren Vorteile, aber auch den Nachteil, dass das reservieren des Speichers unfassbar lange dauert. (T(n)). Ein zweidimensionales Array mit n * n als Dimension MUSS beim Initialisieren für JEDEN Wert einzeln 0 in den Speicher schreiben. Das heißt, dass einfache reservieren eines Arrays hat schon eine Komplexität von O(n^2). In C ist es egal was da im Speicher war, es wird nur der Speicher reserviert, deshalb hat das einen Aufwand von O(1). Es gibt viele, vor allem numerische Anwendungen, die in C deutlich besser zu Optimieren sind
Würde ich so nicht sagen. Ich glaube immer noch das Python für Anfänger eine der Besten Sprachen ist, aber es gibt auch viele gute Gründe für C, zumindest für Leute die auf lange Sicht in die Software Entwicklung gehen wollen. C ist im Endeffekt eine extrem simple Sprache bei der man gleichzeitig eine Menge Grundlagen lernt. Klar kann man einiges falsch machen und für komplexere Programme würde ich's nicht benutzen, aber eigentlich sind die meisten Fehler die Anfänger in der Praxis antreffen werden ziemlich einleuchtend und leicht zu erklären und man kann daran außerdem sehr einfach viele zugrundeliegende Konzepte erklären die in Python versteckt sind. Viele von diesen Sachen spielen auch in Python eine Rolle, lassen sich da aber nur schwer erklären weil man den Hintergrund eben nicht wirklich sieht. Versuch z.B. mal einem Anfänger zu erklären warum wenn man eine Liste in Variable "a" hat und diese dann "b" zuweist und dann die Liste über "b" verändert sich auch die Liste in "a" ändert, das gleiche aber nicht passiert wenn man statt einer Liste eine Zahl verwendet. Klar geht das, aber im Endeffekt sind Pointer das zugrundeliegende Konzept und das kann man in Python halt einfach nicht wirklich zeigen. In C ist es dagegen offensichtlich. Außerdem halte ich es auch nicht für blöd Anfänger direkt statische Typisierung zu zeigen. In Java hat man exakt die gleichen Probleme wie in Python, ich seh also wenig Gründe Java statt Python zu benutzen. Aber C ist eine sehr andere Sprache und ich kann durchaus verstehen warum z.B. das MIT teilweise mit C beginnt und dann zu Python wechselt um komplexere Algorithmen und Datenstrukturen, sowie Objektorientierung zu erklären. Für Mathe/Physik/Chemie/etc.-Studenten oder Leute die einfach nur ein bisschen herumspielen wollen, z.B. auch sowas wie Sys-Admins oder Tester, ist das natürlich alles völlig egal, aber für Informatik Studenten die solide Grundlagen lernen sollen ergibt das durchaus Sinn.
@@Florian.Dalwigk Ich schaue mir gerade sehr viele Videos von Dir an und versuche Python zu verstehen. Es kommt mir leider vor wie bei PHP. Ich mag Sprachen nicht die dynamische Typen verwenden. Ich bin wohl schon zu alt.
Python: *Approaching C*
C: "Python, I am your father!"
Python: "NOOOOOO!!!"
Ein Video zu den Unterschieden von C, C++ und C# wäre cool. Warum haben diese drei Sprachen so ähnliche Namen?
C++ ist ein Superset von C und beinhaltet Objektorientierung. C# ist da etwas abgekappselt davon und ist im vergleich zu C und C++ eine High-Level Programmiersprache die in richtung Java geht.
@19881141a55507651eef80ac27d2c2a1 Deswegen sage ich ja sie sei "abgekappselt".
C++ ist etwas die Erweiterung von C um besser Objektorentierung zu halten. C# ist Mircosofts Antwort auf Java.
Vater, Junior, Junior Junior
@@8kylobit503 C++ ist in keiner Hinsicht ein Superset von C. Diese Sprache hat nen mehrfach größeren Funktionsumfang, noch größer als viele andere Sprachen, selbst wenn wir den C Teil rauslassen. Genauso wenig ist C++ “C + Klassen”, das hat der Ersteller auch schon mehrfach gesagt.
Und C# fing basically als ein Java Klon an, einfach mit Syntax mehr Richtung C++, seitdem hat sich C# natürlich dramatisch entwickelt.
fänd "Rust vs. C++" mal interessant- vor allem da Rust immer mehr Support von großen Tech-Konzernen bekommt
Hab noch nie in rust programmiert.
Ist man da auch so frei wie in c?
@@blockhunterlp8748 fast. Einer der größten unterschiede zu C/C++ ist, dass Rust dynamisch typisiert ist und C bzw C++ statisch typisiert. Du musst in Rust also keine Datentypen bei der Variablen Deklaration angeben (änlich wie in Python oder js). Rust ist wie C eine Systemnahe Sprache und ist damit sehr schnell. Das liegt auch daran dass beide Sprachen auf einen garbage kollektor verzichten. Zusammengefasst kann man sagen dass Rust eine Systemnahe Sprache ist die aber von der Syntax und der Typisierung eher wie eine hohe und moderne Programmiersprache wirkt. Das merkt man auch beim programmieren. Meiner Meinung nach kommt es einem nicht so vor als würde man damit systemnah programmieren. Deshalb programmier ich nach wie vor lieber in C und C++
C und C++ mussten wir im Physik-Studium lernen. C habe ich dann seitdem wirklich vertieft. C# habe ich später kennengelernt, das hat mir wirklich Spaß gemacht. C# liest sich einfach so flüssig wie ein Text und es funktioniert echt unkompliziert. Benutze auf der Arbeit aber auch viel PowerShell, da hat mir C# auch ein wenig geholfen. Gibt so vieles zu lernen, tolles Video!
Würdest du auch solche Anfängertutorials, wie Morhpheus für diverse Programmiersprachen machen?
Deine Videos sind super, obwohl ich was ganz anderes studiere :)
Hey, kannst du mal ein Video machen wie so eine Programmier Sprache gemacht wurde? Es interessiert mich irgendwie
Du denkst dir Befehle und einen Syntax aus und konstruierst dann einen Compiler dazu
Ich kann zu dem Thema das Buch crafting interpreters empfehlen (ich kann leider keinen Link Posten weil mein Kommentar dann als Spam erkannt wird). Das Buch ist online kostenlos lesbar und man lernt wie Mann eine kleine Programmiersprache entwickelt.
Zumindest bei C war die Sache recht naheliegend, da man die ganzen Grundstrukturen der Sprache als Bausteine sehen kann, hinter denen ein gewisser Assemblercode steckt. Was der BB-Code für HTML ist, das ist C für Assembler.
Ich habe einige Jahre die Übungen für die "Einführung in die Informatik" und "Einführung in die Programmiersprache C" als Tutor begleitet und bin mittlerweile großer Befürworter davon mit Python zu starten. Einer der Gründe: Python zwingt dich deinen Code korrekt einzurücken. Gefühlt 99% aller fehlender oder falsch gesetzter geschweifter Klammern konnte ich in den Tutorien auf falsche Einrückung zurückführen.
Dennoch sollte man sich irgendwann intensiv mal mit C auseinander setzen, insbesondere um mal direkt mit Problemen, wie buffer oder stack overflows und Co. konfrontiert zu werden. Vor allem wenn man bedenkt, wie häufig solche Fehler auch im professionellen Umfeld auftreten.
Für bestimmte Inhalte im Bereich Algorithmen und Datenstrukturen finde ich C auch ganz schön, da man auch mal Datenstrukturen (lists, stacks, queues) selbst implementieren kann.
Ich habe gerade mit dem Studium angefangen und wir haben zu erst c gelernt. Ich habe auch gemerkt das man damit versucht auszusieben, aber wenn man dran bleibt ist es auch ohne vorwissen schaffbar und man kann auf der Grundlage von c sehr schnell andere Programmiersprachen wie Java erlernen.
P.s. Finde deine Videos echt informativ und unterhaltsam, da bekommt man Lust aufs ausprobieren 👍👍
Fühl ich, wir mussten c++ am Anfang lernen :D Aber mit Fleiß geht alles
Mega starkes video! Alles super verständlich erklärt👍🏻
Danke!
Wie, schon gar nicht in einer Erstsemestervorlesung? C war mit das erste was ich in meinem Elektrotechnikstudium gelernt hab. Ich würd jetzt nicht sagen, dass mir das geschadet hat oder irgendwem sonst. Gut, wir benutzen das jetzt auch zum µC Programmieren, was mit Python wohl in einer Katastrophe enden würde.
*C++ vs Java* wäre interessant zu sehen!
ok
Dankeschön ❤️💙
Gerne 🙂
Cooles Video c:
Gut gemacht
Danke :)
Schwierig, mein Kumpel hat nur Python genutzt und als dann im Studium C/C++ kam ist er verzweifelt. Ein anderer Freund wollte auch von Python zu C# und hat mich gefragt, was der scheiß soll haha. Ich hab dahingehend weniger Probleme, da ich von C++ und Java zu Python gekommen bin. Aber ja im Endeffekt kommt es drauf an was man überhaupt vor hat.
@@mastermirror2842 ich benutze sowohl Java als aich Nim. Java hat Klammern bei dingen wie if, endet Befehle mit ; und basiert auf {} für Blöcke. Nim hat keine Klammern, beendet Befehle durch Zeilenende und basiert auf :, = und Einrückung für Blöcke
Das gute an Python ist die Einfachheit. Ich kann in kurzer Zeit eine komplexe Webanwendung programmieren.
Ich hatte C jetzt im ersten Semester und muss sagen, das war gar nicht so schlecht... Klar war es bisschen schreibaufwand und die Speicherverwaltung war echt schwierig zu verstehen, aber wir hatten zum Glück ein Tutorium wo wir viele Fragen stellen konnten. Und es ist danach um so leichter auf python oder so umzusteigen denk ich :)
Ich liebe diese Videos, bitte mehr davon :)
Gerne
Mich würde es interessieren, ob man mehrere Programmiersprachen miteinander kombinieren kann. Wenn ich z.B. hardwarenah, also mit C, mit Arduino arbeiten will, aber zeitgleich ein KI, was mit Python geschrieben wird, kombinieren will, wäre eine Kombination aus Beidem an einem Projekt möglich?
Ja, das geht und ist sogar sehr sinnvoll. Die beiden Sprachen sind DAS perfekte Team. C ist schnell und hardwarenah. Python ist abstrakt und extrem ausdrucksstark. Kombinieren kann man über ctypes, cython, ...
@@TrainerInukuma ctypes und cython sind doch Anbindungen an Python oder? Könnte man mit denen überhaupt an Microcontroller arbeiten?
@@songokkel7667 Das mit dem Arduino hatte ich überlesen. Da ist aufgrund von Speichermangel und geringer Leistung nur C drin. Die eigentliche Arbeit bei KI ist aber das Training und die Testdaten. Hier kommt wieder Python ins Spiel...
Python (mit RustPython) müsste gehen
Das "return 0" kann man in der main-Funktion weglassen (was zugegebenermaßen vielleicht aber auch etwas verwirrender ist, da so der int-Rückgabetyp weniger Sinn macht) und statt "printf" könnte man eigentlich auch puts (für "put string") benutzen, was automatisch ein "
" anhängt (vermutlich wird der Compiler im Endeffekt sogar den "printf"-Aufruf durch ein "puts" ersetzen). Theoretisch kann man sogar den include weglassen, was aber dann definitiv kein guter Stil mehr ist und auch ne Warnung erzeugt.
An der TU Berlin wird zum Erstsemester-Modul "Einführung in die Programmierung" C Gelehrt XD
Ich glaube, die wollen einem da direkt auch Speicher erklären.
Macht aber auch ein bisschen sinn, denn in einer Nebenvorlesung lernt man erste Hardware-Aspekte wie NAND, Zahlensysteme, etc. Da ergibt die Hardware-Nähe von C sinn.
Wie meinst du das mit dem Menschenleben kosten bezügl. des Buffer Overflows?`
Sonst nices Video
Wenn du zum Beispiel einen Steuercomputer in einer Rakete hast und dort die Variablen vertauschst wirst du deswegen oft mit falschen Werten rechnen, da Variablen zu den falschen Adressen geschrieben und von den falschen Adressen gelesen werden. Dadurch ist es sehr wahrscheinlich, dass die Rakete, sagen wir mal ein paar Kratzer abbekommt. Wenn du verstehst, was ich meine.
Nice, endlich mal ein Video, in dem ich kurz und knapp erfahre was C ist :D
Super
Mein erstes Programm hab ich mit ruby geschrieben. Das war aber nur ein art wahlfach für eine woche. Richtig angefangen zu programmieren habe ich mit C und nachträglich gesehen war das auch gut, da man leichter versteht was der Computer überhaupt macht und wie es funktioniert.
Das simpelste hello world in c ist übrigens:
main() {
puts("Hello, World");
}
Das ist zwar k&r Syntax, ist aber komplett valides c und das include darf, soweit ich weiß, auch weggelassen werden, da puts implizit definiert wurde.
cries in gcc -Werror
implicit declaration of function 'puts' is invalid in C99
#include
int main() {
puts("Hello World!");
}
@@maxsilvester1327 Standardmäßig sollte gcc glaub ich nicht C99 benutzen. Bei mir funktioniert das ohne Probleme, auch wenn's natürlich ne Warnung gibt. Kann aber sein dass das z.B. bei MSVC anders ist.
Kannst du Mal was du den Unterschieden zwischen c c++ und c# machen ?
Kommt noch
7:56 korrigiert mich wenn ich falsch liege aber gab's in Java nicht auch mal nen garbage collector?
Den gibt es auch. Den muss man aber nicht selber aufrufen.
C# vs Python wäre cool
Sollte im Endeffekt doch quasi exakt das gleiche wie Java vs Python sein. C# ist mittlerweile schon eine deutlich größere und m.M.n. bessere Sprache, aber ich glaub nicht dass das für Anfänger einen großen Unterschied macht.
Also vorab persönlich würde ich sagen, dass man zuerst eine funktionale Programmiersprache lernen sollte, dann eine prozedurale Programmiersprache, dann erst eine objektorientierte Programmiersprache. Und danach eine deklarative Programmiersprache. Natürlich ist das jetzt nicht so einfach, weil viele Programmiersprachen ja mehrere Paradigmen in sich vereinen. Aber bei bestimmten Programmiersprachen sticht immer ein Paradigma besonders hervor.
Ich bin großer Freund von Golang. Das ist auch stark typisiert und kompiliert. Ich glaube, dass ist wirklich eine Sprache die sehr gut für viele Einsteiger ist, da man doch einiges lernt wie in C und es z.B. auch Pointer gibt. Sie ist aber längst nicht so kompliziert wie C und auch nicht so einfach wie Python.
2:59 sorry dein Code crashed da du die falsche Version von Python Instaliert hast.
Bei MIR funktioniert das.
@@Florian.Dalwigk höhöhö Klassiker :D
Hey, könntest du ein Video über html, php, js machen. Weil irgendwie komm ich da nicht so rein, was was ist und welches für was zuständig ist.
meine beiden Lieblingssprachen :D
Klasse
"Schon gar nicht in einer erst Semester Vorlesung..."
Meine Uni: Viel Spaß mit C
Ist leider überall so.
Habe aktuell Scala im 1 Semester. Ab dem 2. dann Java
Uff
Top Video! Kommt noch eine dritte Folge mit Java vs. C?
Möglicherweise
@@Florian.Dalwigk Wäre toll
hab direkt mit C++ angefangen, wobei ich da nur C Funktionen benutzt habe, hab aber die Grundlagen nicht mal ganz verstanden bin dann auf Python umgestiegen und hab da eigentlich die meisten überhaupt erst verstanden und sitze jetzt wieder vor C++ und sehe das sich die Sprachen inhaltlich gar nicht so doll unterscheiden nur die Schreibweise anders ist
Mir als noob ist Python deutlich leichter gefallen. Sicher habe ich vieles nicht effektiv gelöst aber es ist halt echt einfacher. Auch Hardware zeugs kann man mit Python programmieren (home automatisierung etc) ich zb habe OHNE jegliche Ausbildung ein automatischen Rasenmaher programmiert der mit Kompass kontrolliert im Garten rum fährt und den Rasen kurz hält. Zusätzlich ist er mit einer openCV Bild Erkennung ausgestattet die dafür sorgt das keine Blumen umgemäht werden.
Sicher geht das effektiver mit c aber definitiv einfacher in Python.
1. Ist das kein "Hardware" Kram. 2.Was heißt effektiv?
@@TwixWaffles 1 sorry für mich als noob ist es hardware Kram. Shame on me :)
2 das ganze ist sehr hardware hungrig geworden. Denke mit c (und mehr skills) würde es viel weniger rechenpower benötigen und somit flotter laufen.
Aber das wäre evtl zu schwierig für Leute die nicht vom Fach sind sondern nur Hobby mäßig im Thema sind.
@@TeddyGun300 kein Ding , Hauptsache du bleibst am Ball 💪🏻
Ich find, es ist so ne sache mit python, weil es mich eher dazu verleitet, einfach alles in eine datei reinzuklatschen und nach nem monat nicht mehr zu wissen, was ich da programmiert habe. Auch konnte ich das konzept von objektorientierter programmierung erst mit c++ halbwegs verstehen
Den Gedanken kann ich nachvollziehen. Das Verhalten habe ich auch schon bei mir beobachtet.
Ich finde dein Video zu "Ich hab doch nichts zu verbergen" nicht mehr. Hast du das offline genommen oder bin ich zu blöd es zu finden?
In der Schule haben wir im Informatik Leistungskurs mit Java programmiert, jetzt im Studium Elektrotechnik starten wir im ersten Semester mit C, was mir total schwer gefallen ist, da Pointer und Garbage Collection nie ein Thema waren vorher
Also ich finde C im Elektrotechnik Studium im ersten Semester gut. Im späteren Semester kommst du fast nicht mehr ohne aus. In einer MCU Vorlesung macht die Arbeit mit pointern wesentlich mehr Sinn. In dieser Vorlesung geht man mit Assembler noch näher an die HW und dann bist du froh um C. Den der Verständnis Sprung ist wesentlich geringer als bei Python. Im Master arbeite ich zurzeit an einem Projekt mit microphython und es ist zwar schön simple. Die Performance lässt teilweise zu wünschen übrig und Messaufgaben werden fast unmöglich, da der RAM so voll ist. C ist wesentlichen Ressourcen schonender.
...yes, cpp ist wie "mit Kanonen auf Spatzen zu ballern", nicht immer unbedingt notwendig, aber macht unheimlich Bock!😂🤣😂😇
Geb dir dir voll und ganz recht, python ist gerade für Einsteiger perfekt. Denn erstmal das Interesse zudecken macht Sinn, da man mit Datenstrukturen, Pointen, etc. schon jemand sehr schnell den absoluten Abturn verschaffen kann.
Was hältst du von einem Vergleich zwischen Javascript (nicht Java!) und Python, den fände ich auch mal sehr interessant!😉
Kommt noch
Hab als Erstsemester in Programmieren direkt C gelernt. Hat am Ende sogar spaß gemacht.
Man muss sich eben reinhängen.
Ich liebe es in Python zu schreiben, weil die Syntax viel einfacher ist und es alles viel mehr Sinn macht. Ich programmiere gerade eine Webseite mit flask und arbeite viel mit websockets und hasse den Part mit JavaScript. Ich brauche dort locker 5 mal länger in JavaScript weil dort alles so umständlich ist...
Alles eine Frage der Übung. Ich bin mit Python nie wirklich warm geworden. Wurde vor vielen Jahren mit ANSI-C, Assembler und Java ausgebildet, habe schon zuvor im Hobby mit PHP und Python gearbeitet und beruflich dann erst VB.NET und heute nur noch C# und JavaScript.
Ich, der im ersten Semester Informatik direkt C lernen muss: *Sad Pepe face*
Uff
Wie soll man objektorientiert in C programmieren? Mit Function-Pointern in Structs?
ein Satz von Fuktionen, die auf einem bestimmten struct operieren ...
@@ThomasBensler Das ist prozedural und nicht objektorientiert
Python vs. C# bitte
5:24 das ist leider falsch!
Erstens was hat die exe damit zutun?
Und außerdem kann man mit JIT Programmen auch eine executable generieren
Video kriegt trotzdem nen like
Cheers
ich hab bis jetzt noch nicht so viel Ahnung von dem ganzen, welches Hello World Programm benutz ich am besten um mit C anzufangen?
Ich verstehe die Frage nicht ganz. Schau dir am besten mein Video zu den Hello World Programmen an.
Eine echte Herausforderung wäre es, eine gute Videoreihe zur VL Algorithmen und Datenstrukturen zu machen, würde aber wahrscheinlich unfassbar viel Zeit fressen, bedenkt man, dass das Modul zB bei mir 15 Wochen hatte, und allein in der ersten Woche 12 Sortieralgorithmen besprochen und theoretisch (mit Korrektheitsbeweisen, Laufzeitabschätzung, wahrscheinlichkeitstheoretischer Betrachtung verschiedener Wahlen des Pivotelements bei Quicksort etc) besprochen wurden. Overkill.
Als Auftragsarbeit könnte ich das durchaus umsetzen. Doch für UA-cam würde das neben meinem Job zu viel Zeit fressen :(
@@Florian.Dalwigk das kann ich durchaus nachvollziehen 😄 war auch nicht ganz ernst gemeint bzw nur wenn dir mal gar nichts mehr einfallen sollte.
War eher als Rant gegen das Modul gemeint als ein ernsthafter Vorschlag.
@@Florian.Dalwigk die Durchfallquote in dem Modul liegt an dieser Uni im Schnitt bei 75% ist das viel oder wenig im Vergleich zu München?
wir haben in der Uni C gemacht
In der Beschreibung steht "hello-world Programm Java und Python "bzw so ähnlich
Du sagtest ja man kann Python in ein C-Programm compilieren. Geht das immer und Recht unkompliziert? Und sind dann die Programme genauso schnell als wenn man gleich in C gecoded hätte?
Es geht nicht immer und trivial ist es auch nicht unbedingt.
Kannst du mal ein Video zu Scratch machen?
(Ich weiß, dass du ein Problem mit Scratch hast)
Kann mir jemand mal erklären wieso eigentlich Python bei den ganzen Data science bzw Machine learning sachen eingesetzt wird anstatt z. B. C++ was sehr performant ist.
Wäre es da nicht eigentlich besser eine performante Sprache zu wählen. Oder hat Python anstatt der einfachen Syntax in der Hinsicht noch andere Vorteile?
Das sind so die gängigsten Gründe die für Python in Data Science sprechen:
- Kann gut untereinander ausgetauscht werden da der Syntax leicht verständlich ist
- Hat eine Menge Libraries die auf Datenanalysen ausgelegt sind (Panda, NumPy, SciPy ect)
- Grosse Community
- Automatisierte Unittests
- Einfache Skalierbarkeit
- Einfache Visualisierungsmöglichkeiten (mathplotlib)
- Python ist sehr schnell wenn es um die Verarbeitung von Daten mit beispielsweise regex geht. C++ ist grade mal 10% schneller beim verarbeiten von regex, benötigt aber einen grösseren Schreibaufwand
Quellen:
www.activestate.com/blog/python-vs-c-text-processing/
www.whizlabs.com/blog/python-and-big-data/
www.geospatialworld.net/blogs/why-is-python-a-perfect-choice-for-big-data/
www.coursereport.com/blog/how-is-python-used-for-data-science-metis
towardsdatascience.com/top-10-reasons-why-you-need-to-learn-python-as-a-data-scientist-e3d26539ec00
marutitech.com/python-data-science/
www.cbtnuggets.com/blog/technology/data/why-data-scientists-love-python
Das fiese an C ist einfach wie krass voll es mit Pitfalls ist, ganz zu schweigen vom Präprozessor der gerne ignoriert wird, aber syntax erzeugen kann die abolut unklar sind wenn man nicht weiß was passiert.
Keine Ahnung was ich jemandem empfehlen würde... C ist halt ultra wichtig, und man lernt erst richtig kennen was der PC überhaupt im Hintergrund macht, wenn man mit Python anfängt läuft man in Gefahr dann vor C Angst zu bekommen.
6:40 | C | buil-in
Danke für den Hinweis
Findet ihr es empfehlenswert mit Python anzufangen um später C/C++ zu lernen? Ich hab mit dem arduino angefangen zu programmieren zu programmieren, nach ein paar Wochen kam ich aber bei fast jedem Projekt an einem Punkt wo ich nicht mehr weiter kam und ich den Fehler nicht finden konnte, das hat mich so frustriert, das ich erst mal ganz aufhörte. Da ich mich aktuell für KI interessiere kam ein bekannter auf die Idee, ich solle mir doch mal Python anschauen und ein paar Programme nach bauen um das Grundprinzip vom programmieren besser zu verstehen und dann ggf. Später wieder mit C weiter zu machen.
Ich würde es andersherum machen.
Was hält ihr für einen Einstieg in C(++) Programmierung mit Blueprint, dem Visuellen Programming Tool von Unreal Engine?
Beim Timestamp von "Hello World" steht noch Java ^^
Danke für den Hinweis
Es ist meiner Meinung nach besser erst C oder Java zu lernen, da der umstieg von denen auf python einfacher ist als der umstieg von python auf c
Würde ich nicht unbedingt sagen. Meiner Meinung nach ist es fast egal welche Sprache man zuerst wählt. Wichtig ist die wichtigsten Programmierkonzepte zu kennen.
Mein bisheriger Weg war Batch --> Bash --> Python --> SQL --> C --> PHP --> VBA.
Bash und Batch habe ich mittels try/error gelernt (Also ohne ein Buch oder eine Anleitung welche mich in die Konzepte der Programmierung eingeführt haben). Für Python habe ich mir dann mein erstes Fachbuch gekauft, welches die gängigsten Programmierkonzepte erklärt hat. C und VBA hatte ich in der Schule und PHP musste ich für eine Webapp lernen. Der Übergang von Python zu C ist mir nicht wirklich schwergefallen. Ich musste halt nur jeweils rausfinden wie man die einzelnen Konzepte in C umsetzen muss. Und na klar habe ich zu Anfangs immer mal wieder Semikolons vergessen oder eine Variabeldeklaration nicht gemacht, das ist aber reine Gewöhnungssache.
Meine Mitschüler die kein Vorwissen in Programmieren hatten, nahmen folgenden Weg (durch die Schule vorgegeben):
Batch & Bash (Prozedural) --> SQL --> C (Prozedural) --> VBA (Objektorientiert + Funktionen/Prozeduren).
Die Schule hat praktisch nur Prozedural unterrichtet ausser bei VBA, da hat man noch kurz Funktionen und objektorientierte Programmierung eingeführt. Die meisten in unserer Klasse können bis heute nicht wirklich programmieren. Das Hauptptoblem welches ich bei Nachhilfe feststelle ist nicht, dass sie den Syntax nicht beherrschen sondern, dass sie keine Ahnung haben welche Konzepte man wann verwenden kann.
Angenommen man hat ein halbes Jahr nur C gelernt und danach Python, kann man dann zwischen beiden Sprachen nach Bedarf wechseln oder verwirrt das nur? (Z.b alles für Arduino in C und am Desktop alles in Python)
Wie meinst du das?
Algorithmen und Datenstrukturen wird an vielen Unis so verwendet, das möglichst wenig Leute in den danach anstehenden Praktika in den Folgesemestern kommen. Die Schlagzahl in dem Modul ist so hoch, das man im Endeffekt nichts lernt. Wir hatten in der ersten VL Sortieralgorithmen und in der zehnten von 30 schon irgendwelche abgespacten wahrscheinlichkeitstheoretischen Betrachtungen des Travelling Salesman Problems, wobei noch niemand verstanden hatte, wie man das löst oder was das überhaupt ist. Und dann so abgefahrene NP Reduktionen und Co-NP und die ganzen Komplexitätsklassen ineinander überführt, was im ersten Studienjahr überhaupt keinen Sinn ergibt das zu machen, meiner Meinung nach. Im Endeffekt kann ich dadurch fast keinen der Algorithmen, da man nie etwas mehr als eine VL hatte. Am besten war die Woche, wo alle Typen von Bäumen mit Balancieralgorithmen vorgestellt wurden, eine Woche war da ÜBERHAUPT NICHT ausreichend für. Und in der nächsten Woche war dann ein ganz anderes Thema.
Es tut mir wirklich Leid, dass du diese Erfahrung machen musstest. Ich verstehe die Unis in dem Punkt auch nicht ... leider müssen (?) die den kalkulierten "Schwundfaktor" einhalten, weil oftmals mehr Studierende ins erste Semester aufgenommen als eigentlich betreut werden können. "Der Abschluss muss ja schließlich etwas wert sein." Das ist aber nicht an allen Unis so!
@@Florian.Dalwigk danke für die aufmunternden Worte, ich hab das Modul hinter mir, viele Kollegen haben es leider nicht gepackt. Ich hatte das Modul im zweiten Semester, und deswegen hat sich bei uns traditionell die Zahl der Studierenden nach dem zweiten Semester halbiert. 1. Sind im 3ten Semester Pflichtpraktika, wo nur für x Leute Platz ist und Informatik ist zulassungsfrei, und 2. "ist zum 3ten Semester der optimale Zeitpunkt einen anderen Studiengang zu beginnen und zu entscheiden, das Informatik doch nichts für einen ist". Gerade da das erste Semester entspannt war (Java + Programmierkonzepte + Grundlagen der Mathematik für die Informatik) und das zweite unglaublich hart (Betriebbsysteme + Kommunikationssysteme + Algorithmen und Datenstrukturen + Angewandte Mathematik für die Informatik) hat dazu geführt, dass viele nach dem 2ten und 2x durch Algorithmen und Datenstrukturen fallen das Handtuch schmeißen.
Ja, das hört sich ziemlich nach bewusstem Sieben an :( Wirklich schade, da Informatik richtig viel Spaß macht, wenn man den Anfang überstanden hat! Bei uns war das 2. Semester ebenfalls sehr hart. Das Praktikum in Softwareentwicklung 2 hat bis heute Spuren hinterlassen und ist mit das erste, was ich von meinem Studium berichte, wenn jemand danach fragt. Wir haben mit den paar Java-Kenntnissen aus dem ersten Semester einen Raytracer programmieren müssen (ohne vorher Computergrafik o. ä. besucht zu haben). Dazu noch angewandte Mathematik, diskrete Mathematik, Theoretische Informatik und IT-Systeme ... wenn statt IT-Systeme noch Netzwerktechnik hinzugekommen wäre, hätte ich ein Praktikum schieben müssen. Rückblickend erfüllt es mich aber mit Stolz, doch alles geschafft zu haben. Und so solltest du das auch sehen :) Glaub mir, die nächsten Semester werden besser und WESENTLICH ENTSPANNTER!
@@Florian.Dalwigk ich bei schon ein Stückchen weiter und kann dir nur recht geben. Hab zwar einen anderen Verlaufsplan aber das zweite Semester hört sich bei dir genauso an wie mein zweites war, was echt nicht so motivierend ist, das ist etwas unfair den Studierenden gegenüber. Wir hatten auch jede Woche in Alg. und Dat. so absurd schwierige Programmier- und Theorieaufgaben. Führt dazu, dass viele abschreiben und so noch mehr durch die Klausur fallen. 90% der Aufgaben könnte ich jetzt schon nicht mehr lösen.
@@Florian.Dalwigk ich frag mich auch, warum man dann nicht lieber eine Zulassungsbeschränkung einführt, anstatt das zweite Semester so unglaublich hart zu machen.
hab gaaaanz früher aufm C64 etwas assembler gemacht (das BASIC war einfach zu primitiv und langsam zugleich) ... dann weiss man was 1..n Schichten unter JEDER anderen Sprache läuft.
Ein Video zu Java vs Kotlin wäre cool
Kommt
Gib uns ein Video über Kotlin
Ich bevorzuge C/C++ würde es aber nicht als erstsprache empfehlen, obwohl ich sagen muss dass manuelle dynamische Speicherverwaltung in C++ durch die erweiterte Objektorientierung deutlich einfacher ist als in C meiner Meinung nach. Ich würde als Anfänger mit C# oder Java/Kotlin anfangen ansonsten läuft man mit Html/CSS/JavaScript auch nicht schlecht. Python ist so flexibel es auch in seinem Angebot ist vom Jobangebot genauso wie C/C++ oftmals etwas anspruchsvoller als die anderen genannten (C++ etwas weniger) sollte aber nicht abschrecken da C/C++ gerne mal als Third Party Sprache benutzt wird wegen der Performance und Python auch wegen der Vielzahl an Libaries deshalb C/C++ und Python als Zweit- beziehungsweise Folgesprache.
Swift vs Python wäre auch spannend
- "int main() {return 0;}" is nicht zwingend nötig! "main() {}" compiliert zum exakt den gleichen Maschinencode.
- Pointer werden in Python exzessiv hinter den Kulissen benutzt und können zu subtilen Fehlern führen, Stichwort Flache und Tiefe Kopien! Sie werden hier nur einfach nicht Pointer genannt.
*Hinter* den Kulissen
@@Florian.Dalwigk Hi erst mal Danke für Deine Videos. Ich wollte nur klarstellen, dass es einen in den Arsch beißen kann, wenn man nicht weiß, dass in Python solche Variablen-Zuweisungen von z.B. Listen eben als Pointer, aka Flache Kopie durchführt.
Wäre das Pointer Problem komplett hinter den Kulissen, würde die Zuweisung an eine neue Variable eine Flache Kopie erzeugen und beim ersten ändern der Inhalte in einer der nun auf das selbe Objekt weisenden Variable eine Tiefe Kopie erzeugen.
Ich finde den Sprung von bash zu python besser. Oder autoIt auf C
Alter so einen szpanereren kampf hab ich noch nie gesehen das war unbeszreiblich.
Nice 😄
Da ist glaub ich ein kleiner Fehler in der Benennung der Zeitmarken: müsste es nicht Hello World in C und Python heißen ? Macht es nicht Sinn gleich mit c++ anzufangen. Das mache ich zumindest
4:48 ok übertreibs net
Das ist keine Übertreibung.
6:03 man macht: Python in C umwandeln C kompilieren
C++ vs C# wäre lustig :)
C++ wird bald gegen C und C# antreten.
@@Florian.Dalwigk Das große Triple Threat-Match!
Genau
C vs C++ vs C#
Kommt noch
ich mache immer _i: int = 42_
Jup, so kann man das machen
Dart vs Phython fände ich mal ganz spannend
Ich kenne Darts leider nicht, sorry
@@Florian.Dalwigk Wäre interessant gewesen, da Dart Javascript in besser sein soll und Server sowie Client Seitig funktioniert, also hätte mich Interessiert, ob es sich lohnt da zeit zu investieren oder weiter bei Python zu bleiben. Aber danke trotzdem für deine Antwort.
Ich habe mit C angefangen, find es nicht falsch sorum.
Falsch ist keiner der beiden Wege
00:40 "Python kann, wie auch C, für die objektorientierte Entwicklung von Programmen genutzt werden." - Glattweg falsch. C++ oder Objective-C vielleicht, aber da war im Video zuvor noch gar keine Rede von. Und C der Einfachheit halber mit C++ gleich setzen ist doch grob fahrlässig, wenn's hier um ein Lern-Video für Anfänger gehen soll...
Persönlich hasse ich Python echt wie die Pest, also war ich recht froh, dass unsere 1. Semester Vorlesung in C war.
Python ist für Programmieranfänger geeignet, wenn man erstmal "nur schnuppern" möchte. Langfristig würde ich auch C/C++ empfehlen.
Ich fände Nim vs. Python interessant
Ok
Bitte lieber Algorithmen verstehen,
wenn du auf ein anderes Video verweisen willst, verwende das Infocard Feature statt einen Link in der Beschreibung. Das macht die Navigation vor allem auf dem Handy viel einfacher. :)
Das ist mir in YT zu aufwendig einzustellen.
Sehr schönes Video ich wollte zuerst mit C anfangen war mir aber zu schwer. Daraufhin habe ich mit Python angefangen und konnte so C besser verstehen. Also als Anfänger empfehle ich Python so wie du es gesagt hast C ist schon schwer um damit anzufangen. Das Erlernen von C hat mir aber sehr viel Spaß gemacht ^^
ich mag ja eher powershell :)
😅
Man darf aber nicht vergessen, dass es in der Informatik nichts umsonst gibt. Wenn man in python programmiert hat man Bequemlichkeit, zahlt dafür aber einen Preis
Nämlich mit der Laufzeit
@@Florian.Dalwigk ja ich nin jetzt kein python basher. Numpy etc ist schon extrem nice. Wenn ich das in c machen muss hab ich schnell mal 10fachen code. Python kst halt extrem bequem. Sehe die Bequemlichkeit aber nur in der objektorientierten programmierung und dann kann man direkt c++ nehemen, da kann ich alles in x schreiben und wenn es nicht geht mach ich halt nen extern c
Ps. Matrix Multiplikation ist in python halt schon ehr nice, aber da kann kann man auch ne Bibliothek schreiben
why does python live on land? because it's above C level!
ich würde für Anfänger eher C empfehlen. da lernt man mehr, wodurch es später deutlich einfacher ist andere Sprachen zu lernen, und wird anders als in java nicht von unsinnig langen befehlen und objektorientierung überschwemmt. Solange es nur um grundlegendes geht finde ich C einfacher als java.
In Algorithmen und Datenstrukturen lernen wir C ^^
Du Armer 😂
@@Florian.Dalwigk Arme!
Hätte mich wohl Rhonda nennen sollen 😂 (Alfs Freundin auf Melmac)
Sorry 😳
@@Florian.Dalwigk hey, konntest du ja nicht wissen. sind halt nunmal auch etwas mehr Jungs als Mädchen hier 😉
Umso mehr freue ich mich um jede Frau, die hier zuschaut :)
Inwiefern kann ein Buffer Overflow im schlimmsten Fall ein Menschenleben kosten?
Wenn es sich um eine kritische Anwendung handelt, bspw. Raketenabwehrsystem. Es sind schon Menschen wegen Rundungsfehlern gestorben.
@@Florian.Dalwigk oder wenn jemand es schafft kritische Maschinen in zB einem Krankenhaus zum Absturz zu bringen
👆🏻also das Hello World von Nim hat einen Buchstaben weniger, das sehe ich als Sieg 😎
👍
C# finde ich nice :)
Läuft aber meines Wissens nach nur auf Windows vernünftig. Das ist zwar das am weitesten verbreitetste Desktop-Betriebssystem. Wenn man aber mal MacOS oder Linux benutzt (wie ich), lernt man es zu hassen, durch sowas "links liegen" gelassen zu werden.
Und die Lizenzierung ist bei C# nicht ganz so schön wie bei Java, Python oder C.
Aber von dem was ich gesehen habe, scheint es rein von den features her wirklich gut zu sein 😌
Korrigiert mich, wenn ich Falsches erzähle.
@@tayustgemil9285 C# läuft mittlerweile fast überall mit .NET 5 und auch Mobilgeräte werden mit .NET 6 voll unterstützt. Außerdem ist .NET mittlerweile auch Open Source
@@suchtendolp644 Ok, sry. Wenn das so ist, will ich nichts gesagt habdn
Also ich lerne C im ersten Semester
Du Armer
Ich finde C deutlich intuitiver und es hat den Vorteil, dass man deutlich weniger eingeschränkt wird. Python ist in Rohrform durch die Schwache Performance kaum zu gebrauchen. Der ganze KI, ML Kram usw läuft ja auch nicht nativ in Python. Mir kommt Python Entwicklung oft so vor als würde man ein einfaches Job Script schreiben in dem man 90% des Codes (meist in C geschrieben und Compiliert wegen der Performance) importiert und dann per Script die Funktionen aufruft.
pypy macht python schnell (mit JIT (Just-In-Time compilation)
@@maxsilvester1327 so richtig schnell ist Python trotzdem nicht
Wenn man Aufwand und Ertrag noch miteinbezieht kann das auch anders aussehen.
Bei regexprüfungen ist C++ grad mal 10% schneller (kenne den Vergleich zu C nicht) als Python und benötigt bis zu 50% mehr code.
Ein PC der 10% länger rechnet kostet u.u. weniger als ein Mitarbeiter der 50% länger programmieren muss
@@AnoNymous-ie3wc C lohnt sich vor allem bei großen Arrays usw.
C hat keine Default Werte für Datentypen. In Java, C++, C# usw hat ein int immer den Standardwert 0. Das hat beim Programmieren Vorteile, aber auch den Nachteil, dass das reservieren des Speichers unfassbar lange dauert. (T(n)).
Ein zweidimensionales Array mit n * n als Dimension MUSS beim Initialisieren für JEDEN Wert einzeln 0 in den Speicher schreiben. Das heißt, dass einfache reservieren eines Arrays hat schon eine Komplexität von O(n^2). In C ist es egal was da im Speicher war, es wird nur der Speicher reserviert, deshalb hat das einen Aufwand von O(1).
Es gibt viele, vor allem numerische Anwendungen, die in C deutlich besser zu Optimieren sind
Wenn Python gewonnen hat gegen Java, dann sollte C keine Chance haben 😂außer hier sind ganz viele performance seeker
Würde ich so nicht sagen. Ich glaube immer noch das Python für Anfänger eine der Besten Sprachen ist, aber es gibt auch viele gute Gründe für C, zumindest für Leute die auf lange Sicht in die Software Entwicklung gehen wollen.
C ist im Endeffekt eine extrem simple Sprache bei der man gleichzeitig eine Menge Grundlagen lernt. Klar kann man einiges falsch machen und für komplexere Programme würde ich's nicht benutzen, aber eigentlich sind die meisten Fehler die Anfänger in der Praxis antreffen werden ziemlich einleuchtend und leicht zu erklären und man kann daran außerdem sehr einfach viele zugrundeliegende Konzepte erklären die in Python versteckt sind. Viele von diesen Sachen spielen auch in Python eine Rolle, lassen sich da aber nur schwer erklären weil man den Hintergrund eben nicht wirklich sieht. Versuch z.B. mal einem Anfänger zu erklären warum wenn man eine Liste in Variable "a" hat und diese dann "b" zuweist und dann die Liste über "b" verändert sich auch die Liste in "a" ändert, das gleiche aber nicht passiert wenn man statt einer Liste eine Zahl verwendet. Klar geht das, aber im Endeffekt sind Pointer das zugrundeliegende Konzept und das kann man in Python halt einfach nicht wirklich zeigen. In C ist es dagegen offensichtlich. Außerdem halte ich es auch nicht für blöd Anfänger direkt statische Typisierung zu zeigen.
In Java hat man exakt die gleichen Probleme wie in Python, ich seh also wenig Gründe Java statt Python zu benutzen. Aber C ist eine sehr andere Sprache und ich kann durchaus verstehen warum z.B. das MIT teilweise mit C beginnt und dann zu Python wechselt um komplexere Algorithmen und Datenstrukturen, sowie Objektorientierung zu erklären.
Für Mathe/Physik/Chemie/etc.-Studenten oder Leute die einfach nur ein bisschen herumspielen wollen, z.B. auch sowas wie Sys-Admins oder Tester, ist das natürlich alles völlig egal, aber für Informatik Studenten die solide Grundlagen lernen sollen ergibt das durchaus Sinn.
I thought someone was s*** posting with the video title but alas... just German
Yes
boquita papá
Excuse me?
@@Florian.Dalwigk the character's shirt is from a soccer team called Boca or Boquita or also called Boquita papá
Ok, thanks for the Info. Is UA-cam translating this Video?
C im ersten Semester macht mir wirklich viel Spaß (nein).
Meh
Kommentaaaar
Top
C# lol
Warum nicht?
@@Florian.Dalwigk Ich schaue mir gerade sehr viele Videos von Dir an und versuche Python zu verstehen. Es kommt mir leider vor wie bei PHP. Ich mag Sprachen nicht die dynamische Typen verwenden. Ich bin wohl schon zu alt.
Ist Geschmackssache.
Finde Python muss man überhaupt nicht lernen 😂
?
Python mit dem Komischen Syntax ohne Klamern ist eine Programmiersprache von der ich mich versuche soweit wie möglich fernzuhalten
Ok
Python
Ist cool 😎
🐍