Sorry dat ik hier nog op terug kom, maar ik vind de antwoorden toch niet echt goed onderbouwd.
Wij krijgen deze vraag op school (Software Engineering) ook geregeld en wat daarop geantwoord wordt is dat programmeren het maken van een set regels is, die de computer kan begrijpen.
Nou weten we wat programmeren en programmeertalen (en ICT) de afgelopen jaren hebben gedaan en we kunnen niet met zekerheid zeggen wat er in de toekomst gaat gebeuren. Maar een zichtbare beweging die te zien is in het verleden, is het abstraheren (het abstract maken) van programmeertalen naar beter begrijpbare talen die zo dicht mogelijk tegen de Engelse taal aan liggen.
Zo zijn low-level talen nogal cryptisch (en wiskundig) en kun je tegenwoordig Java en C# toch al redelijkerwijs 'lezen' zonder kennis te hebben van deze programmeertalen.
Nou is de notie, dat als deze beweging zich voort gaat zetten in de toekomst, dat programmeren (drastisch) gaat veranderen. Programmeurs schrijven geen 'code' meer, maar voeren alleen nog maar eisen in, waardoor de computer weet wat je van een stuk software verwacht.
Daarom ook dat onze leraren zeggen dat een goede programmeur niet per se goed kan programmeren, maar hij slechts goed weet wat hij wil (en wat hij niet wil). Voor een stuk software moeten namelijk vele dingen worden genoteerd voordat je überhaupt gaat programmeren. Wat wil je bijhouden, wat wil je met de software bereiken, wat moet er getoond worden (en wat niet), wat mag de sofware wel doen en wat mag de software niet. Als je daar klaar mee bent, dan pas ga je programmeren.
Mocht er in de toekomst nou een beweging zijn waardoor we 'gemakkelijker' kunnen programmeren (minder regels code, hetzelfde resultaat), blijft die eerste stap noodzakelijk. Misschien dat we minder bezig zijn met geheugenbeheer (C++ vs C#), maar de regels blijven hetzelfde. De input en de output van de software blijven hetzelfde.
Bovendien komen en gaan programmeertalen met hypes, trends en strategische planningen van grote bedrijven. iPhone is populair en we gebruiken ineens veel meer Objective C. Wil je voor Windows programmeren, dan kom je gauw op C# uit. Android? Dan gebruik je Java. Terwijl als de iPhone niet meer 'in' is, we eindelijk Windows vervangen met Linux en Android een langzamen dood is gestorven, zie ik die talen niet meer zo gauw gebruikt worden. Terwijl de manier om een stuk software in elkaar te zetten hetzelfde blijft. Je moet weten wat je wil en dat moet je dan uitwerken in de taal naar keuze.
Misschien moet je jezelf dan niet afvragen welke programmeertaal beter is dan de een of de ander.
Maar waarom werkt het waterval model wel/niet? Of kun je beter kiezen voor iteratief software design? Werkt SCRUM of AGILE in software ontwikkeling en heb ik er iets aan als zelfstandig programmeur?
Dus om een kort antwoord te geven op de vraag,
Ja, in essentie is programmeren uitleggen hoe iets
hoort te werken.