Page 1 of 1

C

Posted: Sun 16 Sep, 2007 10:57 pm
by random
Oh man, wer hat sich nur C ausgedacht *geil*
Mal in ner halben Abendstunde langeweile gehabt...
Das hier läuft :twisted: :twisted: :twisted:

N thp(J *s, ... K P VL g;N i=0; J*p=0; M N t=0;VS(
tag, s);D S s K P C'%'H P S L Z K K P C'i'H P t=VA
(g, N);I t<0 K P F'-'XX t=-t; Q p=L J*K t; I!t K F
48 XX E O i=MAX_NUM_DEC;i; i/=10 K P I(N K p/i K P
F L t/i K+48 XX t%=i; Q Q Q Q B C'c'H P F L J K VA
(g,N)XX Q B C's'H P p=VA(g, J*);D F*p XX Q W*p++ G
Q B Q Q B C'\\'H P S L Z K K P C'n':F'\n'XX B C't'
:F'\t'XX B Q Q B Y F*s XX Q Q W*L Z K G VE(g);R 0 G Q

Wenn ich das verfeinert hab, mach ich glaub ich mal bei diesem OCC mit ;-)

Aber ich finde es schon lustig, wie man auf diese Weise ein Programm __völlig__ unlesbar machen kann *grins*


Greetz,
/r.


PS: natürlich läufts nicht ohne die #defines:
#define VL va_list
#define VS va_start
#define VA va_arg
#define VE va_end
#define X stdout);
#define F fputc(
#define S switch(*
#define K )
#define L (
#define D do{
#define I if(
#define Y default:
#define C case
#define B break;
#define Z ++s
#define W while(
#define J char
#define N int
#define R return(
#define M signed
#define E else{
#define g tag
#define O for(
#define P {
#define Q }
#define G );
#define H :
#define XX ,X



spätestens wenn man in seinem sourcecode solche sachen macht, sollte man sich mal Gedanken machen 8)

led_out(1<<(i=i<7?i++:0));


C macht Spass !!!


Axxo:

aufruf:
thp( printf formatstring );

also:
thp("Hello, World");
thp("\nString %s = Number: %i on char %c", string, number, c);

Posted: Sun 16 Sep, 2007 11:42 pm
by gento
10 Gründe, warum Pascal besser ist als C

1. Pascal wurde als vornehme Sprache nach einem berühmten französischen Mathematiker und Philosph, Blaise Pascal, benannt. C wurde nach einem Darsteller in der Sesamstraße benannt.

2. Pascals Erfinder, Niklaus Wirth, und Konventionen, Parameter zu übergeben, erlauben ein geschicktes Wortspiel: Man kann seinen Namen aussprechen als Referenz: Wirth, oder als Wert: Worth. C wurde in den Bell-Labs erfunden, wo man bestimmt keinen Witz von einem Transistor kennt.

3. Es gibt nur ein Pascal, das von Wirth definiert wurde, während C (sollen wir es sagen?) mehrere Väter hat: Kerninghan & Ritchie, Harbison & Steele, Barnum & Bailey und Laurel & Hardy.

4. In C sind die folgenden Variablen alle verschieden: thesame, TheSame, theSame und THESAME. Das sagt alles.

5. Wenn man in Pascal mit einem Zeiger oder einem Handle spielt, weiß man, dass man mit einem Zeiger oder einem Handle spielt. In C könnte man mit allem spielen. C ist die ultimative Sprache für häufigen Computerwechsel.

6. In Pascal *wissen* wir, wie groß ein Integer ist.

7. C wird von Liberalen, Demokraten und Programmierertypen wie Mike Dukakis verwendet. Pascal ist ein Favorit der Konservativen. Hey, wir wissen, welches die große Programmiersprache in Berkeley ist, oder?

8. C ist die einzige Sprache in der zivilisierten Welt, die es immer noch ablehnt, das Dollarzeichen für hexadezimale Konstanten anzuerkenen, und fortfährt dafür zu werben, dass diese Basis Anspruch auf den Thron hat: 0x00.

9. Pascal hat gut definierte Regeln für Scope*, während es scheint, dass C Listerine* verwendet. Das erklärt den medizinisch-alkoholischen Atem vieler C-Programmierer.
* Scope und Listerine sind zwei Marken von Mundwasser in den USA; in einer Werbekampagne verbreitete Scope, dass Listerine-Nutzer "medicine breath" hätten.

10. In C kann man dieses tun:
for(;P("\n").R-;P("|"))for(e=3DC;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
In Pascal kann man dieses NICHT tun:
for(;P("\n").R-;P("|"))for(e=3DC;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

Gento

Quelle :www.dsdt.info

Posted: Mon 17 Sep, 2007 9:12 am
by random
Gut recherchiert!

Letztere Zeilen stammen wohl vom http://www.ioccc.org/ oder von der Scherzeinführung, wie C entstanden ist.

Man sagt ja nicht umsonst, lerne Pascal, bevor du C lernst. Weil Pascal einfach eine der saubersten Programmiersprachen ist.

Das mit dem Integer ist aber gar nicht so schlecht, man muss nur bei seiner Architektur drauf achten.
(int) ist immer mind. 16Bit gross, bei >8Bit Architekturen die Wortbreite (also 32Bit bei ARM).
Mit #ifdef und typedef kann man sich da flexibel halten.


Wenn man des C mächtig ist, kann man soo viele schöne Sachen machen ;-)
Das oben ist nur mal ein kranker Zeitvertreib :twisted:


Greetz,
/r.

Posted: Mon 17 Sep, 2007 11:09 am
by deadeye5589
C hat den Vorteil, daß es die einzige Programmiersprache ist, mit der man auch Hardware anstelle von Assambler programmieren kann. Ansonsten bin ich klar für Brainfuck als Programmiersprache. Da zeigt sich, wer Pointer beherscht :P

Posted: Mon 17 Sep, 2007 11:30 am
by mackel
Achja,

die Programmiersprachen-Streiterei hat auch dieses Forum endgültig erreicht. :-P

Also ich bevorzuge Java, C# danach kommt dann C(++) und VB(.net)

Hab früher mit VB angefangen, bin dann wegen der Beschränkungen die VB hat, mit C++ angefangen, um mir kleine Librarys für VB zu schreiben, mit denen ich dann "Systemnah" arbeiten konnte. In C++ hab ich eigendlich immer nur Consolenprogramme oder Librarys gebaut. Mit GUIs unter C++ konnt ich nie was anfangen....

Dann hab ich in der Ausbildung Java gelernt ! Das war erstmal richtig geil. GUIs schnell selberbeisteln. Eine gute Syntax und super für OOP. Dazu noch recht easy. Irgendwann hab ich .net kennen gelernt. Erst noch so ein bisschen VB.net aber da mir die Syntax nicht mehr gefiel, hab ich mich c# genähert, und jetzt programmier ich mit c# und wenn nicht vermeidbar c++.

Jeder macht so seine Entwicklung durch bis er dann die Sprache seiner Wahl gefunden hat...

Und ... Ordnung gehört zum Programmieren wie auch in jede Werkstatt.:roll:
Keine Ordnung: Findste nix wieder. Alles versinkt so langsam im Chaos!

Inlines sollte man vermeiden, da leidet meistens die Struktur drunter. Und das Gerücht das es schneller ist, ist auch nicht wahr.
Manchmal mach ich das auch und ist bei kleinen Sachen auch Vorteilhaft.

Aber dieses "angeberisch" hingeschriebenen "Mordszeilen" sind echt "harakiri". Schau in so einen Code mal nach 1 oder 2 Jahren rein. Bahnhof ? :P

Mackel

Posted: Mon 17 Sep, 2007 11:49 am
by deadeye5589
Schau dir Brainfuck an, da ist nach 30 Sekunden schon der Bahnhof erreicht. Es gibt zwar nur 8 Befehle die reichen aber aus.

http://de.wikipedia.org/wiki/Brainfuck

Posted: Mon 17 Sep, 2007 1:07 pm
by random
schon mal gesehen, das macht einen echt konfus in den windungen ;-)

Ich finde das bei C gerade gut, dass man alles selber machen muss.

Nimmt man die interpretierten (basic), oder auch Java, bekommt man bereits sehr mächtige codeblöcke mitgeliefert -> klarer vorteil!

Nur, was die meisten vergessen:
Letztenendes beruhen diese programmiersprachen auch wieder auf code, der in C (ok, vllt einige wenige in asm) geschrieben wurde ... einen basic interpreter oder eine java vm kann man nicht in basic oder java schreiben ;-)

Vor allem kann man in C schlanken code schreiben, der bei heutigen compilern (z.B. der armcc) pure asm konkurenz macht!

Das oben sind übrigends 200+4 Byte asm-code!


btw: basic kommt mir genausowenig aufn µC wie java (arm9...J einmal ausgenommen) :twisted:

Aber es kommt halt drauf an, was man machen will.
Hardwarenah asm oder C,
abstrakt (z.B. GUI): Java, (V)B, etc...


Ich für meinen Geschmakk betrachte die Basic-derivate ja als spielkram (*sorry* wenn ich damit jemandem auf die füsse trete).
Das originale Basic (C64, QBasic, ...) sowie die Visual-aufsätze ist ja fast wie ein englischer text lesbar ;-)
Heisst ja auch nicht umsonst: Beginner’s All-Purpose Symbolic Instruction Code, was soviel bedeutet, dass mit kleiner einarbeitung jeder *** so was "programmieren" kann :twisted:
Ich finds immer wieder lustig, wenn die Exel/Word-bediener mich fragen, wie man doch das eine oder andere als formel hinbekommt.
Und obwohl ich nur wenig ahnung von exel/word habe (I prefer TeX), kann ich doch immer wieder helfen ;-) Ich möcht's nu nicht als "Tippsenprogrammiersprache" abstempeln, weil ich selbst damit aufm C64 angefangen habe..., aber so war's mal gedacht! Hinführung der Leute an eine richtige Programmiersprache.

Erst später gabs dann ja die Basic-"Compiler", die schon mal etwas schnelleren Code erzeugten... Genaugenommen ist Basic ja nichts viel anderes als die heutigen scriptsprachen...



Greetz,
/r.

(ohoh, das gibt nu wieder haue :twisted: )

Posted: Mon 17 Sep, 2007 1:31 pm
by mackel
Hi,

jo, Brainfuck macht seinem Namen da alle Ehre. Kannte es selber noch nicht.
Hab bei wikipedia nachgeschaut.
Also schon das Hello-World Dingen hat mich ein wenig verwirrt. :P

Aber das Ziel war ja auch wohl einen Compiler unter 200 Byte zu schreiben, was er dann ja auch schaffte.

Aber das Resultat ist aber eher Dürftig. :-P

Zu C:
Es ist klar, das C für viele Sachen einen Basis darstellt, und es ist mit Ausnahme von ASM das Systemnahste was du haben kannst. Doch du hast es nicht so konfortable wie bei anderen Sprachen. Viel wird dir da schon bereitgestellt, und du kannst dien Projekt sehr viel schneller durchziehen. Deshalb greife ich ja nur wenn's heikel wird auf C zurück. (Microcontroller, I/O, ...)

Mackel

Posted: Mon 17 Sep, 2007 4:01 pm
by deadeye5589
Eigentlich ist bei sicherheitsrelevanter Hardware ASM sogar dem C vor zu ziehen. Man weiß ja leider nicht, wie der Compiler den C Code in Assambler übersetzt und da ändert sich schon mal gerne was von Version zu Version. Da hat man dann keine Idee, wo dieser eine Fehler herkommt und sucht sich tagelang einen Wolf, bis man merkt das Version b zwei Zeilen anders übersetzt als Version a mit der das Programm ursprünglich getestet wurde.

Ansonsten kriegt man mit den .NET MFC Klassen auch recht schnell graphische Oberflächen hin und mit nem bissel mehr Aufwand ist man dann auch schnell bei DirectX.

Java ist dafür schön Plattformunabhänig. Und man muss sich nicht mit den Pointer quälen. Aber wie schon mein Informatikprof sagte: "Java ist für Maschbauer, die großen Jungs spielen lieber mit C"

Posted: Wed 19 Sep, 2007 7:41 pm
by netdiver
Also die Mutter aller Programmiersprachen ist ja immer noch Vatical

C++heckt mal das hier

.. und noch ein paar Varianten über Google.

Posted: Wed 19 Sep, 2007 9:49 pm
by sanaia
ist das zufällig ein april-release ... ?

Und ich dachte schon 'rgscript' mit seinen 12 MAC-registern, die ausschließlich über nummern indiziert werden, wäre der supergau ...

Posted: Wed 19 Sep, 2007 10:08 pm
by floh
C ist Meister darin in einem Programm das aus 5 Zeilen Code besteht hunderte Fehler anzuzeigen nur weil ein einziges Semikolon fehlt :wink:

Da lobe ich mir den alten Basic Befehl ON ERROR RESUME der damals bei meinen Programmen stets zuoberst stand :twisted:

Ich habe übrigens meine ersten Programmierschritte im Alter von etwa acht Jahren in HyperCard getätigt. Das war schon objektorientiert als die meisten Hobbyprogrammierer noch nicht mal wussten wie man das schreibt.

Posted: Wed 19 Sep, 2007 10:20 pm
by deadeye5589
hmm vatical ist so ählich wie chef oder shakespeare

Hallo-Welt-Soufflee

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl.
Put dijon mustard into the mixing bowl.
Put lard into the mixing bowl.
Put red salmon into the mixing bowl.
Put oil into the mixing bowl.
Put water into the mixing bowl.
Put zucchinis into the mixing bowl.
Put oil into the mixing bowl.
Put lard into the mixing bowl.
Put lard into the mixing bowl.
Put eggs into the mixing bowl.
Put haricot beans into the mixing bowl.
Liquefy contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.

Serves 1.

Posted: Thu 20 Sep, 2007 8:33 am
by sanaia
floh wrote:Da lobe ich mir den alten Basic Befehl ON ERROR RESUME
Wer immer diesen befehl erfunden hat, war zu faul zum fehler suchen ... ;)
Man denke nur an sowas:

Code: Select all

circle_diameter = 1 / blablabla;
WriteCircleToLaser(circle_diameter);
Das ergäbe mit 'blablabla=0' anstelle der "welcher idiot hat das programmiert ?" fehlermeldung eine fette photonenramme ins auge des betrachters.

Posted: Thu 20 Sep, 2007 3:23 pm
by mackel
So welche faulen Leute giebts aber auch bei c#,Java und c++ !!

Code: Select all

try{
float circle_diameter = 1 / blablabla;
WriteCircleToLaser(circle_diameter);
}catch(...){
PointLaserToProgrammersEye();
}
Nur mit dem Unterschied das hier Konsequenzen folgen. :twisted:

Posted: Thu 20 Sep, 2007 3:57 pm
by sanaia
BTW: ICC v10 ist raus und kostenlos für linux-codende privatanwender. Ein muss, wenn man alle kerne beschäftigen will.