Een van de redenen om echt naar de universiteit te gaan, is om verder te gaan dan alleen professionele training en in plaats daarvan vast te houden aan diepere ideeƫn.

Laten we even nadenken over deze vraag. Een paar jaar geleden nodigden de faculteiten Computer Science me uit om een aantal colleges te geven aan verschillende universiteiten. Bij toeval vroeg ik mijn eerste publiek, bestaande uit senioren, afgestudeerden en professoren, naar hun definitie van 'Computer Science'. Iedereen kon alleen een technische definitie geven. Ik deed dit op elke nieuwe plek en overal waren de resultaten vergelijkbaar.
Een andere vraag was: 'Wie is Douglas Engelbart?'. Enkele mensen zeiden: 'Was hij niet op de een of andere manier betrokken bij de computermuis?' (en dat frustreerde me enorm, aangezien mijn wetenschappelijke gemeenschap veel moeite heeft gedaan om ervoor te zorgen dat dit antwoord mogelijk was na twee of drie muisklikken en om te bevestigen dat Engelbart inderdaad op de een of andere manier verbonden was met de computermuis).
Deels was het probleem te wijten aan een gebrek aan nieuwsgierigheid, deels aan de smalle persoonlijke doelen die niet met leren te maken hadden, deels aan de afwezigheid van een idee van wat deze wetenschap inhoudt, enzovoort.
Ik werk al een paar jaar parttime aan de afdeling Computer Science van de Universiteit van Californiƫ (in wezen ben ik professor, maar ik hoef geen vergaderingen bij te wonen). Af en toe geef ik college, soms aan eerstejaars. Gedurende deze jaren is het al lage niveau van nieuwsgierigheid naar Computer Science aanzienlijk gedaald (maar ook de populariteit is gestegen, aangezien computerwetenschappen wordt gezien als een pad naar goedbetaald werk, als je kunt programmeren en een diploma hebt van een van de beste 10 scholen). Het gevolg hiervan is dat nog geen enkele student heeft geklaagd dat de eerste programmeertaal aan de Universiteit van Californiƫ C++ is!
Ik denk dat we worden geconfronteerd met een situatie waarin zowel de termen "Computer" als "Wetenschap" zijn afgebroken door zwakke, massieve concepten, om een nieuwe term te creĆ«ren ā een soort label op jeans ā dat goed klinkt, maar vrij leeg is. Een gerelateerde term, die op een vergelijkbare manier is afgebroken, is "software-engineering", die, opnieuw, niet de meest geniale ideeĆ«n van "programmeren" en "engineering" gebruikte, maar ze gewoon combineerde (dit werd opzettelijk gedaan in de jaren zestig, toen de term werd bedacht).
Een van de redenen om daadwerkelijk naar de universiteit te gaan, is om verder te gaan dan simpele beroepsopleiding en in plaats daarvan vast te houden aan diepere ideeĆ«n. Het lijkt me redelijk om bij de inleiding tot het vak ā indien mogelijk met voorbeelden ā ervoor te zorgen dat studenten zich bezighouden met echte problemen en beginnen te begrijpen wat eigenlijk interessant, belangrijk en centraal is in dit veld.
Kinderen in groep 1 zijn dolblij wanneer ze zien hoe een liniaal bovenop een andere liniaal verandert in een rekenmachine, waarmee ze kunnen concurreren met leerlingen uit groep 5 bij het optellen van breukdelen. En dan zullen ze gelukkig deelnemen aan de ontwikkeling van verbeterde rekenmachines. Ze hebben een echte computer aangeraakt ā een fysiek en mentaal hulpmiddel dat ons helpt te denken. Ze hebben geleerd hoe ze cijfers op een zeer effectieve manier kunnen voorstellen ā effectiever dan wat op scholen wordt geleerd!
Ze konden hun gezonde idee van "optellen" als "ophoping" combineren met iets vergelijkbaars met nieuwe krachtige eigenschappen. Ze programmeerden het zo dat het in staat was om een verscheidenheid aan problemen op te lossen.
Ze breidden het ook uit. En zo verder. Dit is geen digitale computer. En dit is geen computer met een programmeerbare geheugen. Maar het is de essentie van een computer. Net zoals ā dit is in feite de essentie van computers en berekeningen.

Antikythera-mechanisme
Hoe ver kunnen we gaan en hoeveel kunnen we bereiken voordat alles uit de hand loopt en we verloren raken in abstracties? Ik heb altijd belangstelling gehad voor de karakterisering van ā de eerste laureaat van de Turingprijs, die mogelijk de term 'Computer Science' heeft bedacht ā die in de jaren '60 zei: 'Computer Science is de wetenschap van processen'. Van alle processen.
Laten we voor het bedrijf Quora niet verder proberen dit te forceren of het in een religieuze dogma te veranderen. Laten we gewoon gelukkig het idee gebruiken. , om beter na te denken over ons vakgebied. En vooral over hoe we dit kunnen onderwijzen. Nu moeten we kijken naar de moderne betekenis van 'wetenschap', en Perlis was vrij zeker dat dit niet verdund moest worden met oude betekenissen (zoals 'kennisverzameling') en toepassingen (bijvoorbeeld 'bibliotheekwetenschap' of zelfs 'maatschappijwetenschappen'). Onder 'wetenschap' probeerde hij het fenomeen te begrijpen door modellen/kaarten te creƫren die proberen fenomenen te 'volgen' en te voorspellen.

Ik heb verschillende interviews gegeven over hoe de beste kaarten en modellen vaak toepasbaar zijn op een T-shirt, net zoals de vergelijkingen van Maxwell en anderen. De analogie is dat er een 'wetenschap van bruggen' bestaat, hoewel de meeste bruggen door mensen zijn gebouwd. Maar zodra de brug is gebouwd, toont het fenomenen, wetenschappers kunnen deze bestuderen, van bruggen kunnen veel soorten modellen worden gemaakt en alomvattende en nuttige 'brugtheorieƫn' worden gevormd. Het leuke is dat je vervolgens nieuwe bruggen kunt ontwerpen en bouwen (ik heb al eerder genoemd dat er weinig zo leuk is als de samenwerking tussen wetenschappers en ingenieurs om grote en belangrijke problemen op te lossen!).

Herbert Simon ā laureaat van de Turingprijs en de Nobelprijs ā noemde dit allemaal 'wetenschap van het artificiĆ«le' (en schreef een prachtig boek met dezelfde titel).

Laat me een voorbeeld geven. In de jaren '50 bouwden bedrijven en universiteiten computers met een geheugenprogramma en begonnen ze deze te programmeren ā en er was een bijzonder moment in 1956 toen Fortran verscheen ā dat niet de eerste programmeertaal op hoog niveau was, maar misschien de eerste die zo goed was gemaakt dat deze in veel verschillende gebieden werd gebruikt, inclusief vele die eerder alleen in machinetaal waren gedaan.
Dit alles resulteerde in 'fenomenen'.

John McCarthy
De geschiedenis van Lisp is complexer, maar John McCarthy was geĆÆnteresseerd in de poging om een 'wiskundige theorie van berekeningen' te vinden en was vastbesloten om ervoor te zorgen dat alles uitstekend werkte. De eval-functie, die Lisp interpreteert, kan zelfs op een t-shirt worden gedrukt! In vergelijking met een 'programmeer systeem' is dit onbeduidend. Belangrijker nog, deze 'theorie van berekeningen' had een krachtigere conceptie dan Fortran! Het was het beste idee van een brug!
De miniaturisering van Lisp maakt het mogelijk om het hele idee van programmeren vast te leggen met een paar klikken op een dieper niveau en dit te overdenken op een niveau dat simpelweg onmogelijk lijkt wanneer je kijkt naar enorme artefacten (dit is een van de redenen waarom wetenschappers houden van compacte en krachtige wiskunde). De wiskunde die hier wordt gebruikt, is nieuwe wiskunde, aangezien deze concepten zoals 'voor' en 'na' toestaat, en dit leidt tot 'logica van variabele grootheid', die zowel functionele afhankelijkheid als logisch redeneren toestaat, terwijl het ook de positie en verloop van tijd mogelijk maakt. (Dit is nog steeds niet begrepen in onze tijd in de meedogenloze wereld van situationele programmering).
Lisp, als een krachtige programmeertaal en meta-taal die in staat is om zijn eigen theorie voor te stellen, is een voorbeeld van echte computerwetenschap. Als je het leert en andere soortgelijke zaken, dan kun je dieper nadenken en ben je verantwoordelijker voor je eigen toekomst dan wanneer je alleen zou leren programmeren in Fortran of zijn moderne equivalenten (... zo kun je dichter bij programmeurs komen!).
Je zult veel meer te weten komen over speciale soorten ontwerp die nodig zijn in berekeningen (bijvoorbeeld, het is meestal niet gewaardeerd wanneer berekeningen vaak buiten de rekensituatie moeten worden gebracht: een van de speciale kenmerken van opgeslagen programmeer berekeningen is dat het niet alleen materiaal is voor een programma, maar materiaal voor een geheel nieuwe computer).
Een andere reden om de definitie van Perliss te kiezen, is dat berekeningen in het algemeen veel meer gerelateerd zijn aan het creĆ«ren van systemen van verschillende soorten dan aan algoritmen, 'data structuren' of zelfs programmeren als zodanig. Bijvoorbeeld, een computer is een systeem, berekeningen zijn systemen, een lokaal netwerk en internet zijn systemen, en de meeste programma's zouden betere systemen moeten zijn dan ze daadwerkelijk zijn (de oude programmeerstijl van de jaren '50 heeft voortgeduurd tot het punt dat het lijkt alsof programmeren zo hoort te zijn ā er is niets verder van de waarheid).
Internet is een goed voorbeeld ā in tegenstelling tot de meeste programma's tegenwoordig, hoeft het internet niet te worden stopgezet om iets te repareren of te verbeteren ā het lijkt meer op een biologisch systeem ā volgens onze intentie, dan wat de meeste mensen beschouwen als een computer systeem. En het is veel schaalbaarder en betrouwbaarder dan bijna alle software systemen die vandaag de dag bestaan. Dit is echt iets om over na te denken voordat je beginners in programmeren onderwijst in minder krachtige concepten!
Dus wat we in de eerste cursus Computer Science moeten doen, is rekening houden met wat studenten specifiek in het begin kunnen doen, en vervolgens proberen binnen hun 'cognitieve belasting' te blijven om hen te helpen bij het bereiken van wat echt belangrijk is. Het is erg belangrijk om 'authentiek te blijven' en manieren te vinden die intellectueel eerlijk zijn en passen bij degenen die net beginnen met leren. (Leer alsjeblieft geen slechte ideeĆ«n alleen omdat ze iets eenvoudiger lijken ā veel slechte ideeĆ«n zijn in werkelijkheid eenvoudiger!).
Studenten moeten beginnen met het creĆ«ren van iets dat vele belangrijke kenmerken heeft, die ik hier heb besproken. Het moet een systeem zijn van verschillende dynamisch interagerende onderdelen, enzovoort. Een goede manier om te bepalen welke programmeertaal te gebruiken, is simpelweg iets te maken dat duizenden interagerende delen heeft! Als dat niet het geval is, moet je er een vinden. Het ergste wat je kunt doen, is studenten op een pad van te beperkte vaardigheid te zetten, wat hen zou beperken in grote ideeĆ«n. Dat vernietigt ze gewoon ā en we willen ze laten groeien, niet vernietigen.
Over de GoTo school

- 17-30 juni, 15-28 juli, 12-25 augustus
Bron: habr.com
