myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Fragen an erfahrene C Programmierer (https://mygully.com/showthread.php?t=6614314)

bygy 30.12.21 21:35

Fragen an erfahrene C Programmierer
 
Hi ,

wollte mal die erfahrenen C Programmierer paar fragen stellen .
Was hat euch dabei geholfen das Programmierverständnis / das Algorithmische Denken am Anfang zu erlernen ?
Wie seit Ihr neue Projekte am Anfang angegangen , ich finde es relativ noch schwierig reale Probleme / Objekte in Code umzusetzen
Würde mich freuen mal Erfahrungen von andere Programmierer zu hören .

Vielen vielen Dank
BG

pkroll 08.04.23 18:12

Es gibt bestimmt, C Coder mit weitaus mehr Erfahrung als meiner einer, aber beim Überfliegen dieser "Programmierung" Kategorie, machen meine Nackenhaare einen Lamb(a)datanz.

Ohne jetzt auf Begriffe wie Abstraktionsvermögen, Induktion, Deduktion, ... einzugehen.

PROGRAMMIEREN LERNT MAN DURCH PRAKTISCHES PROGRAMMIEREN.
Hört sich nicht befriedigend an, ist aber der Schlüssel zum Erfolg.

Gruß, ein (verstaubter) Coder :)

Dolleknolle87 16.04.23 13:15

@burgy
kann auch nur empfehlen so viel wie möglich zu programmieren.
Ist ein wenig ähnlich wie wenn man Spanisch lernen will, Grammatik und Vokabular muss man so viel wie möglich nutzen also sprechen und Übungen machen.

C ist dabei etwas besonders, weil esso ne Art Einstiegshürde hat,
Einerseits ist die Sprache sehr low Level, das heißt es ist nah an der maschiene und nicht direkt der super Problemlöser.
Andererseits gibt es viel Oldschool Tooling. Zum beispiel gibt es keine superschick Projektdateien und einbindnug von Libraries wirkt anfangs ziemlich umständlich.
Außerdem gibt es eine große Varianz an Herangehensweisen, ob nun Arduino, Windowsprogramierung, hardcore Embedded oder Linux Systemprogrammierung.

Ich kann empfehlen unter Linux anzufangen, CMake als Projekt nud Buildsystem zu benutzen, und nen Buch über Algorithmen durch zu exerzieren.

Hier noch ein paar Links
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

coole Miniaufgaben:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
<-- das ist nen sehr pupolare Coding Challange und man findet viele Lösungen im Netz

Happy Coding!

d33r 24.04.23 08:20

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] ist ne sehr gute Anlaufadresse für kleinere Algorithmikaufgaben.

Library 30.04.23 01:06

Das bisher gesagt passt schon. Wobei ich so früh wie möglich nicht nur kleine Programmieraufgaben und -rätsel sondern auch Programme mit praktischem Wert schreiben würde. Außerdem solltest du nicht unterschätzen, wie viel du lernen kannst, guten Code zu lesen. Schau dir z.B. Software aus dem OpenBSD Projekt an.
Wenn du ein Open Source Projekt findest, was dich interessiert, kannst du beides miteinander verbinden, indem du dich dort beteiligst. Im besten Fall bekommst du da von anderen auch Feedback.

Master_3 22.05.23 02:33

Also ich steige hier mal als Laie ein auch wenn nach erfahrenen Programmierern gefragt wurde:

Meiner Meinung nach ist das wichtigste beim Programmieren lernen sich nicht einfach Codeschnipsel zu ergoogeln und dann die Füße hochzulegen - das funktioniert halt nur für die kleinsten mini Tools u.ä...
Wichtig ist, in diesem Anfangsstadium den Code wirklich noch selber aufzuarbeiten und zu verstehen, was dieser Code bewirkt - dann ergeben sich drauß auch automatisch Abwandelungen die neue Wege eröffnen.

Dann wirst du deinen Code schreiben und wenn du damit fertig bist, wirst du für deine 100 Zeilen Code einen 5 Zeilen Code Block im Netz finden und graue Haare bekommen, aber bedenke, dass du 100 Zeilen Code dadurch geübt hast und mehr:
Übersicht über den Code behalten, klassische Fehler machen+finden+ausmerzen, ein Glücksgefühl haben wenn deine 100 Zeilen Code trotzdem funktioniert haben.

Ich gebe dir ein Beispiel das ich erst vor ein paar Tagen selber hatte, es ging darum die MAC -Adresse des ausführenden PC´s auszulesen und zusätzlich in eine Textdatei an eine bestimmte Stelle einzufügen - letzteres war das geringste Problem, aber an die MAC zu kommen und diese nach meinen Bedürfnissen zur Hand zu haben sah dann so aus:

Ausgangscode
Code:

Dim Mac As NetworkInterface
                        For Each Mac In NetworkInterface.GetAllNetworkInterfaces()
                            With Mac
                                If .NetworkInterfaceType <> NetworkInterfaceType.Loopback AndAlso
                            .NetworkInterfaceType <> NetworkInterfaceType.Tunnel Then
                                  Listbox1.items.add(.Name.ToString & .getphysicaladress.ToString)

Der Code geht, er zeigt jedoch alle Macs aller aktiven Netzwerkmodule an - also auch neben Lan die anderen üblichen Verdächtigen VPN, Wlan, usw. und ich brauchte nur die LAN Verbindung.

Also musste ich genauer differenzieren um nur die LAN MAC ausgegeben zu bekommen um sie dann in die Textdatei einzufügen.

Code:

Dim Mac As NetworkInterface
                        For Each Mac In NetworkInterface.GetAllNetworkInterfaces()
                            With Mac
                                If .NetworkInterfaceType <> NetworkInterfaceType.Loopback AndAlso
                            .NetworkInterfaceType <> NetworkInterfaceType.Tunnel Then
                                    If .Name = "LAN" Then
                                        Dim LAN = .GetPhysicalAddress.ToString

                                        Dim txt = IO.File.ReadAllText("C:\XXXXXX\XXXXX.txt")
                                        txt = txt.Replace("this_MAC", LAN)
                                        IO.File.WriteAllText("C:\XXXXXX\XXXXX.txt", txt)
                                    End If
                                End If
                            End With
                        Next

Die Mac Adresse durfte in der fertigen Textdatei nur Zahlen + Kleinbuchstaben enthalten, ergo "ToLower" hinzugefügt

Code:

Dim Mac As NetworkInterface
                        For Each Mac In NetworkInterface.GetAllNetworkInterfaces()
                            With Mac
                                If .NetworkInterfaceType <> NetworkInterfaceType.Loopback AndAlso
                            .NetworkInterfaceType <> NetworkInterfaceType.Tunnel Then
                                    If .Name = "LAN" Then
                                        Dim LAN = .GetPhysicalAddress.ToString.ToLower
                                        Dim txt = IO.File.ReadAllText("C:\XXXXXX\XXXXX.txt")
                                        txt = txt.Replace("this_MAC", LAN)
                                        IO.File.WriteAllText("C:\XXXXXX\XXXXX.txt", txt)
                                    End If
                                End If
                            End With
                        Next

Der Code tat was ich wollte - jetzt hätte man hier aufhören können, aber ich finde da liegt dann der Reiz, "kann ich das zuverlässig kürzen?"

Und dann fiel mir auf, dass die "DIM LAN" überflüssig war und ich den ".GetPhysicalAddress.ToString.ToLower" direkt in die "txt.replace" Funktion einbauen konnte, da ich ja bereits oben mit dem "If .Name = "LAN" " bereits eingegrenzt hatte:

Code:

Dim Mac As NetworkInterface
                        For Each Mac In NetworkInterface.GetAllNetworkInterfaces()
                            With Mac
                                If .NetworkInterfaceType <> NetworkInterfaceType.Loopback AndAlso
                            .NetworkInterfaceType <> NetworkInterfaceType.Tunnel Then
                                  If .Name = "LAN" Then
                                      Dim LAN = .GetPhysicalAddress.ToString.ToLower
                                        Dim txt = IO.File.ReadAllText("C:\XXXXXX\XXXXX.txt")
                                        txt = txt.Replace("this_MAC", .GetPhysicalAddress.ToString.ToLower)
                                        IO.File.WriteAllText("C:\XXXXXX\XXXXX.txt", txt)
                                    End If
                                End If
                            End With
                        Next

Und es wird garantiert dafür elegantere Lösungen geben, die ich entweder nicht kenne oder sie schlicht übersehen habe, aber so ist es nunmal - man entwickelt sich dadurch weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.