Basic = Schlecht
-
- Beiträge: 476
- Registriert: 23.03.2005 23:19
EnableExplicit ist ein wahrer Segen für PB. Nur so nebenbei.
Hier werden schon wieder Äpfel mit Birnen verglichen.
Fakt ist doch wohl:
- Menschen haben verschiedene Geschmäcker, deshalb auch verschiedene Sprachenvorlieben.
- PB ist einsteigerfreundlicher
- PB macht nen akzeptablen ASM Code im Vergleich mit allen existierenden Sprachen.
- PB macht nen schrecklichen ASM Code im Vergleich zu optimierenden Compilern
- PB untersützt zur Zeit kein SSE/SSE2/SSE3, etc...
- PB hat nur einen Compiler.
- C(++) hat viele Compiler. Deshalb kann der Output sacklangsam oder megaschnell sein, groß oder klein, je nachdem, welchen Compiler ich mit welchen Einstellungen nutze.
- C(++) hat ne sehr viel größere Community als PB, weshalb es auch alles für C(++) gibt und im Gegensatz dazu fast nichts für PB.
- C(++) ist aus den oben genannten Gründen mächtig.
- In C(++) kann ein gelernter Programmierer ebenso schnell Applikationen erstellen, wie in PB.
- Größere Projekte (50000 Zeilen+) sind ein Graus in PB, weil man schnell rudimentäre Dinge wie OOP, Templates und mächtige Libs vermisst.
- Kleinere Projekte (-1000 Zeilen) sind in C++ manchmal umständlich (und darauf reiten Basicer immer rum), weil man viel machen muss, um sich erstmal ne Plattform zu schaffen.
- C(++) ist was für Profis (und deswegen progge ich PB, weil ich kein Profi bin), die sich nicht mit intuitivem, aber umständlichen Syntax plagen wollen, die wie Neo hinter den code blicken können.
Hier werden schon wieder Äpfel mit Birnen verglichen.
Fakt ist doch wohl:
- Menschen haben verschiedene Geschmäcker, deshalb auch verschiedene Sprachenvorlieben.
- PB ist einsteigerfreundlicher
- PB macht nen akzeptablen ASM Code im Vergleich mit allen existierenden Sprachen.
- PB macht nen schrecklichen ASM Code im Vergleich zu optimierenden Compilern
- PB untersützt zur Zeit kein SSE/SSE2/SSE3, etc...
- PB hat nur einen Compiler.
- C(++) hat viele Compiler. Deshalb kann der Output sacklangsam oder megaschnell sein, groß oder klein, je nachdem, welchen Compiler ich mit welchen Einstellungen nutze.
- C(++) hat ne sehr viel größere Community als PB, weshalb es auch alles für C(++) gibt und im Gegensatz dazu fast nichts für PB.
- C(++) ist aus den oben genannten Gründen mächtig.
- In C(++) kann ein gelernter Programmierer ebenso schnell Applikationen erstellen, wie in PB.
- Größere Projekte (50000 Zeilen+) sind ein Graus in PB, weil man schnell rudimentäre Dinge wie OOP, Templates und mächtige Libs vermisst.
- Kleinere Projekte (-1000 Zeilen) sind in C++ manchmal umständlich (und darauf reiten Basicer immer rum), weil man viel machen muss, um sich erstmal ne Plattform zu schaffen.
- C(++) ist was für Profis (und deswegen progge ich PB, weil ich kein Profi bin), die sich nicht mit intuitivem, aber umständlichen Syntax plagen wollen, die wie Neo hinter den code blicken können.
Optimismus ist ein Mangel an Information.
Ist ja schön und gut. Aber hat nichts mit meiner Aussage im letzten Post zu tun.EnableExplicit ist ein wahrer Segen für PB. Nur so nebenbei.
Man muss trotzdem Nachschauen welchen Typ eine Variable hat wenn man es nicht mehr auf anhieb weis.Aktiviert (EnableExplicit) oder deaktiviert (DisableExplicit) den Explizit-Modus. Wenn aktiviert, werden alle nicht ausdrücklich mittels Define, Global, Protected, Static oder Shared deklarierten Variablen nicht akzeptiert und der Compiler wird eine Fehlermeldung ausgeben. Dies kann helfen, Schreibfehler bei der Verwendung von Variablen auszumerzen.
[PB4.20]
Ist ja schön und gut. Aber hat nichts mit meiner Aussage im letzten Post zu tun.
Darf man denn jetzt nur noch auf den jeweils vorherigen Post antworten?!
Darf man denn jetzt nur noch auf den jeweils vorherigen Post antworten?!



ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> Sowas kann man leicht vergessen wenn der Code mal Wochen oder Monate rumgelegen hat.
nö.
alles is Long. Nur wo es wirklich benötigt wird, isses Float.
ok, mittlerweile hat man auch quad und double,
aber die benutzt man eh nur, wenn man sich wirklich was bei gedacht hat.
und die mit nem $ am ende sind strings.
...wieso soll ich irgendwie typen nachschaun müssen?
PS:
wenn du da son problem mit hast, dann nimm halt eigene Prä- oder Suffixe.
nö.
alles is Long. Nur wo es wirklich benötigt wird, isses Float.
ok, mittlerweile hat man auch quad und double,
aber die benutzt man eh nur, wenn man sich wirklich was bei gedacht hat.
und die mit nem $ am ende sind strings.
...wieso soll ich irgendwie typen nachschaun müssen?
PS:
wenn du da son problem mit hast, dann nimm halt eigene Prä- oder Suffixe.
Code: Alles auswählen
L_Wert.l
; oder
Wert_L.l
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Recht hat er!
Datentypen wie Byte oder Word sind meist eh nur sinnvoll wenn Dateien ausgelesen oder geschrieben werden, und da sind die Variablen so oder so nur in der entsprechenden Procedure gültig. Alles andere, was innerhalb des Programms benutzt wird, ist meist Long, und Float nur in bestimmten Fällen. Und das $ am Ende eines Stringnamens ist eh fast Pflicht, vor allem wenn man an der "guten Basic-Syntax" so festhält
Datentypen wie Byte oder Word sind meist eh nur sinnvoll wenn Dateien ausgelesen oder geschrieben werden, und da sind die Variablen so oder so nur in der entsprechenden Procedure gültig. Alles andere, was innerhalb des Programms benutzt wird, ist meist Long, und Float nur in bestimmten Fällen. Und das $ am Ende eines Stringnamens ist eh fast Pflicht, vor allem wenn man an der "guten Basic-Syntax" so festhält



ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
das mit dem = und dem == stimmt schon. vergleich und zuweisung sind doch zwei völlig verschiedene sachen, wieso das gleiche zeichen? mir macht es zwar absolut keine umstände, würde aber gerne mal wissen warum das so geregelt wurde. hat das irgendwelche gründe im compilerbau?
in mathe schreibt sich die zuweisung ja := glaub ich. find' ich auch unschön, aber = ..ist doch quark. dann lieber a<13 oder a:13, ach was weiß ich
in mathe schreibt sich die zuweisung ja := glaub ich. find' ich auch unschön, aber = ..ist doch quark. dann lieber a<13 oder a:13, ach was weiß ich

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> hat das irgendwelche gründe im compilerbau?
nein. ursprünglich waren Zuweisung und Prüfung schon durch den Kontext eindeutig definiert.
in den ersten Basic-Varianten musste ein "Set" vor jeglicher zuweisung stehen.
auch heute ist es in Basic noch so, dass eigentlich eine Zuweisung
nicht im Kontext einer Prüfung stehen kann und umgekehrt.
aber in C geht das, und deshalb wurde es nötig, zwei unterschiedliche Zeichen zubenutzen.
mal etwas herausgerissen aus dem zusammenhang:
nur wenn die erste bedingung TRUE ist, wird die Zweite bearbeitet.
bei nem OR nur dann, wenn die erste False ist, der Ausdruck wird solange ausgewertet,
bis ein eindeutiges ergebnis vorliegt, dann bleibt der Rest unbearbeitet.
die Zweite ist aber eine Zuweisung, und ist damit immer True,
verändert also den Boolwert nicht, wird aber nur dann ausgeführt,
wenn die erste bedingung zutrifft.
klar, das hier ist unnütz, aber man kann damit wirklich abenteuerliche konstrukte bauen,
dass eine routine unter verschiedensten bedingungen ausgeführt wird,
aber ettliche Flags komplett andere werte haben, je nachdem, welche der verschachtelten Bedingungen zur ausführung führte.
PS:
und DAS ist eines der dinge, die C ausmachen.
wer das nicht kann, kann auch BASIC nehmen.
nein. ursprünglich waren Zuweisung und Prüfung schon durch den Kontext eindeutig definiert.
in den ersten Basic-Varianten musste ein "Set" vor jeglicher zuweisung stehen.
Code: Alles auswählen
Set A = 10
Set B = B+1
nicht im Kontext einer Prüfung stehen kann und umgekehrt.
aber in C geht das, und deshalb wurde es nötig, zwei unterschiedliche Zeichen zubenutzen.
mal etwas herausgerissen aus dem zusammenhang:
Code: Alles auswählen
If( (b==0) And (c=10) ....
bei nem OR nur dann, wenn die erste False ist, der Ausdruck wird solange ausgewertet,
bis ein eindeutiges ergebnis vorliegt, dann bleibt der Rest unbearbeitet.
die Zweite ist aber eine Zuweisung, und ist damit immer True,
verändert also den Boolwert nicht, wird aber nur dann ausgeführt,
wenn die erste bedingung zutrifft.
klar, das hier ist unnütz, aber man kann damit wirklich abenteuerliche konstrukte bauen,
dass eine routine unter verschiedensten bedingungen ausgeführt wird,
aber ettliche Flags komplett andere werte haben, je nachdem, welche der verschachtelten Bedingungen zur ausführung führte.
PS:
und DAS ist eines der dinge, die C ausmachen.
wer das nicht kann, kann auch BASIC nehmen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Hier das versprochene Beispiel für unleserlichen C-Code:
Das Programm berechnet Pi mit einer doch ganz guten Genauigkeit.
Code: Alles auswählen
int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5;for(;d=0,g= c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--, --b;d*=b);}
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Ursprünglich war es ein LETKaeru Gaman hat geschrieben:> hat das irgendwelche gründe im compilerbau?
nein. ursprünglich waren Zuweisung und Prüfung schon durch den Kontext eindeutig definiert.
in den ersten Basic-Varianten musste ein "Set" vor jeglicher zuweisung stehen.Code: Alles auswählen
Set A = 10 Set B = B+1
Code: Alles auswählen
10 LET A = 10
20 LET B = B + 1

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
