1. Foren
  2. Kommentare
  3. OpenSource
  4. Alle Kommentare zum Artikel
  5. › Guadec15: "Beiträge zu freier…

"schwer zu erlernende C"

  1. Thema

Neues Thema Ansicht wechseln


  1. "schwer zu erlernende C"

    Autor: /mecki78 11.08.15 - 12:16

    Man kann C mit Sicherheit vieles vorwerfen, aber nicht dass es schwer zu erlernen ist. So ziemlich jede andere Sprache kann fast alle was C kann und noch deutlich mehr und ist somit auch deutlich schwieriger zu erlernen. C selber hat ja fast nichts an API und kann ja auch nicht viel, außer eben das, dass so ziemlich jede andere Sprache auch kann. JavaScript ist z.B. deutlich komplexer als C. Auch Java oder C# sind beide deutlich komplexer.

    C gehört lediglich zu einer Sprache, die eben kein automatisches Memory Management besitzt, d.h. man muss selber Speicher von System holen und dem System auch wieder zurück geben, es gibt ein Reference Counting und keine Garbage Collection, aber das System zu verstehen und die beiden Funktionen malloc und free zu kennen, das ist jetzt wirklich nicht schwer.

    Das System ein einem komplexen System richtig anzuwenden, dass ist jetzt vielleicht nicht ganz so einfach, aber das ist nicht Teil von "die Sprache erlernen". Man kann in jeder Sprache schlechten Code schreiben. Die Sprache erlernen heißt dass man die ganzen Grunddatentypen, Konstrukte und dessen Syntax kennt. Und hier ist C wie gesagt eine der limitiertesten Sprachen überhaupt.

    /Mecki

  2. Re: "schwer zu erlernende C"

    Autor: Der schwarze Ritter 11.08.15 - 12:23

    Na ja, die Grundlagen sind schnell gelernt. Er will eher darauf hinaus, dass C eben von Haus aus eher wenig kann, während andere Sprachen oft mächtige Frameworks mitbringen, die einem viel Arbeit abnehmen. In C muss man oft das Rad neu erfinden, wenn man nicht weiß, wo man eine Bibliothek für dieses oder jenes findet.

  3. Re: "schwer zu erlernende C"

    Autor: /mecki78 11.08.15 - 13:12

    Der schwarze Ritter schrieb:
    --------------------------------------------------------------------------------
    > In C muss man oft das Rad neu erfinden, wenn man nicht weiß,
    > wo man eine Bibliothek für dieses oder jenes findet.

    Das hat aber nichts mit "Sprache lernen" zu tun. Wenn du z.B. nicht weißt, dass es die C Library PCRE gibt, IMHO die beste Regex Library der Welt, denn C kann ja von Haus aus keine Regexen, dann kann mir dir das nicht vorhalten. Das ist ja nicht Teil der Sprache und du bist kein schlechter C Programmierer nur weil du das nicht weißt.

    Wenn du hingegen Java Programmiere bist und du nicht weißt, dass es die Klassen java.util.regex.* gibt, dann kann mir das sehr wohl vorhalten, weil die sind quasi Teil der Sprache, da man die Standard API sehr wohl der Sprache zurechnet bei Java, C# und auch bei diversen Skriptsprachen. D.h. das müsstest du als Java Programmierer eigentlich wissen.

    Sprache erlernen heißt erst die Sprache selber lernen (den blanken Sytnax) und dann die Standard Library ausreichen gut zu kennen - und hier hat C eben nicht viel zu bieten. Das was der C Standard bietet ist winzig. Man kann jetzt noch den POSIX Standard dazu nehmen, aber selbst das alles zusammen ist immer noch winzig verglichen mit anderen Sprachen. Bei anderen Sprachen hingegen kannst du dich Monate lang mit der API beschäftigen und kennst immer noch nicht alles... aber das ist wichtig, weil du musst wissen was die diese API bietet, um damit sinnvoll arbeiten zu können und eben nicht das Rad zehnmal neu zu erfinden.

    /Mecki



    1 mal bearbeitet, zuletzt am 11.08.15 13:12 durch /mecki78.

  4. Re: "schwer zu erlernende C"

    Autor: Lala Satalin Deviluke 11.08.15 - 13:28

    Höhere Sprachen wie C# nehmen einem aber die gesamte Speicherverwaltung ab. Das Problem ist, wenn man bei C bei der Speicherverwaltung Fehler macht, resultiert das in die Sicherheitslücken, die andauernd in jeder Software, egal ob frei oder nicht gefunden werden...

    Grüße vom Planeten Deviluke!

  5. Re: "schwer zu erlernende C"

    Autor: wasdeeh 11.08.15 - 14:37

    /mecki78 schrieb:
    --------------------------------------------------------------------------------

    > Sprache erlernen heißt erst die Sprache selber lernen (den blanken Sytnax)
    > und dann die Standard Library ausreichen gut zu kennen - und hier hat C
    > eben nicht viel zu bieten. Das was der C Standard bietet ist winzig. Man
    > kann jetzt noch den POSIX Standard dazu nehmen, aber selbst das alles
    > zusammen ist immer noch winzig verglichen mit anderen Sprachen. Bei anderen
    > Sprachen hingegen kannst du dich Monate lang mit der API beschäftigen und
    > kennst immer noch nicht alles... aber das ist wichtig, weil du musst wissen
    > was die diese API bietet, um damit sinnvoll arbeiten zu können und eben
    > nicht das Rad zehnmal neu zu erfinden.

    Und jetzt bitte noch erklären, warum das bei C jetzt kein Problem darstellem soll. Wenn ich die Funktionalität, die mir die Standard-APIs anderer Sprachen bieten, unter C nutzen will (und die über die standard library hinausgehen), passiert das mit Magie, oder was?
    Ausgerechnet das "Rad zehnmal neu erfinden" als Argument pro C...LOL.

  6. Re: "schwer zu erlernende C"

    Autor: wasdeeh 11.08.15 - 14:43

    /mecki78 schrieb:
    --------------------------------------------------------------------------------

    > Das System ein einem komplexen System richtig anzuwenden, dass ist jetzt
    > vielleicht nicht ganz so einfach, aber das ist nicht Teil von "die Sprache
    > erlernen".

    Sorry, aber wenn du eine Sprache nicht produktiv anwenden kannst, dann beherrscht du sie nicht.
    Und ja, damit meine ich: Man kann keine Programmiersprache lernen, wenn man die zugehörigen Konzepte, Systeme, Frameworks etc. nicht mitlernt. Und da ists bei C eben vorbei mit einfach, da der einfachen Syntax und Struktur eben Unmengen an Handarbeit, Fallstricken sowie ein Riesenhaufen an verschiedenen Libraries für Funktionen aller Art (die woanders im Standard drin sind) etc. gegenüberstehen. Und das alles gehört noch viel mehr zum erlernen einer Sprache als das beherrschen der Syntax.

  7. Re: "schwer zu erlernende C"

    Autor: BLi8819 11.08.15 - 18:00

    Was bringt es mir, die Vokabeln zu kennen, wenn ich diese nicht richtig zusammen setzen kann? Und zum Zusammensetzen gehört auch die Speicherverwaltung, um die ich mir bei Java, C# oder Java Script keine/weniger Gedanken machen muss.
    Wichtiger aber, bei Java, C# und Co. habe ich bereits viele Funktionen verfügbar, die ich in C erst selbst entwickeln müsste oder eben eine Bibliothek suchen. Es gibt viele mitgelieferte Klassen, wie z.B. die Klasse String, um mal ganz stupide Aufgaben zu nennen.

  8. Re: "schwer zu erlernende C"

    Autor: BilboBeutlin 11.08.15 - 18:20

    Wenn ich eure Antworten so lese, dann sind über 50 % aller Programmierer nur halbwissende. Jeder hat doch Wissenslücken und jeder weiß soviel wie es die Funktionalität erfordert. Bei Embedded-Systemen ist C eigentlich standard da kommt man mit Java, C#, etc. nicht weit. Also ich persönlich finde C leichter als alles andere, gerade weil die APIs mich völlig erschlagen haben ;)

  9. Re: "schwer zu erlernende C"

    Autor: Der schwarze Ritter 11.08.15 - 19:00

    Das ist bei Hardware ja auch völlig in Ordnung. Aber kein geistig gesunder Mensch käme auf die Idee, größere Business-Anwendungen in C zu schreiben. Gnome hat, wie viele andere Desktops, halt das Problem, dass es zwar eigentlich keine Business-Anwendung ist, aber eigentlich doch. Wüsste dennoch nichts, was gegen vernünftiges C++ sprechen würde, was ich hierbei definitiv bevorzugen würde.



    1 mal bearbeitet, zuletzt am 11.08.15 19:01 durch Der schwarze Ritter.

  10. Re: "schwer zu erlernende C"

    Autor: kernkraftzwerg 11.08.15 - 19:16

    C ist schwierig zu erlernen. Es hat viele Eigenheiten, die man erst so richtig versteht, wenn man eigentlich auch schon einen C-Compiler selbst schreiben könnte.

    Nur mal ein Beispiel:

    unsigned char x=0xff;
    if (~x == 0)
    {
    /* Reingelegt! */
    }

    Wenn man in einer beliebigen anderen Sprache einen vorzeichenlosen Byte-Wert negiert, kann man sich auch darauf verlassen, dass da nur ein Byte negiert wird. In C liegt es an der Sprachphilosophie, dass da vom Compiler kein zusätzlicher Code generiert wird, um den Int-Basistyp der Architektur abzuschneiden, daher ergibt das Negieren eines "unsigned char" auf den meisten Plattformen einen negativen Wert.

    Weiterhin "unerwartet" ist das komplette Fehlen von Konstanten und damit die merkwürdige Bedeutung von "const".

  11. Re: "schwer zu erlernende C"

    Autor: Milber 11.08.15 - 19:19

    Englisch ist schwer zu erlernen. Wenn man ab und zu das Gerund vergisst klingt es auch "komisch".
    Verdammt - wenn jemand das als Beruf macht dann hat er das auch zu können. Ansonst bleibt ja immer noch peek und poke.

  12. Re: "schwer zu erlernende C"

    Autor: BLi8819 11.08.15 - 21:09

    Je nach Anwendungsfall ist eine andere Sprache von Vorteil.
    Wie einfach diese zu erlernen ist, ist davon unabhängig.

    Ich habe die Erfahrung gemacht, dass die meisten mit Java schneller klar kommen als mit C.
    Ich finde es aber wichtig, dass man sich C ebenfalls aneignet, auf Grund der hohen Relevanz.

    Viele sind bei C aber auch einfach überfordert, weil es nicht nur das eine C gibt. Da gibt es ANSI C/ISO C, C99, C11, C++, Embedded C, C.Net. Dann muss man noch unterscheiden, ob man unter Win oder Linux programmiert und welchen Compiler man verwendet. Da wird man als Neuling erst einmal erschlagen ohne überhaupt auch nur ein Zeile Code geschrieben zu haben. Und dann soll man auch noch lernen, wie der PC den Speicher verwaltet und welche C-Funktion gefährlich sind (bzg. Buffer Overflow...) und welche nicht.

    Mit dem richtigen Buch bzw. dem richtigen Lehrer ist das aber alles kein Problem. Aber bei anderen Sprachen hat man eben einen schnelleren Start.

  13. Re: "schwer zu erlernende C"

    Autor: Proctrap 11.08.15 - 22:18

    C ist dann schwierig wenn es heisst sei sicher, keine Dataraces (event-basiert..), behandle mal eben Funktionen die woanders fertige Bibliotheken sind.

    In java ist es auch bspw. sehr einfach bei der IDE wahl und dem Compiler.
    Spätestens bei Eclipse haste alles zsam.

    Bei C wird dir jeder einen Haufen vorschlagen & dann noch teile der Sprache mit C++ vermischen.

    Vielleicht rede ich einfach gegen eine Wand, mir und ein paar Anderen ging es aber so & anscheinend schien es ein so wichtiger Punkt zu sein, dass er imVortrag gelandet ist.



    1 mal bearbeitet, zuletzt am 11.08.15 22:19 durch Proctrap.

  14. Re: "schwer zu erlernende C"

    Autor: Nephtys 11.08.15 - 22:44

    /mecki78 schrieb:
    --------------------------------------------------------------------------------
    > Man kann C mit Sicherheit vieles vorwerfen, aber nicht dass es schwer zu
    > erlernen ist. So ziemlich jede andere Sprache kann fast alle was C kann und
    > noch deutlich mehr und ist somit auch deutlich schwieriger zu erlernen. C
    > selber hat ja fast nichts an API und kann ja auch nicht viel, außer eben
    > das, dass so ziemlich jede andere Sprache auch kann. JavaScript ist z.B.
    > deutlich komplexer als C. Auch Java oder C# sind beide deutlich komplexer.
    >
    > C gehört lediglich zu einer Sprache, die eben kein automatisches Memory
    > Management besitzt, d.h. man muss selber Speicher von System holen und dem
    > System auch wieder zurück geben, es gibt ein Reference Counting und keine
    > Garbage Collection, aber das System zu verstehen und die beiden Funktionen
    > malloc und free zu kennen, das ist jetzt wirklich nicht schwer.
    >
    > Das System ein einem komplexen System richtig anzuwenden, dass ist jetzt
    > vielleicht nicht ganz so einfach, aber das ist nicht Teil von "die Sprache
    > erlernen". Man kann in jeder Sprache schlechten Code schreiben. Die Sprache
    > erlernen heißt dass man die ganzen Grunddatentypen, Konstrukte und dessen
    > Syntax kennt. Und hier ist C wie gesagt eine der limitiertesten Sprachen
    > überhaupt.

    Da hat jemand scheinbar noch nie mit Sachen wie gobjects arbeiten müssen, worum es hier letztlich geht.

    Nicht das Speichermanagement ist das Problem, sondern die Typ-Hierarchie. Bzw. die Kombination aus beidem.

    C sollte verboten gehören. Vorallem da Frameworks dort extra gezielt Features anderer Sprachen nachbauen. Warum dann C-Code schreiben? Effizient ist das Zeug dann auch nicht mehr.

  15. Re: "schwer zu erlernende C"

    Autor: Fringe 12.08.15 - 07:12

    C selber zu erlernen ist wirklich nicht schwer. Bei der Anwendung sieht das ganze wieder ganz anders aus. Wer unterschiedliche Programmiersprachen miteinander vergleicht wird schnell feststellen dass andere Programmiersprachen zwar hier oder da gewisse Vorzüge mit sich bringen, an anderen Stellen dafür aber mit Restriktionen daherkommen die es in C so nicht geben würde. C mag vlt. nicht für jeden Anwendungsbereich die optimale Sprache sein, das sind andere aber auch nicht.

    Und was die Speicherverwaltung angeht: Man bekommt seine Probleme mit wenn man C nicht anzuwenden weiß. Mit ner entsprechenden Architektur ist aber auch das kein Problem. Ein guter Anfang hierfür ist der systematische Aufbau von Dekonstruktoren, sprich zu jeder Methode die Speicher reserviert gleich die passende Methode bauen die ihn wieder freigibt. Wann man darauf dann zugreift ergibt sich während der weiteren Entwicklung von selbst. Somit ist das kein Argument für die "schwere" der Sprache. ;)

  16. Re: "schwer zu erlernende C"

    Autor: DerVorhangZuUndAlleFragenOffen 12.08.15 - 08:34

    Der schwarze Ritter schrieb:
    --------------------------------------------------------------------------------
    > Na ja, die Grundlagen sind schnell gelernt. Er will eher darauf hinaus,
    > dass C eben von Haus aus eher wenig kann, während andere Sprachen oft
    > mächtige Frameworks mitbringen, die einem viel Arbeit abnehmen. In C muss
    > man oft das Rad neu erfinden, wenn man nicht weiß, wo man eine Bibliothek
    > für dieses oder jenes findet.

    Naja... Aber sind wir doch mal ehrlich. Sobald man ein wirklich großes Projekt hat, ist die Sprache selber doch nur noch ein untergeordnetes Problem. Selbst das mitgelieferte Framework ist dann meist irgendwo zu kurz und zu lang. Dann baut man sich ein mehr oder minder kompliziertes Konstrukt aus fremden Libraries, eigenem Code und Erweiterungen von und für bestehende Typen aus dem Framework/Libraries zusammen. Das schenkt sich nicht bei den einzelnen Sprachen nicht viel. Die IDE-Unterstützung ist je nach Build-Framework auch mau. Der Vorteil bei C ist, dass man gerade aufgrund der Begrenztheit der sprachlichen Ausdrucksmöglichkeiten wirklich die Freiheit hat vieles beliebig zu gestalten. Es wird kein Pattern vorgegeben wie bei C++, C#, Java oder Scala. Stattdessen muss man sich selber ein Design-Paradigma aussuchen.

    "Entwickeln Sie ein positives Verhältnis zu Daten und freuen sie sich wenn wir mehr wissen!" ~Angela Merkel (12.06.2015)

  17. Re: "schwer zu erlernende C"

    Autor: BLi8819 12.08.15 - 09:38

    > Somit ist das kein Argument für die "schwere" der Sprache.

    Doch natürlich.
    Vielleicht ist "Komplizierter" das bessere Wort. Man muss mehr machen, um weniger zu erreichen.

  18. Re: "schwer zu erlernende C"

    Autor: Dampfnudeln 29.07.17 - 23:06

    Für mich ist C eine schwere Sprache.
    Ich finde es z.B. unglaublich komfortabel, dass ich mich bei Rust einfach von Fehler zu Fehler hangeln kann und gleichzeitig wegen den ausführlichen Beschreibungen auch noch lerne, was daran falsch ist. Bei meiner kurzen Zeit mit C hatte ich bei vielen Fehlern gar keine sichtbaren Auswirkungen. C ist also schlecht geeignet, wenn man lieber probiert, statt studiert.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. KWS Berlin GmbH, Einbeck
  2. Oerlikon Balzers Coating Germany GmbH, Bergisch Gladbach
  3. Universitätsklinikum Tübingen, Tübingen
  4. AWEK GmbH, Hamburg-Hammerbrook

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Mobile-Angebote
  1. 599€ (mit Rabattcode "PRIMA10" - Bestpreis!)
  2. 350,10€ (mit Rabattcode "PERFECTEBAY10" - Bestpreis!)
  3. 749€ (mit Rabattcode "PERFECTEBAY10" - Bestpreis!)
  4. 599€


Haben wir etwas übersehen?

E-Mail an news@golem.de


Logistik: Hamburg bekommt eine Röhre für autonome Warentransporte
Logistik
Hamburg bekommt eine Röhre für autonome Warentransporte

Ein Kölner Unternehmen will eine neue Elbunterquerung bauen, die nur für autonom fahrende Transporter gedacht ist.
Ein Bericht von Werner Pluta

  1. Intelligente Verkehrssysteme Wenn Autos an leeren Kreuzungen warten müssen
  2. Verkehr Akkuzüge sind günstiger als Brennstoffzellenzüge
  3. Hochgeschwindigkeitszug JR Central stellt neuen Shinkansen in Dienst

SSD vs. HDD: Die Zeit der Festplatte im Netzwerkspeicher läuft ab
SSD vs. HDD
Die Zeit der Festplatte im Netzwerkspeicher läuft ab

SSDs in NAS-Systemen sind lautlos, energieeffizient und schneller: Golem.de untersucht, ob es eine neue Referenz für Netzwerkspeicher gibt.
Ein Praxistest von Oliver Nickel

  1. Firecuda 120 Seagate bringt 4-TByte-SSD für Spieler

Philips-Leuchten-Konfigurator im Test: Die schicke Leuchte aus dem 3D-Drucker
Philips-Leuchten-Konfigurator im Test
Die schicke Leuchte aus dem 3D-Drucker

Signify bietet mit Philips My Creation die Möglichkeit, eigene Leuchten zu kreieren. Diese werden im 3D-Drucker gefertigt - und sind von überraschend guter Qualität. Golem.de hat eine güldene Leuchte entworfen.
Ein Test von Tobias Költzsch

  1. Smarte Leuchten mit Kurzschluss Netzteil-Rückruf bei Philips Hue Outdoor
  2. Signify Neue Lampen, Leuchten und Lightstrips von Philips Hue
  3. Signify Neue Philips-Hue-Produkte vorgestellt