mboost-dp1

BBC Basic


Gå til bund
Gravatar #2 - larsp
1. dec. 2023 17:55
Jeg er arg modstander af Dijkstras famøse citat:
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

... da jeg har brugt Basic enormt meget startende med C64 basic hvor jeg lavede mine første programmer, frem til betalt arbejde i VB6, gentagne gange. Og det var Basics elendige performance der fik mig til at lære C meget tidligt, fordi jeg drømte om at få adgang til maksimal performance for computeren. Jeg kan takke Basic for at have startet og formet hele min IT karriere.

#1 BBC Basic virker som en ret god version af sproget. Jeg kan kun bifalde at unge roder med den slags, så tidligt som muligt! Dijkstra go f. yourself :D
Gravatar #3 - arne_v
2. dec. 2023 01:15
#2

Basic har udviklet sig over tid og mange Basic varianter idag er grundliggende ligeså gode sprog som diverse curly bracket sprog.

IBM BASICA/MS GW-Basic -> MS QBasic -> MS VB/VBA/VBS -> MS VB.NET

Borland TurboBasic -> PowerBasic

DEC BASIC-PLUS -> DEC BASIC Plus 2 -> VMS Basic

Men som sædvaneligt skal man lige huske konteksten.

Dengang var der to typer programmeringssprog:
- implicitte erklæringer af variable og goto som grundliggende kontrol struktur (Basic, Fortran 66 etc.)
- krævet erklæringer af variable og blok kontrol strukturer (Algol, Pascal etc.)

Han sammen med bl.a. Wirth kæmpede for at den sidste type skulle blive den dominerende.

Og de vandt. Fortran og Basic forsvandt ikke, men de adopterede den anden stil.



Gravatar #4 - arne_v
2. dec. 2023 01:20
#2

Og det var iøvrigt ikke kun Basic han var ude efter.

Fortran:

"FORTRAN --"the infantile disorder"--, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use."

Cobol:

"The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense."

"With respect to COBOL you can really do only one of two things: fight the disease or pretend that it does not exist."

PL/I:

"PL/I --"the fatal disease"-- belongs more to the problem set than to the solution set."

APL:

"APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums."
Gravatar #5 - larsp
2. dec. 2023 09:46
#4 Okay, de citater er pænt sjove med en drys af sort humor. Jeg fornemmer at han var en komikertype der godt kunne lide at sige chokerende ting med et smil på læben. Thumbs up.

Jeg er selvfølgelig helt på hans side hvad angår kampen mod GOTO i de seriøse sprog. Implicit vs explicit erklæring af variable synes jeg mere er et spørgsmål om domæne. Der er stor forskel på scripting og system sprog.

Men jeg vil ikke tilgive hans Basic udtalelse helt. Netop linjenumre og GOTO er med til at gøre sproget endnu mere tilgængeligt for en absolut begynder. Det forpester ikke hjernen med dårlige ideer. Det at have lidt under GOTO og linjenumre gør at det er en sand velsignelse at lære om funktioner og kontrolstrukturer senere.
Gravatar #6 - arne_v
2. dec. 2023 17:34
larsp (5) skrev:

Jeg er selvfølgelig helt på hans side hvad angår kampen mod GOTO i de seriøse sprog.


Jeg synes faktisk at et sprog skal have GOTO. Der er situationer hvor det er praktisk. Det er ikke noget man skal bruge meget og det er noget man kun skal bruge med et klart flow. Typisk kun hoppe nedad for at springe over noget kode - det kan naturligvis laves med if blokke men en goto ned i bunden kan faktisk være mere læseligt end 3-5 niveauer if blokke.

larsp (5) skrev:

Implicit vs explicit erklæring af variable synes jeg mere er et spørgsmål om domæne. Der er stor forskel på scripting og system sprog.


Problemet dengang var statisk type variable med implicit type erklæring udfra navnet.

Fortran: variabel navne som starter med I-N er integer mens A-H og O-Z er floating point.

Basic: variabel navne som ender med % er integer mens $ er string.

De blev erstattet af sprog hvor variable skulle erklæres med type. Og Fortran og Basic fik compiler options til at kræve erklæring.

Et antal årtier senere er der så to nye muligheder:

- dynamisk type variabel

- statisk type variabel med type inferens

Fremskridt eller "fremskridt" - ikke alle er begejstrede for disse.
Gravatar #7 - larsp
3. dec. 2023 07:49
arne_v (6) skrev:
Jeg synes faktisk at et sprog skal have GOTO. Der er situationer hvor det er praktisk. Det er ikke noget man skal bruge meget og det er noget man kun skal bruge med et klart flow. Typisk kun hoppe nedad for at springe over noget kode - det kan naturligvis laves med if blokke men en goto ned i bunden kan faktisk være mere læseligt end 3-5 niveauer if blokke.

Ah ja, jeg lavede ofte en konstruktion med GOTO handle_error i bunden af funktionen, i basic, hvor der blev ryddet op og meldt tilbage med fejlkode. Det er jo egentlig en poor mans try / catch konstruktion.

I C undgår jeg goto helt, og laver den nødvendige branching for at håndtere fejl, eventuelt med en success boolean som følgende branches kan teste. Det er ikke super kønt. Men det synes jeg heller ikke goto løsningen er. Fejlhåndtering er altid det sværeste at gøre elegant i programmering. I kritisk kode der er lavet meget grundigt kan status og fejlhåndtering inkl. generering af fejlbeskeder nemt fylde 3/4 af koden.
Gravatar #8 - larsp
3. dec. 2023 08:00
arne_v (6) skrev:
Problemet dengang var statisk type variable med implicit type erklæring udfra navnet.

Fortran: variabel navne som starter med I-N er integer mens A-H og O-Z er floating point.

Basic: variabel navne som ender med % er integer mens $ er string.

Implicit som i at variabel navnet specificerer typen ... damn. Den idé havde jeg lykkeligt glemt alt om.

Ang. Fortran, er det en konvention eller er det dødelig alvor og den måde compilerern afgør hvilken type det er??? Det er godt nok grimt og overraskende for de ikke-indviede i såfald. Men det minder da lidt om såkaldt hungarian typing som var populært en overgang i Visual Basic.
Gravatar #9 - arne_v
3. dec. 2023 13:57
larsp (8) skrev:

Ang. Fortran, er det en konvention eller er det dødelig alvor og den måde compilerern afgør hvilken type det er???


Compiler behavior.


program first
i = 3
j = 2
x = 3
y = 2
write(*,*) i, j, i/j, x, y, x/y
end


udskriver:

3 2 1 3.00000000 2.00000000 1.50000000

larsp (8) skrev:

Det er godt nok grimt og overraskende for de ikke-indviede i såfald. Men det minder da lidt om såkaldt hungarian typing som var populært en overgang i Visual Basic.


Tilbage i 90erne promoverede MS hungarsk notation for variabel navngivning.

(det er opkaldt efter Charles Simonyi som ledede den gruppe der udviklede MS Office)

Vel mest i C++ men også i VB/VBA/VBS.

Umiddelbart gav det vel mest mening i VBS.

Det var "the way" på Windows indtil MS droppede det med .NET (.NET bruger kun I for interfaces).
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login