Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   [IN] Leren programmeren (https://forum.scholieren.com/showthread.php?t=1663053)

Anika 18-01-2008 09:23

[IN] Leren programmeren
 
Ik wil misschien de master Scientific Computing gaan doen komend studiejaar, als ik daarvoor toegelaten word. Probleem is dat je daarvoor moet kunnen programmeren en dat kan ik niet, dus ik zou het graag willen leren. Ik heb echter geen idee wat voor taal ik dan het beste kan gaan leren, hoe ik het aan moet pakken en of dat wel binnen nu en een half jaar gaat lukken. Dus, heeft er iemand tips?
Op een voorlichtingsavond werden trouwens als voorbeelden Java, C en C++ gegeven als ik het me goed herinner, maar volgens mij was iets anders ook wel goed.

ILUsion 18-01-2008 09:39

Ik zou je aanraden om niet met C of C++ te beginnen (en Java is nu ook niet zo'n goede begintaal in feite). Dus tenzij je in het eerste jaar direct veel lessen in die talen hebt, zou ik van die talen afblijven tot je de basis onder de knie hebt.

Zelf heb ik leren programmeren met QBASIC; maar dergelijke start neem je beter niet (het programmeren is wel vrij makkelijk dan; maar het leert je slechte gewoontes).

Een taal die klassiek als onderwijstaal gebruikt wordt is Pascal; en dan meerbepaald Turbo Pascal (verouderd) of Object Pascal (in de volksmond: Delphi). Delphi kan ik je zeer zeker aanraden (ik heb er jarenlang in geprogrammeerd). Zorg dat je je een goed boek gaat halen (ik heb Delphi geleerd met "Snel leren programmeren, Delphi 6" van Thomas Binzinger (Addison Wesley); het is een vrij goed boek en er bestaan wel al nieuwere versies van).

Een andere taal die je wel de juiste gewoontes aanleert, best rigoureus is in het toepassen van heel wat concepten is Python. De taal zelf is simpel aan te leren. Het nadeel van deze taal tegenover Java, C en C++ (en ook Pascal) is dat dit eerder een scripttaal is. Dat komt op een nogal andere benadering neer van het gebruik van je computer. Python heeft bv. voorzieningen die niet in die andere talen zitten; maar als nadeel is Python ook een beetje trager (net zoals Java wat trager is, met een gelijkaardige redenering; al is Java geen scripttaal). Python is dus niet de toptaal om heel geavanceerde berekeningen in te maken; maar wel een goede leertaal (of voor algemene programma's in feite; maar je gaat geen hyperingewikkeld algoritme in Python schrijven, want die gaan steevast sneller zijn als je ze programmeert in C, C++ of een andere gecompileerde programmeertaal).

Als je voorbeelden wilt hebben (ik ga hier gewoon een procedure/functie opschrijven in resp. Pascal (en let daar niet op de hoofdletters, dat is een slechte gewoonte die ik uit Modula-2 heb geleerd) en Python):
Code:

FUNCTION Functie(a,b,c: INTEGER): INTEGER;
  VAR
    d: INTEGER;
  BEGIN
    d := 2 * b + c;
    result := (a + b) DIV d;
  END;

Code:

def functie(a,b,c):
    d = 2*b + c
    return (a+b)//d

Om even te zeggen welke concepten hierin staan: een functie (procedure met return-waarde (result in Pascal)), toewijzen van een variabele d, integerdeling (deling van gehele getallen). In Pascal ook nog types (INTEGER = geheel getal); en Python zijn er ook types, maar worden die afgeleid uit wat je in die variabelen steekt (duck typing). C, C++ en Java zijn ook sterk getypeerd, op de manier zoals Pascal eigenlijk (dus geen duck typing).

Even samengevat:
- Object Pascal leunt vrij dicht aan tegen C, C++, Java als het op paradigma aankomt (lees: kennis uit Object Pascal zal directer toepasbaar zijn in die talen; dan kennis van Python), qua codeerstijl zijn Pascal-dialecten ook niet slecht
- Python is wat makkelijker te leren en iets rigoureuzer (en leert je in de eerste plaats 'goed' programmeren; het is bijna inherent aan de taal dat je propere code schrijft). NAdeel is dat je niet zo goed met types leert werken, wat wel in Java, C, C++ nodig is (en ook in Pascal nodig is).
- BASIC blijf je beter af (leert je je code slecht structureren)
- zoek een goed boek (in de bibliotheek; maar ik raad eigenlijk aan om het echt te kopen: een goed referentiewerk komt steeds van pas)
- direct beginnen met C, C++, Java kan; maar als je geen enkele ervaring hebt met programmeren niet echt aan te raden (de syntaxis van die talen is zo overdonderend dat je daarin makkelijk vastloopt); als je toch echt met een van die wilt beginnen, denk ik dat Java de meest aangewezen keuze is (al ken ik zelf geen C of C++; en mijn Java is ook niet zo vlot)

Anika 18-01-2008 11:41

Bedankt voor je reactie.
Ik heb erg weinig ervaring met programmeren, ik heb één inleidend vakje gevolgd (inleiding matlab) maar dat was allemaal vrij eenvoudig. Alleen de basis van de basis zeg maar. Dus om meteen met een moeilijke taal te beginnen lijkt me niet zo'n goed idee.
Het lijkt mij voorlopig het beste om Object Pascal te gaan leren, het is toch wel een erg groot voordeel dat je daaruit ook meteen dingen kunt gebruiken voor andere talen.

Heb je enig idee hoe lang je er ongeveer over doet om Pascal onder de knie te krijgen? Ik verwacht er namelijk maximaal twee dagen per week aan te kunnen besteden plus vier weken in de zomervakantie, hopelijk is dat genoeg..

Kazet Nagorra 18-01-2008 12:20

Bij ons (natuurkunde) beginnen ze gewoon met C/C++ in het eerste jaar. Als ik jou was, zou ik ook gewoon daar mee beginnen, want C/C++ wordt het meest gebruikt en dan leer je jezelf geen slechte gewoontes aan, ook al is Delphi misschien makkelijker om te leren.

dutch gamer 18-01-2008 15:11

Ik zou ook C aanraden. Het begin lijkt misschien wat lastig, maar je hebt er ontzettend veel aan.

Kun je toevallig al PHP? PHP is namelijk gewoon een soort eenvoudige C (omdat het ook een totaal andere doel heeft), maar geeft je dus wel iets van de basics. Als je nog geen PHP kan: gewoon C leren.

Anika 18-01-2008 15:27

Nee, ik kan ook nog geen PHP, alleen eenvoudige dingetjes in Matlab. Maar wat is dan weer het verschil tussen C en C++? Is C++ nog moeilijker ofzo?
Niet dat het trouwens erg is als het moeilijk is :)

Nilssiej 18-01-2008 15:32

C++ is nogal een moelijke taal. Ikzelf ben begonnen met PHP (eigenlijk HTML, maar dat is wel heel erg simpel...), dat is een vrij simpele programmeertaal om te beginnen. Je leert daarmee ook meteen al hoe if, else, while, for-statements (e.d.) bijvoorbeeld werken, waarmee je jezelf al een goede basis geeft voor programmeren.

Anika 18-01-2008 15:52

Citaat:

Nilssiej schreef: (Bericht 26853163)
C++ is nogal een moelijke taal. Ikzelf ben begonnen met PHP (eigenlijk HTML, maar dat is wel heel erg simpel...), dat is een vrij simpele programmeertaal om te beginnen. Je leert daarmee ook meteen al hoe if, else, while, for-statements (e.d.) bijvoorbeeld werken, waarmee je jezelf al een goede basis geeft voor programmeren.

Dat soort dingen weet ik wel al, hoe je met if, while, else en for werkt. Het moet ook niet te simpel worden, want als ik inderdaad die master ga doen moet ik wel wat kunnen natuurlijk.
PHP was toch meer voor websites e.d.? Of geeft het ook een goede basis voor andere dingen? Aangezien ik niet verwacht websites te zullen gaan ontwerpen :o

Nilssiej 18-01-2008 15:57

Citaat:

Anika schreef: (Bericht 26853248)
Dat soort dingen weet ik wel al, hoe je met if, while, else en for werkt. Het moet ook niet te simpel worden, want als ik inderdaad die master ga doen moet ik wel wat kunnen natuurlijk.
PHP was toch meer voor websites e.d.? Of geeft het ook een goede basis voor andere dingen? Aangezien ik niet verwacht websites te zullen gaan ontwerpen :o

Hmm, als je dat soort dingen inderdaad al goed beheerst, dan kun je beter inderdaad niet met PHP beginnen. Aan je posts te lezen dat ik dat je in totaal nog niet ervaring had met programmeren. PHP heeft naast deze statements veelal alleen nog maar functies die je kunt leren en voor het begrip van de andere talen is dat niet echt zinvol. C of C++ is dan inderdaad een beter begin.

Anika 18-01-2008 16:44

Citaat:

Nilssiej schreef: (Bericht 26853278)
Hmm, als je dat soort dingen inderdaad al goed beheerst, dan kun je beter inderdaad niet met PHP beginnen. Aan je posts te lezen dat ik dat je in totaal nog niet ervaring had met programmeren. PHP heeft naast deze statements veelal alleen nog maar functies die je kunt leren en voor het begrip van de andere talen is dat niet echt zinvol. C of C++ is dan inderdaad een beter begin.

Ik dacht eigenlijk dat je dan nog steeds bijna niks wist :o alleen maar een klein beginnetje. Maar blijkbaar valt het dus wel mee. Ik weet natuurlijk niet hoe je dat soort dingen letterlijk in C of C++ typt, maar wel hoe ze werken en wat je ermee kunt.

Nilssiej 18-01-2008 16:55

Citaat:

Anika schreef: (Bericht 26853441)
Ik dacht eigenlijk dat je dan nog steeds bijna niks wist :o alleen maar een klein beginnetje. Maar blijkbaar valt het dus wel mee. Ik weet natuurlijk niet hoe je dat soort dingen letterlijk in C of C++ typt, maar wel hoe ze werken en wat je ermee kunt.

Het ligt er natuurlijk aan wat je wilt bereiken met programmeren, voor de ene programmeertaal is een basis al genoeg om al verder gevorderd te zijn, zoals bijvoorbeeld PHP, Perl en dergelijke, maar voor de moelijke talen is het natuurlijk maar een klein beginnetje ;) Er is redelijk verschil van niveau tussen verschillende talen. En aangezien ik zie dat je vooral wat moelijkere talen wilt leren, is het natuurlijk nog vrij basaal...

Kazet Nagorra 18-01-2008 18:49

Citaat:

Anika schreef: (Bericht 26853128)
Nee, ik kan ook nog geen PHP, alleen eenvoudige dingetjes in Matlab. Maar wat is dan weer het verschil tussen C en C++? Is C++ nog moeilijker ofzo?
Niet dat het trouwens erg is als het moeilijk is :)

Ze lijken op elkaar. Ik ben geen programmeerkoning, maar het verschil zit 'm volgens mij vooral in het feit dat C++ classes heeft en C niet, en dat sommige commando's anders geschreven worden.

ILUsion 18-01-2008 20:46

Citaat:

Anika schreef: (Bericht 26851554)
Bedankt voor je reactie.
Ik heb erg weinig ervaring met programmeren, ik heb één inleidend vakje gevolgd (inleiding matlab) maar dat was allemaal vrij eenvoudig. Alleen de basis van de basis zeg maar. Dus om meteen met een moeilijke taal te beginnen lijkt me niet zo'n goed idee.
Het lijkt mij voorlopig het beste om Object Pascal te gaan leren, het is toch wel een erg groot voordeel dat je daaruit ook meteen dingen kunt gebruiken voor andere talen.

Heb je enig idee hoe lang je er ongeveer over doet om Pascal onder de knie te krijgen? Ik verwacht er namelijk maximaal twee dagen per week aan te kunnen besteden plus vier weken in de zomervakantie, hopelijk is dat genoeg..

Als MatLab je wel lag; dan kan je best met C of C++ of Java beginnen. De moeilijkste stap in het leren programmeren is de allereerste: leren denken als een programmeur (en om eerlijk te zijn: dat is een denkwijze die je niet op school kan leren; iemand die niet kan programmeren zal nooit een schitterende programmeur worden, maar kan je wel trainen om toch simpele dingen te doen). Dat laatste is trouwens ook aangetoond met universitaire studies: programmeren heeft te maken met een bepaalde denkwijze en die kan je niet aangeleerd krijgen (maar wellicht dat je er zelf wel in kan vallen).

Object Pascal of Python raad ik dan ook vooral aan als je echt helemaal geen enkele ervaring ermee hebt. Dat terwijl ik Matlab een vreselijke taal vind (met weliswaar geweldige voorzieningen); om het maar cru te zeggen: matlab leert nu niet direct om mooi te programmeren, maar de beperkingen in matlab zorgen er wel voor dat je toch kan programmeren. Als in: als je door de rotzooi van Matlab zelf geraakt bent (ik heb het dan over het manipuleren van matrices in 1 bewerking dan bv.), dan heb je wel de juiste ingesteldheid om ook met een klassiekre programmeertaal overweg te kunnen. En de syntaxis van Matlab is tegenover Pascal ook best minimalistisch te noemen zodat je in het vrij minimalistische C/C++ ook aan de slag kan in feite.

PHP is zoals ook al gezegd ook een redelijk C-achtige taal; weliswaar een scripttaal en volgens mij blijf je daar beter van af. PHP is er speciaal om dynamische websites mee op te zetten (ook al kan je er ook gewoon mee scripten; er zijn maar weinigen die dat doen). Een van de redenen is dat het design van PHP nogal te wensen overlaat, alle standaardfuncties zijn nogal inconsequent in hun naamgeving en dat leert natuurlijk niet om zelf dan consequent te zijn (wat volgens mij wel een van de belangrijkste punten is voor een programmeur: werken met een bepaalde systematiek (die gestoeld gaat op logica) en die blijven gebruiken). PHP heeft daar heel weinig van. Om dan maar voorbeelden in Object Pascal te geven: als je zelf een type maakt is het de conventie om die TOmHetEvenWat te noemen (dus laten voorgaan met hoofdletter T en de rest CamelCaps). Visual Basic heeft dan weer andere conventies (strWeetIkVeel voor een string; dus laten voorgaan door een afkorting voor je type). PHP is daar in de taal zelf niet consequent in om al te beginnen. Ook kan je, dan makkelijker direct met C of C++ beginnen; de syntaxis is vrij gelijkaardig (alleen zit je met geheugenbeheer).

PHP heeft dus wel zijn toepassingsgebied; maar ik zou het niet aanraden als eerste programmeertaal: te web-geöriënteerd, niet mooi van ontwerp. Voor een programmeur die de basis al wel heeft, is er natuurlijk niets mis om PHP te leren: als je zelf al goede gewoontes hebt in het programmeren, zullen die niet veranderen. Maar op net dezelfde manier als BASIC beginnende programmeurs op het verkeerde pad brengt, vind ik dat dat ook bij PHP wel een beetje het geval kan zijn (het idee dat je er maar wat op los doet; vorm maakt niet uit). In dat opzicht vind ik Python dan ook een geweldige taal: daar moet je vorm perfect in orde zijn, of je programma loopt niet goed (niet zoals je in een andere taal verwacht, of hij zegt je gewoonweg waar je indentatiefouten aan het maken bent).

Het verschil tussen C en C++ is, voor zover ik weet, ook vooral wat Kazet Nagorra zegt: C++ heeft betere mogelijkheden om Object-Oriented Programming te gaan toepassen.

Maar zoals ik al zei: het moeilijkste aan programmeren is de allereerste stap: denken als een programmeur. Als je dat kan; is het leren van een nieuwe taal eigenlijk niet zo heel moeilijk (er kruipt wat tijd in, ook in het verstaan van de nodige specialiteiten in die taal). Maar in tegenstelling tot natuurlijke talen (Engels, Nederlands, ...) is de basis van de meeste talen ongeveer hetzelfde. De syntaxis verschilt wat; maar de concepten zijn uiteindelijk hetzelfde (en die zijn juist het 'moeilijkste').

Dus ga maar direct voor C, C++ of Java; waar Java dan waarschijnlijk nog het makkelijkste zal zijn (omdat je geen pointers hebt, geheugenbeheer is ook uit je handen genomen).

Offtopic: Om even mijn ervaring te geven: ik ben begonnen met QBasic toen ik ongeveer 8 was, denk ik. Klassiekers als SuperLogo, Visual Basic, Turbo Pascal, Object Pascal, PHP: ik heb met ze allemaal wat gewerkt. Ons eerste jaar universiteit, kregen we Modula-2 (een of ander marginaal dialect van Pascal; waar volgens mij vooral designfouten in zitten als je vergelijkt met Object Pascal (sjeezus, hoe kwam Wirth erop om zijn keywords verplicht in hoofdletters te zetten; dat zorgt enkel voor lelijke code en syntax-highlighting moet je niet opdringen via hoofdlettergebruik)). Sinds vorig jaar ben ik dus ook begonnen met Python (en voor universiteit ook Matlab); en volgend semester komt Java hier aan bod. Ik heb ook nog eventjes de beginselen van Ruby opgenomen, maar waar die taal als heel leesbaar gepromoot wordt, vind ik dat na de basis toch best tegenvallen (en dus ben ik er maar mee gestopt). Enkel talen als C, C++ en Assembly missen vooral nog op mijn lijst; maar die gaan er heus wel eens bijkomen, misschien ooit zelfs nog eens C# (nog een variant van C++, die eigenlijk grotendeels op Windows gebruikt wordt; .NET-rotzooi en dergelijke).

Ik ben dus wel best bezeten door programmeren. Hoe lang je er trouwens over doet om het allemaal te leren hangt geheel van jou af. Als je graag programmeert, vergeet je zo de tijd. Het moeilijkste is echt de basis onder de knie krijgen; en die heb je normaal voor een stuk al met Matlab (hoewel dat ook een taal met impliciete typering is en best handige typecasting). C, C++ of Java zijn dan ook slechte talen om helemaal mee te beginnen omdat hun syntaxis overdonderend is (voor iemand die nog nooit geprogrammeerd heeft), maar als je de basis al kent, valt het allemaal best mee. Het probleem met C is dat de beginners door die minimalistische syntaxis door de bomen het bos niet meer zien (je moet de code kunnen begrijpen in de eerste plaats en dat gaat nu eenmaal makkelijker in een iets woordelijkere taal zoals Pascal of Python). Maar eenmaal je de basis hebt, wilt dat ook zeggen dat je de concepten al wat op een rijtje hebt, dat je voor jezelf al de abstracties gemaakt hebt (programmeertaal naar de gebruikte concepten). Het komt er dan vooral op neer om die concepten ook in een andere taal te leren beschrijven en zo moeilijk is dat dan niet meer. Vergelijk het hiermee: je kan een kind wel leren hoe hij in het Nederlands verstoppertje moet spelen (tellen, bepaald iets roepen als je iemand gevonden hebt, ...). Het moeilijkste zijn die spelregels. Daarna is het niet zo moeilijk meer om dat kind verstoppertje te leren spelen in het Frans of het Engels: de regels zijn hetzelfde (of toch ongeveer), maar je moet met andere woorden werken.

Anika 19-01-2008 09:54

@ILUsion: op je achtste al begonnen met programmeren, dat is echt vroeg! Toen wist ik nog niet eens hoe de computer aan en uit moest volgens mij.

In ieder geval allemaal heel erg bedankt voor de hulp. Ik ga maar gewoon beginnen met C++ en ik zie wel hoe ver ik kom in dat halve jaar. Ik heb er in ieder geval wel vertrouwen in dat het gaat lukken :) matlab vond ik erg leuk, dus het kost vast niet zoveel moeite om er veel tijd in te steken.

ILUsion 19-01-2008 10:02

Ik ben gewoon een vroege vogel (ik kon al met computers werken toen ik ongeveer 5 was). En als je Matlab leuk vond, wilt dat volgens mij wel zeggen dat je graag programmeert (de meeste van mijn medestudenten vonden het een sleur; maar nog niet zo erg als modula). Dan lukt C++ je echt ook wel; vermits het moeilijkste is om die interesse te hebben (en die interesse komt ook meestal pas als je dat programmeerinzicht hebt).

Swlabr 19-01-2008 19:34

Ik ben net begonnen met Python (te laat, vind ik) en ik vind het een erg mooie taal. :)

Gemenerik 20-01-2008 01:18

Je zou eventueel ook C# kunnen overwegen. Vind ik tot nu toe een prettige taal en niet al te moeilijk om mee te beginnen.

ILUsion 20-01-2008 09:07

C# is inderdaad geen slechte taal; en ik wil hiermee je idee niet volledig afschieten ofzo; maar volgens mij is het in dit geval gewoon al beter om dan direct met C of C++ te beginnen vermits ze dat ook echt nodig zal hebben. Ook heb ik nogal mijn twijfels over de openheid van C#, een beetje een wantrouwen tegenover Microsoft: ik heb liever niet te veel te doen met hun producten (om ook al maar te zeggen dat hun bijhorende IDE veel te zwaar is naar mijn goesting). Maar ik begrijp best dat je het een prettige taal vindt: C-achtige syntaxis met heel wat speciale abstract data types (wat het programmeren veel vergemakkelijkt). Alleen vrees ik dat je het bij C en C++ vooral zelf in elkaar moet steken (in dat opzicht was Python langs mijn kant ook geen goede taal om aan te leren; maar wel een uitstekende leertaal als je nog niets weet van programmeren).

stijn10 20-01-2008 15:06

ik zit in de vierde, dus ik weet niet of ik er genoeg verstand van heb, maar ik heb hele goede ervaringen met deze site:

http://openbookproject.net/thinkCSjav/

het begint met (Hello, World) en legt de syntax van Java heel erg goed uit. Je leest er als je programmeren een beetje leuk vind vlot doorheen maar misschien voor jou iets te simpel (gezien je een Master wilt gaan doen). gezien je ervaring met loops etc. kun je een aantal hoofdstukken wel overslaan(behalve H1, deze geeft goede uitleg over de syntax en enkele begrippen binnen Java). het is in ieder geval een leuk beginnetje.

PS. volgens een vriend van mij zijn het 144 bladzijden.


Alle tijden zijn GMT +1. Het is nu 04:35.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.