www.freepascal.org voor AVR


eSe

Honourable Member

Linux heeft een ingebouwde c compiler..

..en c++, c#, ADA, Fortran... en er is ook een frontend voor Pascal.

Sommige dingen keren altijd terug. Ik zag net dat Fortran weer omhoog gaat in gebruik, alsook assembler. Die laatste zal wel wat te maken hebben met de overvloed aan microcontrollers.

Zie: https://www.tiobe.com/tiobe-index//

Groetjes,
eSe

A transistor protected by a fast-acting fuse will protect the fuse by blowing first.
fripster

Golden Member

Pascal is in tegenstelling tot wat sommigen hier beweren niet slecht, dood of alleen voor educatieve doeleinden bedoeld.

Het is een volwaardige programmeertaal voor mensen die het niet erg vinden dat hun code wat meer verbose is, maar daardoor tenminste goed leesbaar is en blijft. Verder is Pascal strongly typed, waardoor de blatante onzin die je in C kunt doen zonder dat de compiler erover zeurt (cast maar eens een string als een integer of zo) bijna niet kàn voorkomen.

Heel wat grote belangrijke pakketten zijn in Pascal/Delphi/Lazarus gemaakt en doen hun functie uitstekend.

Ieder mag natuurlijk het tool gebruiken waar hij of zij de voorkeur voor heeft, maar ga niet afgeven op een taal die erg leesbaar, goed begrijpbaar en netjes gestructureerd is.

En ja ik ben een Pascal (Delphi / Lazarus) gebruiker

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

HEt leren programmeren op zichzelf is al een uitdaging, dus in welke taal je dat leert maak denk ik weinig uit. Als je eenmaal goed bent in het programmeren zelf is overstappen op een andere taal al wat makkelijker.

IK was ca 2 jaar geleden begonnen met C++. en ben nu voor de 2de dag bezig met visualbasic 6. Veel dingen zijn dan redelijk hetzelfde alleen je type het net even anders.

Pascal strongly typed, waardoor de blatante onzin die je in C kunt doen zonder dat de compiler erover zeurt

Nu doe jezelf ook een beter afgeven op een andere taal maar je hebt wel gelijk C++ is zeker niet perfect ik gebruik het meer omdat iedereen het doet. Maar is basic ook niet gewoon strongly typed want ik vind basic een stuk leesbaarder.

fripster

Golden Member

@benleentje: Touché... je hebt gelijk.. Laten we nou maar allemaal gebruiken waar we het beste mee uit de voeten kunnen lijkt me :)

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

+1 ;)

Heb nooit begrepen waarom C zonodig het pipe/dakje teken moet gebruiken om 1 letter uit te sparen... (Or / Xor is toch veel duidelijker?

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Op 27 november 2021 17:23:13 schreef eSe:
[...]

..en c++, c#, ADA, Fortran... en er is ook een frontend voor Pascal.

De C compiler (gcc) is native, de rest niet, al is g++ vrijwel altijd beschikbaar, de rest niet, en zeker C# is niet "ingebouwd"

alsook assembler. Die laatste zal wel wat te maken hebben met de overvloed aan microcontrollers.

Ik ken werkelijk geen professionele programmeur die nog in assembler programmeert voor microcontrollers, met uitzondering van kleine, specialistische stukjes code, binnen C projecten. Ik heb het zelf nog wel gedaan, meer dan 10 jaar geleden, voor een DSP waar geen C compiler voor bestond.

@fripster: ik heb zelf, zo'n 25 jaar geleden, leren programmeren in Pascal (toen nog Turbo Pascal, onder DOS), en het is absoluut een syntactisch mooie taal, zeer geschikt voor beginnende programmeurs.

Ik had liever gezien dat Basic een pijnlijke dood was gestorven en Pascal nog volop gebruikt werd, maar de geschiedenis is helaas anders.

Praktisch gezien denk ik dat je Pascal wel min of meer als dood kunt beschouwen; er zijn maar weinig compilers, en alleen voor zeer specifieke platformen. Aan de andere kant is er voor vrijwel elk denkbaar platform (behalve dus die eerder genoemde DSP) wel een C compiler beschikbaar. Uiteraard kun je nog steeds wel Pascal gebruiken voor microcontrollers e.d., maar dat betekend dus wel dat je vast zit aan één familie (PIC/AVR), en dat zijn allemaal oude, trage 8-bitters. De moderne STM/NXP micro's zijn ordes van grootte sneller, met 32-bit brede ALUs en clock frequenties tot bijna 500MHz. Daarbij hebben ze veel meer I/O, veel meer flash en RAM, snelle interfaces zoals Ethernet, interfaces voor LCD schermen, QSPI flash, externe RAM, geavanceerde DMA periferals, etc.

Met Pascal en Basic zit je toch min of meer vast aan de microcontrollers van het begin van de eeuw. Niets mis mee als je daar je hobby projecten mee kunt doen, maar wees je bewust van die beperkingen, en reken er niet op dat je ooit professioneel iets met die techniek kunt doen.

Op 27 november 2021 18:19:52 schreef benleentje:
HEt leren programmeren op zichzelf is al een uitdaging, dus in welke taal je dat leert maak denk ik weinig uit.

Behalve Basic; dat richt dusdanig ernstige hersenschade aan, dat een echte taal leren heel moeilijk is voor de meesten >:)

IK was ca 2 jaar geleden begonnen met C++. en ben nu voor de 2de dag bezig met visualbasic 6.

VB6? Waarom zou je daar nu nog mee beginnen? De ondersteuning daarvoor is 15 jaar geleden al gestopt, al komt de runtime nog wel mee met Windows 10. Overigens kon je in VB6 al wel strong typing afdwingen.

Als je nu nog met een nieuwe taal wilt beginnen, zou Python mijn eerste keuze zijn, niet een oude Basic variant.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Vb is inderdaad wel erg 'belegen'...
(ik vond het ook nooit prettig werken, lomp en omslachtig. Enige heel goede was de IDE mogelijkheid om iedere functie apart voor editing te openen)

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Een vervelende eigenschap van de VB6 omgeving (in tegenstelling tot Visual Studio uit dezelfde tijd) was dat je met een foutje in je programma de hele ontwikkelomgeving mee onderuit kon trekken. Je hoefde maar één timertje niet netjes op te ruimen en je was aan de beurt. Dat is dan ook het moment dat je erachter komt dat je al geruime tijd niet meer op control-S hebt gedrukt...

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

VB6? Waarom zou je daar nu nog mee beginnen?

Wilde eigenlijk Excel en VBA gaan gebruiken, maar kwam eerst deze tutorial tegen die zegt eerst met vb6 te beginnen en later over te gaan naar VB.net en excel
Mijn uiteindelijk doel is wat data van en naar een microcontroller over te sturen maar vind wel heel veel data verwerking naar excel maar niets wat andersom gaat.

Maar is een beetje off-topic en wil dit topic daarmee niet teveel vervuilen

Het oorspronkelijke Basic staat eigenlijk dicht bij assembler; vergelijk bv. GOTO met JMP of GOSUB met JSR. Ik vind dan ook dat men Basic niet moet afdoen als zijnde "geen echte programmeertaal", dan is assembler dat ook niet, en voor mij is assembler juist de moeder van alle talen.

V.w.b. Pascal: ook ik had altijd begrepen dat dit was bedoeld voor pedagogische doelen, maar voor productiewerk nogal wat beperkingen had, bv. inzake het afhandelen van runtime errors. Ik dacht dat Modula was bedoeld als tegenhanger/opvolger van Pascal voor het "echte werk". Maar Modula is nooit echt doorgebroken, zoals zovele talen.

Verder nogal danig akkoord met Sparky: Geen enkele variant Basic is vandaag nog zinnig om te leren; en alnaargelang wat men te doen heeft kan python een heel goede keuze zijn, vooral door de enorme biblioteek aan gespecialiseerde modules voor de meest uiteenlopende doeleinden.

[Bericht gewijzigd door big_fat_mama op 27 november 2021 19:10:37 (18%)]

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Voor veel 'old skool' basic programmeurs blijkt het toch lastig om dingen als GOTO en GOSUB af te zweren... ;)
(terwijl die nu helemaal niet meer nodig zijn en die de term 'spaghetticode' hebben gecreeerd...)

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Als ik assembler schrijf gebruik ik ook JMP en JSR ;) daar komt men maar lastig omheen.

En ja, als men zijn stijl niet verzorgt dan komt er spaghetticode van, dat zegt meer over de programmeur dan over de taal. Maar die discussie is al duizend keer gevoerd, denk ik.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Precies en wat maakt het ook uit welke taal je gebruikt je staat op A en je wilt naar B dus je neemt gewoon de taal die dat voor je kan doen en wat je prettig vind. Maar met internet en bestanden uitwisselen wil je toch ook een gangbare taal. En c++ is toch minder porteerbaar dan ik dacht. In de arduino ide werkt het zonder compiler errors. Maar een overstap naar platformio kreeg ik ineens 161 compiler errors.

Daarna dacht ik hou het wel lekker bij wat ik weet en beheers en wat dat dan ook is maakt toch weinig uit.

Ik vind dan ook dat men Basic niet moet afdoen als zijnde "geen echte programmeertaal",

Dat vind ik ook, hoewel ik begrepen heb niet elke taal geschikt is om een OS te schrijven ivm met het ontbreken van pointers. Maar als dat niet je doel is om een OS te schrijven dan maakt het verder ook weinig uit.

Ik maak ook complexe zaken in Basic/Windows en dat gaat uitstekend (laatste was een VOIP/SIP meldcentrale welke zonder problemen al 2 jaar draait)
CALL en JMP zijn voor assembly noodzakelijk, maar voor Basic tegenwoordig toch echt 'not done'...

Gewoon omdat je er onoverzichtelijke code door krijgt, en het totaal niet meer nodig is.
(er zijn nu genoeg alternatieven ('Do' loops, 'While' loops, Break, Exit, Functions en Subs,...)

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
Hoeben

Golden Member

Pascal in een zeer professionele vorm vind je bij Embarcadero. Ik heb zelf ook veel in Pascal / Delphi gewerkt. Wel uitsluitend voor Windows.

Het is een prima taal, zeer leesbaar en veel minder cryptische symbolen. Delphi is tegenwoordig een high-level taal geworden. Openen, nieuw project, plak er knoppen op, zet er een database bij, een export naar Excel, en je hebt in de tijd dat je dit zegt een applicatie gebouwd met mooie userinterface. Ok, ok, dan moet je wel een langzame spreker zijn maar toch. Ik maak er veel sneller een betrouwbare en mooie applicatie mee dan met C.

Pascal is ooit door Wirth ontwikkeld om studenten te leren gestructureerd te programmeren. Dat is dan ook meteen het voordeel, het leidt tot structuur en leesbaarheid. Ik heb er een hoop in gebouwd met zeer goede resultaten.

Het voordeel van C is dat je van alles kunt manipuleren, alles kan. Dat is ook meteen het nadeel.

Kwaliteitssoftware is overdraagbaar en leesbaar. C vereist meer discipline. Maar de programmeur is altijd het belangrijkst, dat geldt in elke taal.

In feite werken heel veel talen op dezelfde manier, alle hebben diverse loops en methodes. De punten en komma's staan alleen wat anders.

Ik raad C wel sterk aan omdat er nu eenmaal veel mensen in C programmeren en er compilers voor veel platforms beschikbaar zijn. Uiteindelijk ben jij het als programmeur die voor een goed resultaat moet zorgen. In sommige talen is dat handig, bij sommige talen moet je daar wat meer voor doen. Zo is Python bijvoorbeeld heel handig om snel een quick&dirty scriptje te maken.

eSe

Honourable Member

Ik ken werkelijk geen professionele programmeur die nog in assembler programmeert voor microcontrollers...

Omdat ze het niet meer kunnen? :+

In de link die ik heb meegegeven zie je dat assembler een grote sprong voorwaarts maakt in de "top" van gebruikte talen, alsook Fortran zoals gemeld.

Ik gebruik ass. ook niet meer zoveel als vroeger, maar ik doe het nog steeds graag.

'Professionele' programmeurs zullen inderdaad andere dingen opzoeken die HUN leven makkelijker maken maar of de app'jes (en dat is het overgrote deel van wat die jongens/meisjes maken) ook echt robuust zijn ?
En we zijn niet allemaal programmeur van opleiding of doen het om 'den brode'.

De c compiler is inderdaad 'native' bij GCC, maar de andere compiler front-ends kan je tijdens de installatie gewoon mee installeren. (GCC = Gnu Compiler Collection)

Groetjes,
eSe

A transistor protected by a fast-acting fuse will protect the fuse by blowing first.

mzz... Das veel lees werk!

Maar hij doet het tot zo ver.

PECH: De mcu reageerd niet op de code

Waarschijnlijk een verkeerd gegenereerd HEX file

Nu ga ik slapen.

Morgen weer verder!

Groet, Wouter

Delphi WIN10 / MikroeAVR Pascal / Freepascal RPI / www.turbo51.com / https://github.com/ccrause/fpc-avr

Op 27 november 2021 20:22:28 schreef eSe:
[...]

Omdat ze het niet meer kunnen? :+

Omdat het met grotere complexe projecten moeilijker in onderhoud is.
Assembly schrijven en 'ontluizen' duurt nu eenmaal langer. In basic schrijf je het in een fractie van de tijd.
(meeste programmeurs die ik ken zijn geen masochisten... ;) )

Assembly werkt best prettig en voor kleine controllers met heel weinig geheugen gebruik ik het nog wel eens.
(codegrootte scheelt vaak een factor 5...10)

Sommige OS zoals OS/2 waren grotendeels in assembly geschreven (OS/2 was 5x sneller als vergelijkbare Windows versie).
Maar een nadeel zijn ook de problemen met porten naar andere hardware: in assembly heel erg veel werk, in hogere talen veel minder...

Verder is assembly wel simpeler geworden doordat er macro includes zijn gemaakt met functionaliteit als DO/WHILE, SELECT CASE, enz...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Assembly heeft in de meeste gevallen geen duidelijk voordeel, maar ontwikkelen in assembly kost veel meer tijd, en als iemand anders ooit een project over moet nemen en bugs moet oplossen of iets moet toevoegen ben je echt aan de beurt.

@Arco: een factor 5-10 code space, vergeleken met C code met alle space optimization opties ingeschakeld? Zo'n factor geloof ik nog wel als je het vergelijkt met een debug build, maar voor een goede release build zou het toch niet zo groot mogen zijn.

Of vergelijk je nou met Basic? Misschien zit daar dan het probleem...

@eSe: Die lijst is wel een beetje raar; je kunt PHP en VHDL wel samen in een lijst zetten, maar de toepassing daarvan is zo verschillend dat de vergelijking totaal zinloos is.

De index is gebaseerd op regels code geschreven in elke taal; het is dus niet zo vreemd dat assembly relatief hoog staat, aangezien die programma's voor gelijke functionaliteit vele malen langer zijn (in aantal regels).

Daarbij vind ik de manier van meten een beetje twijfelachtig; tellen ze nu alleen publiek toegankelijke code? Dan is het ook wel logisch dat sommige talen veel hoger of juist lager scoren; talen die populair zijn bij open-source projecten (zoals Python en C) zullen dan veel hoger scoren, dan talen die voornamelijk worden gebruikt voor closed-source projecten.

[Bericht gewijzigd door SparkyGSX op 27 november 2021 21:59:56 (40%)]

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 27 november 2021 18:29:00 schreef Arco:
+1 ;)

Heb nooit begrepen waarom C zonodig het pipe/dakje teken moet gebruiken om 1 letter uit te sparen... (Or / Xor is toch veel duidelijker?

C ligt erg dicht tegen machinetaal aan en vroeger was elke byte besparing toch mooi meegenomen. Ook scheelde dat weer enkele machineslagen.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

|, &, ! en ^ zijn gewoon andere wiskundige bewerkingen, niet anders dan +, - , *, /, etc. Wil je die dan ook allemaal vervangen door hele woorden?

Het mooie van die operators is dat je ook verschil kunt maken tussen bitwise en logic operators | en & voor bitwise, || en && voor logic, en expressies als "A = A bit-wise OR B" kort en duidelijk kunt schrijven, als "A |= B;". Dit lijkt me toch triviaal, en iets wat iedere beginnen vrijwel direct kan snappen; de rest van het werk van een programmeur is vele malen ingewikkelder (algoritmes, datastructuren, computationele complexiteit, etc.).

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

de rest van het werk van een programmeur is vele malen ingewikkelder (algoritmes, datastructuren, computationele complexiteit, etc.).

Dat bedoelde ik ook. Het leren programmeren is best moeilijk en in welke taal je dat leert maakt heel weinig uit.

Als je eenmaal weet hoe algoritmes, datastructuren enz werken is dat ook wel vrij eenvoudig te vertalen naar een andere taal.

En als die ene taal precies doet wat jij wilt zie ik ook geen reden waarom je dan iets anders moet gaan doen.

Heb nooit begrepen waarom C zonodig het pipe/dakje teken moet gebruiken om 1 letter uit te sparen

Moet niet ik type het soms ook gewoon voluit, maar dat is meer omdat het | teken vaak over het hoofd ziet en de IDE maakt hem grijs terwijl or dan in het groen verschijnt.

In C mag ik A++ schrijven ipv A = A + 1

Zoals eerder aangeven is het ook aan de programmeur om een goede structuur aan te houden

eSe

Honourable Member

We zijn hier echt wel aan het afdwalen van @TS zijn vraag in de openingspost, maar 't is wel interessant :-)

...het is dus niet zo vreemd dat assembly relatief hoog staat...

Het gaat niet om de hoogte maar om de verhoging tegenover de vorige vergelijking in taalgebruik. Python en C zijn van plaats gewisseld en zoals gemeld zijn assembler en Fortran flink omhoog gegaan. En dat is wel raar.

Voor Fortran kan ik dat nog aannemen: die taal is echt geschikt voor parallel computing en tegenwoordig met die multicore cpu's zou dat wel kunnen.
Maar assembler?

...C ligt erg dicht tegen machinetaal aan...

C is oorspronkelijk gemaakt voor het ontwikkelen van OS's daarom staat het ook zo dicht bij de machine. En daarom kan je machines ook makkelijk op de knieen krijgen als je niet goed oplet. (simpel gezegd)

Groetjes,
eSe

A transistor protected by a fast-acting fuse will protect the fuse by blowing first.

...C ligt erg dicht tegen machinetaal aan...

JA en nee zou ik zeggen. Voor de Arduino zijn er 1000den libraries te vinden en dan staat je weer redelijk ver van machine(taal) , sensor of wat dan ook.

Op 27 november 2021 21:48:42 schreef SparkyGSX:
@Arco: een factor 5-10 code space, vergeleken met C code met alle space optimization opties ingeschakeld? Zo'n factor geloof ik nog wel als je het vergelijkt met een debug build, maar voor een goede release build zou het toch niet zo groot mogen zijn.
Of vergelijk je nou met Basic? Misschien zit daar dan het probleem...

Basic, C, of Pascal zit weinig tot geen verschil meer in de size van de gegenereerde code tegenwoordig, is alleen het front-end/parser tenslotte.
Ze gebruiken bijv. bij MikroE allemaal dezelfde compiler.

Verschil in codegrootte tussen geoptimaliseerde assenmbly en C is minstens enkele malen. Als je de meegeleverde libraries gebruikt zelfs groter.
Dit omdat die vaak onnodig groot en uitgebreid zijn met functionaliteit die meesten niet eens nodig hebben.
(Da's ook omdat ze de libraries simpel bruikbaar willen houden voor gebruikers)

De PPS routine voor PIC24 in de MikroE compilers is bijv. bijna 2k groot: in assembly schreef ik dat in 17 instructies...

De basic compiler gebruikt voor bitwise en logic dezelfde notatie.
Da's ook geen probleem want hij hij kan aan eventuele haakjes in de code zien wat de bedoeling is...
(de haakjes maken alles ook veel duidelijker te lezen)

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com