Hallo,
Ik ben van plan om me wat meer in een programmeer taal te gaan verdiepen. Ik heb al ruimte ervaring met PHP/HTML/CSS/javascript.
Nu leek C, C++ of VB mij ook wel wat. Als ik voor C of C++ zou kiezen dan werd mij aangeraden om met C te beginnen. Nu is mijn vraag, heb ik wat aan deze talen in de elektronica? Wordt C of C++ eigenlijk wel ergens anders gebruikt dan op de computer?
Ook wil ik graag weten of het inderdaad slimmer is om met C te beginnen en daarna verder te gaan met C++.
Alvast bedankt.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
C wordt wel degelijk veel in de elektronica gebruikt. Dwz, in de embedded wereld. Microcontrollers en zo. Letterlijk is dat ook "op de computers" natuurljk. Maar da's niet wat je bedoeld neem ik aan. Ik zou C aanraden, of anders gaat Assembly ook nog steeds erg mooi op uC's als PIC.
C++ is de OO variant op C. C is de basis, dus daar zou ik zeker mee beginnen. C++ wordt erg weinig in embedded gebruikt.
Voor elke microcontroller familie heb je wel een (of meerdere) C compiler, dus C is zeker nuttig.
C++ voor kleine embedded dingen (8 bitters zoals AVR) ga je niet zo veel tegen komen. (C++ is eigenlijk gewoon een uit Object georienteerde uitbreiding op C)
C, ASM en basic worden denk ik het meest gebruikt met microcontrollers.
C en Basic zijn bijde goed te doen en ook nuttig voor gebruik op de PC, alleen C en C achtige programmeertalen worden meer gebruikt dan Basic
C of een C achtige taal zijn ook goede talen om voor de PC mee te programmeren, de variant voor C die wordt gebruikt op microcontrollers zal dan ook erg makkelijk zijn om aan te leren
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
paar opmerkinkjes: Basic wordt (naar mijn waarneming) niet of nauwelijks gebruikt in de professionele wereld. Voor hobby wel.
Meestal is het geen C _variant_ die op uCs gebruikt wordt, maar gewoon ANSI of K&R C. Dat zijn de twee enige "echte" Cs die er zijn. De rest is geen C (maar dat zie je ook nauwelijks meer anno 2009).
Ik zie nu al een hoop moeilijke termen voorbij komen. ANSI of K&R bijvoorbeeld. Snap je deze talen ook als je C snapt of begin je dan weer bij het begin?
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 22 november 2009 19:11:03 schreef flipflop:
C++ wordt erg weinig in embedded gebruikt.
Daar ben ik het niet mee eens. Voor de meeste 8-bitters is C++ inderdaad zinloos of zelfs niet eens beschikbaar, maar voor de 32-bitters (bv ARM) is C++ prima geschikt en wordt het volgens mij ook veel gebruikt.
Sponcebert
Ik ben er klaar mee voor
OO ( C++ ) wordt in de ARM wereld veel gebruikt. In ieder geval de C++ compiler ( of iets Object georienteerd geprogrammeerd is kan veel discussie opleveren ).
Grote voordeel van C is dat er over het algemeen zo weinig specifieke zaken van het platform inzitten dat veel code en ideeen hergebruikt kunnen worden.
Voor op de PC is Visual Basic weer een heel aardige. Vooral als je al wat met javascript hebt gedaan.
Kennis van C is eigenlijk een must, ook al gebruik je het niet.
hardbass
PE2BAS
Ik kan ook wel wat talen, maar ik heb het meest gewerkt met vb.
Ook als je later picjes wilt programmeren kan vb van toepassing komen. (picbasic)
vb en c# lijken veel op elkaar maar denk niet dat als je vb kan dat je dan ook c# kan, de commando's zijn net iets anders zoals:
vb:
dim a as string
dim b as integer
if a = b then
else
endif
c#:
string a;
int32 b;
if(a == b){
}else{
}
Ik vind vb makkelijker maar de editor van c# vind ik prettiger
Hij laat bijvoorbeeld zien waar een { naar gaat.
En bij een crash kan je de inhoud van de variabelen bekijken.
Als je echt pic's wild programmeren raad ik je aan om dan assambler te gebruiken, nu is dat geen goede taal om programmeer kennis op te doen.
Maar dat heb je al toch?
bv of c# zijn hogere programmeer talen en assambler een lage.
Een hoge taal lijkt meer op engels en een lage lijkt nergens op (msn taal voor iemand van 80 jaar
)
bas
EDIT:
Op http://www.codeproject.com/ heb ik veel nuttige voorbeelden weten te downloaden om de taal te kunnen begrijpen.
hadv
Just find out what you like and let it kill you
Op 22 november 2009 19:43:28 schreef flipflop:
paar opmerkinkjes: Basic wordt (naar mijn waarneming) niet of nauwelijks gebruikt in de professionele wereld.
Mijn ervaring is dus tegenovergesteld. Niet voor omvangrijke projecten, maar wel voor allerlei "handige kleine tooltjes". Overigens wel met alle gevolgen van dien: slecht onderhoudbare code want effe gauw gebouwd. Uitzonderingen uiteraard daargelaten.
In de "professionele" financieel/administratieve wereld zie ik vooral veel Cobol (nog steeds, jawel) voor het mainframe en Java voor internetapplicaties.
Voor de uC's zijn assembler, C en basic in ieder geval interessant.
C# in ieder geval niet, want dat is typisch zo'n microsoft uitvindsel voor de pc-/inernet-wereld. Voor C++ heeft Wouter het antwoord al gegeven voor de uC wereld.
Op PC's zie je ook nog Pascal-varianten zoals Delphi (bij mij dus) en veel C++, op IBM-mainframes ook nog PL/1.
Talen als Algol en Fortran ben ik al heel lang niet meer tegengekomen.
Uiteindelijk worden alle programmeertalen uitsluitend op computers gebruikt (je startpost), maar dat komt omdat dit de definitie van een programmeertaal is.
[Bericht gewijzigd door hadv op (32%)]
Sponcebert
Ik ben er klaar mee voor
Algol 60, dat was mijn eerste taal ! Pascal, mooie taal, formeel goed doordacht.
Forth, heb je ook nog liefhebbers van.
Of direct opcodes intoetsen en sprongen zelf uitrekenen ( VIC20)
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 23 november 2009 11:07:47 schreef Sponcebert:
Algol 60, dat was mijn eerste taal !
TU Delft 1985. Practicum a130 met algol60 op de Amdahl mainfraime. Alle keywords moesten gequote worden. 1 quote vergeten en alles draait om: 10 bladzijden foutmeldingen voor een rpogramma van 10 regels 
Een jaar later werd het pascal (geen quotes meer), nog iets later TurboPascal (geen limiet meer aan het aantal runs).
Sponcebert
Ik ben er klaar mee voor
Toen zat ik er ook ongeveer. De printer kon prachtige pakken gevouwen papier produceren als je een recursieve functie ofzo moest maken. Zjiep Zjiep Zjiep Zjiep...
ik zou je aanraden je te verdiepen in C.
Zeker als je microcontroller wilt gaan programmeren is dit een taal waar je naar mijn mening het meest aan hebt.
Maakt uiteindelijk niet uit of je nu PIC`s, AVR`s, of wat voor processoren of platformen wilt gaan programmeren.
ANSI C wordt door alles ondersteund. (ANSI is een standaard, daarnaast heeft elke compiler soms wat eigen C commando`s)
Vooral veel voorbeelden op internet en in datasheets zijn ook in C, dus dan begrijp je dat ook een stuk beter.
Assembler leert je meer op echt hardware en register niveau te denken, misschien , maar met C zit je naar mijn mening net zo dicht tegen de registers aan als je maar wilt.
Van C naar C# is echt wel heel wat anders, maar dat is meer te wijten aan het .Net verhaal.
Ik vind het verschil tussen Vb.Net en C#.net minimaal.
De talen lijken allebei niet echt meer op de oude vb en C++.
De syntax is nagenoeg hetzelfde gebleven.
ik kan je dit boek aanbevelen. http://www.bol.com/nl/p/boeken/c-handboek/666786619/index.html
maartenbakker
Golden Member
www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
Op 23 november 2009 11:36:25 schreef Wouter van Ooijen:
[...]TU Delft 1985. Practicum a130 met algol60 op de Amdahl mainfraime. Alle keywords moesten gequote worden. 1 quote vergeten en alles draait om: 10 bladzijden foutmeldingen voor een rpogramma van 10 regels
Een jaar later werd het pascal (geen quotes meer), nog iets later TurboPascal (geen limiet meer aan het aantal runs).
<10 jaar later was het Modula 2 (ook Pascal-achtig), 12 jaar later opeens Java wat de klok sloeg. Alleen het vak "computervaardigheden" gaf je een basis van C mee, maar dat werd ook afgeschaft.
Maargoed als je nu een taal gaat bijleren, zou ik ook altijd C adviseren. Krachtige taal (lees: kijk uit wat je doet) en erg veel gebruikt.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 23 november 2009 12:24:50 schreef maartenbakker:
[...]Alleen het vak "computervaardigheden" gaf je een basis van C mee, maar dat werd ook afgeschaft.
Ik heb in Delft nooit een C vak gehad. Maar we werden wel geacht in C te werken. Is eigenlijk ook geen probleem als je al 1 of 2 talen hebt gehad.
Jochem
If you want to succeed, double your failure rate.
TS niet teveel verwarren: java in de embedded toepassingen?? Zeldzaam.
Op 22 november 2009 20:26:26 schreef Wouter van Ooijen:
[...]Daar ben ik het niet mee eens. Voor de meeste 8-bitters is C++ inderdaad zinloos of zelfs niet eens beschikbaar, maar voor de 32-bitters (bv ARM) is C++ prima geschikt en wordt het volgens mij ook veel gebruikt.
Mijn ervaring in het bedrijfsleven is dat in embedded systemen er vaak voorkeur wordt gegeven aan C, ook bij bijvoorbeeld ARM of Power Architecture. Natuurlijk KUN je wel C++ gebruiken, maar bijvoorbeeld resourcemanagement wordt meteen al een stuk minder doorzichtig en er zijn nog meer nadelen.
Leer gewoon C en als je wilt later C++. Ga je meteen met C++ aan de gang, dan zie je misschien de scheidingslijn niet.
NB: Embedded bedoel ik natuurlijk geen systemen mee die een embedded Windows variant draaien.
hadv
Just find out what you like and let it kill you
Op 23 november 2009 12:30:25 schreef Wouter van Ooijen:
[...]
Is eigenlijk ook geen probleem als je al 1 of 2 talen hebt gehad.
Maar dan wel talen uit verschillende "families". Want als je alleen het ouderwetse regelnummer-basic kent en Cobol zal je nog een klap te leren hebben als je naar Algol/C/Pascal... overstapt.
Jochem
If you want to succeed, double your failure rate.
Toen ik op m'n 10e in MSX-BASIC programmeerde had ik mezelf al aangeleerd om subroutines via GOSUB <regelnummer> te gebruiken, waarbij ik bepaalde variabelenamen had gereserveerd voor dit subroutine-gebruik. Deze stonden dan in de header van de betreffende subroutine. De stap naar niet-regelnummer-gebaseerde talen is dan niet zo groot meer; het voegt enkel het gemak van named subs/functies en gebruik van variabelen binnen een bepaalde scope toe.
duffel
Mijn vrouwtje houdt ook van kleine dingetjes: www.minifrutsels.nl
Ik ben het hier met Jochem eens. Ik heb tot voor een jaar nauwelijks geprogrammeerd. Ben toen met JAL op PIC's aan de slag gegaan. Als ik nu kijk naar programma's in C of basic (welke variant dan ook) dan kan ik die in elk geval gewoon moeiteloos lezen. Ik heb me dan eens in de functionaliteit van C en basic verdiept en kom tot de conclusie dat hier veel minder verschillen zijn dan ik verwacht had.
Zoals ik het zie (maar ik vrees dat ik nu vloek in de kerk voor een aantal hier) zijn het vooral dialecten. Bij C heb je accolade's en puntkomma's picbasic en JAL formatteren met insprongen... lees maar eens een paar stukken code verbazend hoe gelijkend ze zijn.
Ik blijf dus bij JAL: gratis en actief ontwikkeld en een goed gebruikersforum.
De enige reden die ik zie om over te stappen naar andere talen zijn uitgebreidere libraries. Dit heeft echter enkel een voordeel als je zeer veel programmeert en voor de beginner misschien zelfs het nadeel dat hij meer bezig is met uitzoeken hoe die library nu ook weer werkt dan te leren programmeren....
Gatze
Congratulations on your purchase. To begin using your quantum computer, set the power switch to both off and on simultaneously
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 24 november 2009 08:02:48 schreef duffel:
Dit heeft echter enkel een voordeel als je zeer veel programmeert en voor de beginner misschien zelfs het nadeel dat hij meer bezig is met uitzoeken hoe die library nu ook weer werkt dan te leren programmeren....
- Volgens mij zijn uitgebreide libaries vooral een voordeel voor de beginner / maker van kleinere programma's. Een ervaren programmeur / maker van grotere programma's zal eerder investeren in z'n eigen libraries.
- Voor Jal is er een behoorlijke library, en sinds gisteren ook de eerste versie van een gratis introductie 'boek', zie http://www.justanotherlanguage.org/content/tutorial_book en
http://jallib.googlecode.com/files/Tutorial_Book_0.1.pdf
Op 24 november 2009 08:04:06 schreef shizzle dizzle:
Op m'n tiende deed ik hele ander dingen, maar niet programmeren
Op m'n 10e speelde ik Pong!
Computers waren toen nog niet zo'n algemeen goed, de TRS80 Model I, Apple II en PET waren bijv net uit.
Post met relevant gedeelte wat het programmeren van microcontrollers betreft: Laatste alinea.

