• 24.04.2024, 22:22
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 02:49

Hallo,

ich bin ein absoluter Anfänger was das Programieren angeht.
Ich habe versuchshalber nur mal die folgenden Zeilen unter Linux in KWrite geschrieben und unter f.c gespeichert:

#include <stdio.h>

int main(void)
{
printf("*****");

return(0);
}

Beim Kompilieren mit dem Befehl: cc -o f f.c
kommt immer die Fehlermeldung: kein Newline am Dateiende

Was heißt das? Was habe ich verkehrt gemacht?

Danke für die Hilfe!

ROBman

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 03:32

mach mal noch eine leere Zeile ans Ende deiner Datei und speichere.
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 04:19

hi, wenn es dir darum geht, programmieren im allgemeinen und nicht speziell C zu lernen, dann solltest du auch nicht mit C anfangen.

eine wirklich exzellente sprache sowohl zum einstieg als auch zum effektiven allzweck-programmieren ist python. wikipedia klärt auf: http://de.wikipedia.org/wiki/Python_%28Programmiersprache%29

es handelt sich um eine scriptsprache, du kommst also ohne compiler aus (und schließt damit schon mal ne menge probleme aus). zudem ist die syntax sehr einfach und klar.

ich habe dir mal zwei einführungen herausgesucht:
http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/index_ger.html
http://starship.python.net/crew/gherman/publications/tut-de/tut-de-21.pdf
die aktuelle python-version ist 2.4.1 und ein windows-installer-file bekommst du hier: http://python.org/ftp/python/2.4.1/python-2.4.1.msi

viel spaß beim programmieren :)


edit:
ich sehe grade, du redest ja selbst von linux. dort sollte python bereits installiert sein und du kannst in einer shell einfach über den befehl "python" die interaktive kommandozeile starten (und mit strg-d wieder beenden) um fröhlich draufloszuspielen.
wenn dir englisch keine probleme bereitet, bist du mit dem original-python-tutorial am besten bedient: http://docs.python.org/tut/tut.html

LaNcom

Senior Member

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 06:24

Versuch mal "cc f.c -o f" (anstelle von 'cc' geht auch 'gcc', in diesem Falle auch 'g++', dann übersetzt gcc das ganze als C++ Code), sollte problemlos funktionieren...

Python ist cool, vor Allem für Anfänger, auch weil's eine klare Formatierung des Codes vorraussetzt. Aber viele namhafte Hacker, vor allem aus der Linux-Welt, halten es auch und gerade deshalb für ziemlich hirntot - vielleicht, weil bei open source (oder Unix im Allgemeinen) der K&H Stil gängig ist, in dem man bei Python nicht wirklich arbeiten kann?

Egal, anstelle von C würde ich generell zu C++ raten, ist moderner und flexibler.


@Yogi:

Python beendet man mit Ctrl+D, Ctrl+C ist nur ein KeyboardInterrupt... :-)
"Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." -- Kristian Wilson, Nintendo, Inc, 1989.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 07:30

Zitat von »LaNcom«

Versuch mal "cc f.c -o f"

gewöhnlich schreibt man aber die optionen vor die eigentlichen argumente. unterm strich sollte das jedenfalls keinen unterschied machen.


Zitat von »LaNcom«

Python ist cool, vor Allem für Anfänger, auch weil's eine klare Formatierung des Codes vorraussetzt. Aber viele namhafte Hacker, vor allem aus der Linux-Welt, halten es auch und gerade deshalb für ziemlich hirntot - vielleicht, weil bei open source (oder Unix im Allgemeinen) der K&H Stil gängig ist, in dem man bei Python nicht wirklich arbeiten kann?

k&h? sagt mir nix, nur k&r - aber mit stil hat das weniger zu tun ;)

ach, das ist ein blödes vorurteil. onliner kriegt man auch so hin. und wer sich mit dem überflüssigen sonderzeichenmassaker in anderen sprachen auseinandersetzt, der kann sich ja wohl auch an einrückungen gewöhnen - im gegensatz dazu machen die nämlich durchaus sinn. und code wird gewöhnlich um ein vielfaches mehr gelesen als geschrieben.

wer meint, python wäre schlecht zu programmieren (z.b. wegen verpflichtender einrückung), der hat in meinen augen keine ahnung oder ist faul und voreingenommen gegenüber etwas, was einfach anders ist. wenn ich lisp sehe, krieg ich auch das würgen, aber trotzdem ist es eine exzellente sprache, mit der man die wildesten sachen zaubern kann.
und codeguides passen eben nicht auf alle sprachen, egal wie etabliert sie in teilbereichen sein mögen. um das beste rauszubekommen, muss man sich entsprechend auf die sprache einlassen.

und was die "namhaften hacker" angeht: ESR sacht, python ownz: http://www.linuxjournal.com/article/3882
und da muss erstmal was anderes kommen um das aufzuwiegen.

weiterhin schreibt er in DEM hacker-howto schlechthin:
http://www.catb.org/~esr/faqs/hacker-howto.html

Zitat von »LaNcom«

1. Learn how to program.

This, of course, is the fundamental hacking skill. If you don't know any computer languages, I recommend starting with Python. It is cleanly designed, well documented, and relatively kind to beginners. Despite being a good first language, it is not just a toy; it is very powerful and flexible and well suited for large projects.



Zitat von »LaNcom«

@Yogi:

Python beendet man mit Ctrl+D, Ctrl+C ist nur ein KeyboardInterrupt... :-)

oh, hast recht, hab mich vertan. auf jeden fall ist es nicht wie unter windows strg-z, denn das schiebt den prozess nur in den hintergrund.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 16:40

Danke,

die Leerzeile am Ende war es.
Ich möchte lieber bei C bleiben, weil Linux hauptsächlich darin geschrieben ist(und auch in C++).
C++ werde ich mir später mal anschauen, nur ist es nicht schlecht wenn man vorher mit C angefangen hat, weil C++ im Prinzip der Nachfolger ist.

MfG

ROBman

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 17:12

Warum muss man mit C anfangen um C++ zu lernen? Das ist Blödsinn. Lern gleich C++. So hab ichs auch gemacht und kann dir aus Erfahrung sagen, dass es KEIN Fehler war - eher im Gegenteil...

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

LaNcom

Senior Member

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 19:39

Yo, K&R meinte ich. Don't drink and post... :-)

Ich finde Python auch recht cool, habe aber mit was Anderem angefangen (PHP) und bin von da aus zu C++ gegangen, und kann mich nicht an Python gewöhnen... PHP ist zwar nix tolles, aber man kann halt extrem schlampig coden und muss nix compilieren, deshalb nehme ich das mittlerweile fürs Prototyping.

C++ ist halt mein Freund, meist in Verbindung mit Qt. C unter Linux ist eigentlich nur noch für libs und Core-Komponenten wichtig. Für Anwendungen unter KDE und Spiele ist C++ so ziemlich der Standard, viele gute GTK Programme sind auch C++ (Inkscape), und die Gnome Entwickler streiten sich seit langer Zeit, was in Zukunft die bevorzugte Sprache werden soll. Viele wollen bei C bleiben, Miguel will C# aber Novell eigentlich nicht - SUN und RedHat auch nicht, die denken an Java, und ein Großteil der neuen Programme sind unabhängig von den Streitereien in C++ geschrieben...
"Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." -- Kristian Wilson, Nintendo, Inc, 1989.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 19:44

C/C++ ist eine sprache, die zwar mächtig ist, aber mit der man auch sehr viele fehler machen kann. erst dadurch kommen z.b. viele programmabstürze und sicherheitslücken zustande. zudem dauert die entwicklung meist viel zu lange und ist in der heutigen zeit nur dann empfehlenswert, wenn es wirklich z.b. auf performance ankommt.

als beispiel: python-code ist etwa nur 1/10 so lang und die entwicklung dauert auch nur einen bruchteil der zeit. zudem ist der ganze kram deutlich wartbarer. (put all the other standard pros here).

übrigens ist unix auch das eine oder andere jahr älter ;) heutzutage werden sehr wichtige komponenten der distributionen in der tat in python geschrieben. dazu gehören beispielsweise installer und administration von red hat und fedora, der paketmanager emerge bei gentoo sowie installer, administration und diverse tools bei ubuntu.
zudem wird python erfolgreich seit jahren bei großen firmen wie ibm, google oder microsoft eingesetzt, weil es einfach effektiv ist. das tolle: man wird nicht mit irgendwelchem sprachklimbim aufgehalten, sondern kann sehr direkt das eigentlich problem selbst angehen und lösen.

wenn du dann die grundzüge des programmierens kannst, hast du für das erlernen weiterer sprachen gute voraussetzungen. andernfalls stehen dir die eigenheiten von z.b. auch C nur im weg.

edit: ich arbeite seit 4,5 jahren mit php. und ich habe es geringschätzen gelernt, weil es einfach halbgar ist (und wahrscheinlich auch nie gar werden wird). davor habe ich perl für webprogrammierung genutzt, das war nicht unbedingt schön. seit etwa drei jahren arbeite ich mit python und seit etwa einem jahr auch im bereich web. und ich muss sagen, das ist das beste, was mir in der richtung je passiert ist. ich bin dabei, meine größeren webprojekte zu migrieren und ältere zu archivierungszwecken in python neu zu schreiben.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 19:55

Wenn der Jung C / C++ lernen will, soll er das tun.
ich finde auch, daß py eine wunderbare Sprache ist, und sehr effizient, aber manche Sachen sind damit einfach nicht zu handeln.

und wirklich gezwungen "sauber" zu programmieren wird man mit py nicht (Stichwort dynamisches Typen von Variablen, wer eine Variable für zwei verschiedene Typen verwendet gehört öffentlich an den Pranger gestellt)
oder auch, daß z.B. sowas geht:
3 * "hallo "
(Ergebnis = "hallo hallo hallo ")
das ist zwar effizient (und genau das, was der benutzer haben möchte), aber meiner Meinung nach eben auch unsauber
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 20:04

nö, das finde ich persönlich nicht unsauber. zufällig habe ich kürzlich sowas in java gebraucht und das hat mich etwa ein halbes dutzend längerer zeilen gekostet >:(


ich gebe gerne meine guten erfahrungen weiter, aber ich habe generell das gefühl, dass viele konservativ reagieren und lieber bei ihren (meist schlechteren) lösungen bleiben. wer nicht will, der hat halt schon ;)

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 20:13

Ähmm... ob der Code nun etwas länger ist, dürfte doch keinen stören. Man soll sowieso seinen Source kommentieren und als Coder geh ich mal davon aus, dass man in der Lage ist zügig im 10-Finger-system tippen zu können (also mehr als 200 Anschläge pro Minute).

Insofern ist es total egal, ob ich ein Problem nun mit 1 oder mit 10 Zeilen Code lösen kann und dazu noch 5 Zeilen kommentiere, damit der Code für jeden (!) verständlich bleibt.

Ich für meinen Teil werde wohl erst zu Python wechseln, wenn ich von meinem Arbeitgeber bzw. im Studium dazu notwendigerweise gezwungen werde bzw. es unumgänglich ist bzw. auf der Tagesordnung im jeweiligen Betrieb steht ;)

MfG

Edit: Und, dass man ein Ergebnis bei 3 * "hallo" erzielt, ist für mich einfach nur .... unverständlich ;D
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: Problem beim kompilieren (C)

Donnerstag, 26. Mai 2005, 21:17

Zitat von »Saiya@ABI«

Ähmm... ob der Code nun etwas länger ist, dürfte doch keinen stören. Man soll sowieso seinen Source kommentieren und als Coder geh ich mal davon aus, dass man in der Lage ist zügig im 10-Finger-system tippen zu können (also mehr als 200 Anschläge pro Minute).

Insofern ist es total egal, ob ich ein Problem nun mit 1 oder mit 10 Zeilen Code lösen kann und dazu noch 5 Zeilen kommentiere, damit der Code für jeden (!) verständlich bleibt.

ach bitte, was ist das für ein quatsch? code kommentiert man, um zu erklären, was dahinter steckt. wenn man das in verschiendenen sprachen macht, ist z.b. der bezug zur realen welt gleich, folglich sind die kommentare gleich lang.
muss man kompliziertere teile von hand programmieren, die in anderen sprachen bereits eingebaut sind, kann man sich dafür auch die kommentare sparen, d.h. man hat nicht nur weniger code, sondern auch noch weniger kommentare.

so, und nun zum eigentlichen code. je mehr man davon hat, desto mehr fehler (logisch, in der umsetzung oder tippfehler) können sich einschleichen und bleiben auch entsprechend stärker unbemerkt. zudem ist eine seite code übersichtlicher als 2000 zeilen. man muss zusätzlich scrollen, suchfunktionen bemühen und eine IDE haben, die einem arbeit abnimmt, die man gar nicht haben sollte.

da spielt die zeit, die man braucht um den coden zu TIPPEN noch die allerkleineste rolle. aber auch den code zusammenzubekommen dauert seine zeit. es macht schon einen unterschied ob man wenige zeilen direkt aus dem kopf hinschreiben und sich dann mit dem nächsten problem befassen kann oder ob man erst nachschlagen muss, wie alltägliche probleme zu lösen sind. da vervielfacht sich die zeit für die entwicklung (und die ist heutzutage in den meisten fällen einfach viel wertvoller als die performance) schon um ein vielfaches.


Zitat von »Saiya@ABI«

Edit: Und, dass man ein Ergebnis bei 3 * "hallo" erzielt, ist für mich einfach nur .... unverständlich ;D

für mich leuchtet das aber sehr wohl ein. wenn du die zahl 2 verdreifachst (3 * 2) und das ergebnis addierst, bekommst du 6 heraus. wenn du einen string verdreifachst und die stücke aneinanderhängst, erhältst du eben obiges ergebnis.

Re: Problem beim kompilieren (C)

Freitag, 27. Mai 2005, 00:19

Ähh.. und WIE ein Problem mit Python gelöst wird, hat der Coder natürlich immer im Kopf und muss NIE nachschlagen ::)

Das sind keine Argumente imo.

Eine gute Funktion passt auf eine Bildschirmseite. Ja. ... Programmierer kaufen sich aber auch immer größere Bildschirme ;D

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: Problem beim kompilieren (C)

Freitag, 27. Mai 2005, 00:29

Zitat von »Y0Gi-warn-CodeNoobie«


(und schließt damit schon mal ne menge probleme aus).l


Und auch gleich alle Zielsysteme, für die kein Interpreter vorhanden ist. Ohne den Hintergrund zu kennen, ist das genau so einen tolle Idee, wie bei einer simplen Frage zur C Programmierung eine Diskussion über Phyton vom Zaun zu brechen.

Stellen wir uns mal vor, das Ziel von ROBman ist es, C zu lernen, um später einmal µC damit zu programmiern. Was fängt er in diesem Fall wohl mit Phyton an?

Re: Problem beim kompilieren (C)

Freitag, 27. Mai 2005, 02:09

y0Gi will nunmal am besten jedem User Python schmackhaft machen :)

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: Problem beim kompilieren (C)

Freitag, 27. Mai 2005, 03:32

Zitat von »Saiya@ABI«

Ähh.. und WIE ein Problem mit Python gelöst wird, hat der Coder natürlich immer im Kopf und muss NIE nachschlagen ::)

ich hab mich wohl unklar ausgedrückt. den logischen hintergrund in kommentaren festzuhalten macht natürlich immer sinn (sofern es nicht allzu trivial ist). das hat allerdings rein gar nichts damit zu tun, dass es durchaus besser ist, wenn man weniger und sauberen code benötigt, um das gleiche ziel zu erreichen.

unter nachschlagen verstehe ich sowas: ich will eine datei lesen. in python: ah, open(), genau. in java: hm, wie war das noch? buffer und stream und so? erstmal nachgucken. und das ist noch einer der simplen fälle. bis man die einfachen sachen in z.b. java drauf hat, muss man eine steile lernkurve erklimmen und danach wirds auch nicht viel besser. in python dagegen ist die lernkurve flach und steigt auch höchstens minimal weiter an.

wenn man also in der einen sprache noch umfangreiche kommentare benötigt um dinge zu erklären, die man selbst implementieren muss, die aber in der anderen sprache weit weniger aufwändig oder bereits "eingebaut" sind, dann ist da schon ein deutliches ungewicht.


Zitat von »Saiya@ABI«

y0Gi will nunmal am besten jedem User Python schmackhaft machen :)

ich will nur nicht, dass ihr dumm sterbt und eure zeit und nerven mit dem falschen werkzeug verschwendet ;)


Zitat von »Erklärbär«

Und auch gleich alle Zielsysteme, für die kein Interpreter vorhanden ist.

python ist für die meisten systeme vorhanden, für die es auch c-compiler gibt. hier eine _kleine_ liste:
Windows 95, 98, ME, NT4, 2000, XP, Win64, Linux, Mac OS X, OS/2, BeOS, Sparc Solaris, AIX, RISC OS (Acorn), AROS, AS/400, OS/390, z/OS, VMS, QNX, VxWorks, Palm OS, Psion, Sharp Zauros, Windows CE, Pocket PC, Sony Playstation 2. Wer mag, programmiert auch für sein Series 60-handy anwendungen in python: http://www.heise.de/ix/artikel/2005/06/128/
zu der liste gesellen sich noch weitere betriebssysteme, die mittlerweile nicht mehr unterstützt werden, mit älteren python-versionen aber noch funktionieren. diese wären: MS DOS, Windows 3.x, MacOS 9, SunOS 4, Linux 1, Irix 4, DYNIX, Minix, dgux.
Ich denke, da kommt man schon einigermaßen weit mit :)
Dabei muss natürlich noch hinzugefügt werden, dass der python-code sowie bytecode auf allen interpretern lauffähig ist, während im falle von C nicht nur die binaries, sondern auch in den meisten fällen der code selbst unportabel ist. vom angebot an libraries ganz zu schweigen.


Zitat von »Erklärbär«

Ohne den Hintergrund zu kennen, ist das genau so einen tolle Idee, wie bei einer simplen Frage zur C Programmierung eine Diskussion über Phyton vom Zaun zu brechen.

genau deswegen habe ich ja den hintergrund erfragt. und da mir der zum zeitpunkt meiner schreiblaune noch nicht bekannt war, habe ich aus verdacht mal etwas vorgeschlagen. kein grund, diese hilfe anzunehmen.


Zitat von »Erklärbär«

Stellen wir uns mal vor, das Ziel von ROBman ist es, C zu lernen, um später einmal µC damit zu programmiern. Was fängt er in diesem Fall wohl mit Phyton an?

wie er ganz zu anfang schrieb, möchte er anfangen, programmieren zu lernen. programmieren ist zum einen, das konzept und die syntax verschiedener sprachen zu lernen, um damit zu arbeiten. programmieren ist aber auch das viel elementarere verständnis der logik, die dahinter steckt. und genau um des eigentlichen programmierens willen, das er ja lernen will, habe ich ihm python empfohlen. dass python dann auch noch die code gewordene pseudoprogrammiersprache schlechthin ist, macht es da nur noch idealer.

er sagte nicht, dass er mal mikrocontroller programmieren will. falls doch wird er von grundlegendem programmierverständnis nur profitieren und dann in der praxis weniger probleme haben. es ist ungünstig, sich gerade als anfänger mit dingen herumschlagen zu müssen, die einem steine zum wirklichen lernziel in den weg legen.

Re: Problem beim kompilieren (C)

Montag, 30. Mai 2005, 03:30

Wer _richtig_ programmieren lernen will lernt gleich C++

Zitat von »Hobbes«

3 * "hallo "


Übrigens, mittels

string operator * ( int n, string s )
{
if( n <= 0 ) return "";
if( n == 1 ) return s;
return s+((n-1) * s);
}

ist das problemlos in C++ möglich ;-)

C++ ownz

Re: Problem beim kompilieren (C)

Montag, 30. Mai 2005, 03:58

;D ;D ;D

stimmt ja, echt viel übersichtlicher als die halbe zeile code die man in python benutzt hätte...
;D


das gute alte c würd ich aber auch links liegen lassen, da kommt man weiter wenn man mit c++ anfängt (oder auf c# geht, oder...)

wenn man denn bei c++ bleiben will!

der einstieg fällt mit python leichter, man lernt seinen code sauber zu strukturieren, kommt schneller zu nem ergebnis, hat tendenziell weniger probleme, kann codezeilen sogar einfach via trial&error austesten wo man sonst nachschlagen oder sein programm dutzende male kompilieren müsste, ...
und motivierter is man meist auch wenn man öfter mal n erfolgserlebnis (im sinne von nem laufendem programm) hat und ned nur über kryptischer syntax verzweifelt die (so prägnant se auch sein mag) n anfänger tatsächlich erschlagen kann...

und wenn die ersten progs dann laufen kann man sich gleich mit sachen wie oop befassen, python is für ne scriptsprache doch überraschend mächtig 8) ;)


naja, musst selber wissen was du lernen willst robman, mehr als ne empfehlung kann i da auch ned geben ;)

und was dein anfängliches problem angeht:
zum programmieren lernen gehört auch zu lernen diverse fehlermeldungen (richtig) zu interpretieren, meist verbringt man doch deutlich mehr zeit auf der fehlersuche als mit irgendwas anderm... :-X ;D

Re: Problem beim kompilieren (C)

Montag, 30. Mai 2005, 13:14

Zitat von »r1ppch3n«

;D ;D ;D

stimmt ja, echt viel übersichtlicher als die halbe zeile code die man in python benutzt hätte...


dat is doch nur das überladen von dem operator ;)
nachher kann man damit auch in c++ "3 * "hallo"" schreiben, wenn mans den wirklich braucht. also exakt dasselbe.

das nur am rande. in die diskussion klinke ich mich mich jetzt mal nicht direkt ein, weil in meinem arbeitsgebiet ist c/c++ nach wie vor das maß aller dinge und wirds auch noch laaange sein.
C programmers never die. They are just cast into void. Neues moddingtech.de Portal online!