/dev/null - Overig

The UK government's COVID-19 simulation model is a masterpiece in spaghetti code and bad practices

06-05-2020, 07:29 door [Account Verwijderd], 7 reacties
Laatst bijgewerkt: 06-05-2020, 07:31
https://www.reddit.com/r/programming/comments/ge9bbw/the_uk_governments_covid19_simulation_model_is_a/

Het is in allerijl geschreven in "old fashion" C++, dus ... (mijn commentaar, niet die van andere mensen)
Reacties (7)
06-05-2020, 08:32 door The FOSS - Bijgewerkt: 06-05-2020, 08:39
Door donderslag: https://www.reddit.com/r/programming/comments/ge9bbw/the_uk_governments_covid19_simulation_model_is_a/

Het is in allerijl geschreven in "old fashion" C++, dus ... (mijn commentaar, niet die van andere mensen)

Het is in naam (file extension) C++ broncode maar als je het bekijkt zie je geen class definities. Dus het is gewoon C broncode. Je moet het niet gaan beoordelen vanuit een Object Oriented C+ perspectief als het dat niet is (C++). Voor oudere C broncode ziet het er best redelijk uit. Op zaken als die grote local stack variabelen na dan (dat heeft iemand gerapporteerd op Reddit); https://www.reddit.com/r/programming/comments/ge9bbw/the_uk_governments_covid19_simulation_model_is_a/fpm32xe.
06-05-2020, 08:59 door [Account Verwijderd] - Bijgewerkt: 06-05-2020, 09:07
Door The FOSS:
Het grappige is dat ik al schreef dat het C was... totdat ik een keer echt heel goed keek naar de comments en zag dat het C++ was. Toen gekeken naar de file extensie en jawel hoor, het was C++. Ik denk omdat C++ stringenter is dan C dat ze C++ gekozen hebben en hebben ze het gehele classes verhaal aan zich voorbij laten gaan (op zich ook een keuze). Op zich ben ik geen voorstander van zowel C als C++, maar dat terzijde. Ik denk dat een taal als Clojure ideaal was voor deze taak (functioneel, geen classes, geen side-effects en overall veel minder code).
06-05-2020, 09:05 door The FOSS - Bijgewerkt: 06-05-2020, 09:07
Door donderslag:
Door The FOSS:
Het grappige is dat ik al schreef dat het C was... totdat ik een keer echt heel goed keek naar de comments en zag dat het C++ was. Toen gekeken naar de file extensie en jawel hoor, het was C++. Ik denk omdat C++ stringenter is dan C dat ze C++ gekozen hebben. Op zich ben ik geen voorstander van zowel C als C++, maar dat terzijde. Ik denk dat een taal als Clojure ideaal was voor deze taak (functioneel, geen classes, geen side-effects en overall veel minder code).

Het ziet er nogal oud uit. Clojure is er toch nog niet zo lang? Er was hier laatst iemand die Clojure code postte, dat was jij? Update: oh nee, dat was kraak!
06-05-2020, 09:08 door [Account Verwijderd]
Door The FOSS:
Door donderslag:
Door The FOSS:
Het grappige is dat ik al schreef dat het C was... totdat ik een keer echt heel goed keek naar de comments en zag dat het C++ was. Toen gekeken naar de file extensie en jawel hoor, het was C++. Ik denk omdat C++ stringenter is dan C dat ze C++ gekozen hebben. Op zich ben ik geen voorstander van zowel C als C++, maar dat terzijde. Ik denk dat een taal als Clojure ideaal was voor deze taak (functioneel, geen classes, geen side-effects en overall veel minder code).

Het ziet er nogal oud uit. Clojure is er toch nog niet zo lang? Er was hier laatst iemand die Clojure code postte, dat was jij? Update: oh nee, dat was kraak!

Nee dat was ik niet. Het ging over dubbele files van dezelfde grootte maar dan met een andere filenaam. Ik heb er toen over gecommend maar die code niet geschreven.
06-05-2020, 10:17 door Erik van Straten
Volgens Tweaker Maurits van Baerle, in https://tweakers.net/nieuws/166778/verenigd-koninkrijk-test-corona-tracingapp-die-data-op-centrale-server-verwerkt.html?showReaction=14317810#r_14317810, zijn de ontwikkelaars "dezelfde mensen achter het Cambridge Analytica / AggregateIQ / SCL Group".
06-05-2020, 11:46 door Anoniem
Door Erik van Straten: Volgens Tweaker Maurits van Baerle, in https://tweakers.net/nieuws/166778/verenigd-koninkrijk-test-corona-tracingapp-die-data-op-centrale-server-verwerkt.html?showReaction=14317810#r_14317810, zijn de ontwikkelaars "dezelfde mensen achter het Cambridge Analytica / AggregateIQ / SCL Group".

Ik ben niet goed op de hoogte van de Britse achterkamertjespolitiek. maar het lijkt er sterk op dat je de ontwikkellaars van de omstreden NHSX app en de auteurs van de hier bedoelde Covid-19 epidemie simulatie, van het Imperial College London, door elkaar haalt.

Die laatste auteurs bestaan uit een groep van epidemiologen, rond de persoon van Neil Ferguson, een viroloog die recent als regeringsadviseur ontslag heeft genomen, na een in de Britse pers uitgelekte romance. De GPLv3 copyright gegevens van het bedoelde COVID-19 CovidSim Model, zijn:

Copyright Imperial College of Science, Technology and Medicine. The lead developers are Neil Ferguson, Gemma Nedjati-Giliani and Daniel Laydon.

https://github.com/mrc-ide/covid-sim/blob/master/README.md

https://en.wikipedia.org/wiki/Neil_Ferguson_(epidemiologist)
06-05-2020, 13:26 door Anoniem
Door donderslag: Ik denk dat een taal als Clojure ideaal was voor deze taak (functioneel, geen classes, geen side-effects en overall veel minder code).

Als GPLv3 open source alternatief voor een licentie van Wolfram.com Mathematica, zou ik als modelleerder de Covid-19 epidemie simulatie eerder geschreven hebben in Python en R, gebruik makend van SageMath, draaiende op een 32 CPU Xeon multicore Linux cluster met 64 Gb RAM. Met Clojure als Lisp alternatief ben ik helaas minder bekend.

https://en.wikipedia.org/wiki/SageMath

Ik zie het voordeel van optimaliseren van complexe C/C++ code niet boven het evidente risico van het ontstaan van spaghetti code, type mismatches en logische fouten, terwijl die risico's bij het programmeren met grafisch weergegeven wiskundige formules, met een direct zichtbare output in grafieken in SageMath, veel minder groot zijn.

Optimaliseren op executie snelheid kan immers later altijd nog gedaan worden door een team van wel vakkundige C/C++ programmeurs in te huren, zodra een model door middel van peer review is gevalideerd, Het tussentijds simpelweg bijplaatsen van extra CPUs en meer RAM modules is daarentegen een stuk sneller, zeker als je erg veel haast hebt.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.