Min poäng här var att dina exempel inte innehåller allt man måste skriva för att få ett fungerande program. Jag tyckte så mycket om Pethers term så jag adopterar den. I dina exempel saknas allt fluffet du måste skriva för att tillfredställa kompilatorn. Där får C++ minuspoäng på elegans.
Jag ser också fördelarna med statisk typning men du frågade vad jag fann elegantare hos Python och just avsaknaden av typdeklarationer är en sådan sak. Jag ser inte dynamisk typning som en fördel men typdeklarationerna höjer halten fluff i problemlösningen och kan vara problematiska för nybörjaren. Läs mitt svar till Pether.
Vi är på samma sida när det gäller att man lär sig programmera och att programspråket spelar mindre roll.
Men i valet mellan Python och modern C++ rekommenderar jag Python till nybörjaren just för att det är lägre fluffprocent och man kan fokusera mer på lösningen och inte på att skriva saker för att komplatorn skall bli glad. Jag assade på D-linjens inledande Scheme-kurs på KTH och att döma av de frågor jag fick var den dynamiska typningen inte ett stort problem. När storleken på lösningarna är en sida kod eller två kan man hålla hela lösningen i huvudet. Scheme ligger också bra till i elegansligan, men det är aldrig någon frågar om de skall börja med C++ eller Scheme. Obegripligt...
Stod valet mellan Python och C++98, vilket det mycket väl skulle kunna göra om den som ställde frågan lånat en bok av en polare, tror jag även du skulle rösta för Python.
Scheme har samma fördelar som t.ex. Clojure och ANSI Pascal, det är ett extremt enkelt språk och även i en rätt kort kurs som INDA (som jag har för mig ändå var 8HP, allt över 5HP var ju rätt långa kurser på KTH ), man kan lära sig i princip alla språkliga konstruktioner utan problem. Nu lär ju INDA knappast gått in på LIPS mörka sida, skriva macros, utan det är de flesta LISP-dialekter väldigt enkla.
Både Python och C++ är extremt stora språk, knappast något man lär ut i en kortare kurs. Men vet inte hur stort problem det är, man får helt enkelt hålla sig i en delmängd av språket. Är nog mest bara problem för de mest intresserade eleverna som lär sig mer på egen hand och då kanske går lite utanför mallarna.
Och kring diskussionen av vad som faktiskt är inbyggt i språket från början: var inte grejen även med Scheme att studenterna skulle skriva alla abstrakta datatyper själva, så vad är fördelen med språk som har allt det från början?
Det är ganska enkelt att förklara hur man kan veta det. Människor över hela världen har märkt att de väldigt snabbt kommer in i Python jämfört med C++.
Några kodexempel i ett en diskussion i ett forum kan inte riktigt motsäga det.
Har aldrig skrivit att Python inte är enklare än C++, har skrivit att jag själv inte kan se på vilket sätt Python är så mycket enklare. Om det nu är allmän kunskap som jag missat måste det ju vara trivialt för dig att upplysa mig genom några enkla exempel som visar hur komplicerat C++ är jämfört med Python!
Letade lite bland forskningsartiklar och liknande, enda jag hittade var att statiskt typning ger färre fel än dynamisk typning. Att unit-tester skulle vara nog visade sig vara fel, de hittar andra typer av fel och även statiskt typade språk måste ha unit-tester (vilket knappast borde vara en nyhet för någon som jobbar med programmering). Huruvida detta spelar någon roll för absoluta nybörjare låter jag vara osagt, i sådana kurser skriver man nog inte unit-tester (finns dock kurser man gör detta, har gått ett par Coursera Scala-kurser och där rättades alla inlämningsuppgifter genom att de kördes skulle klara ett gäng förutbestämda unit-tester).
Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer