Basic = Schlecht

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Man muss es nicht aber ich gebe den Typ trotzdem immer an.
Das erspart mir ständiges nachgucken (bei langen Codes) welchen Typ die ein oder andere Variable hat.
Sowas kann man leicht vergessen wenn der Code mal Wochen oder Monate rumgelegen hat.
[PB4.20]
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

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.
Optimismus ist ein Mangel an Information.
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

EnableExplicit ist ein wahrer Segen für PB. Nur so nebenbei.
Ist ja schön und gut. Aber hat nichts mit meiner Aussage im letzten Post zu tun.
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.
Man muss trotzdem Nachschauen welchen Typ eine Variable hat wenn man es nicht mehr auf anhieb weis.
[PB4.20]
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

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?! :roll:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> 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.

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.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

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 :mrgreen:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

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 8)
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> 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
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:

Code: Alles auswählen

If( (b==0) And (c=10) ....
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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag von Eric »

Hier das versprochene Beispiel für unleserlichen C-Code:

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);}
Das Programm berechnet Pi mit einer doch ganz guten Genauigkeit.
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Bild
Benutzeravatar
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

Beitrag von ts-soft »

Kaeru 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
Ursprünglich war es ein LET

Code: Alles auswählen

10 LET A = 10
20 LET B = B + 1
:mrgreen:
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.
Bild
Antworten