Söker lärdom inom programmering

Avdelningen för programmering, nätverk samt alternativa OS.
Baurken
Posts: 171
Joined: 2007-07-14 22:34:58

Söker lärdom inom programmering

Post by Baurken »

Söker efter böcker eller "video tutorials" inom programmering, på svenska. De språken jag försöker lära mig är C, C++, PHP och ASM. Och det ska helst vara gratis också.

Någon som har något bra tips?
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

Det känns lite som att se på när Susanne Lanefeldt jumpar på TV:n för att bli smal.
Vill du bli bra på programmering så träna programmering.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
HLC
Posts: 2146
Joined: 2004-09-25 10:08:21
Location: Kista

Post by HLC »

Kan även tipsas om att dissa svenskan när du ändå är igång, god dokumentation på engelska brukar vara mycket mer tacksamt att hitta.
"Broadcom and Apple are the antithesis of free disclosure of information." - Theo de Raadt
"Unconditional love costs extra." - Sun Microsystems
kqr
Posts: 3077
Joined: 2005-09-05 17:23:20
Location: Stockholm

Re: Söker lärdom inom programmering

Post by kqr »

Baurken wrote:De språken jag försöker lära mig är C, C++, PHP och ASM.
Ganska intressant mix.. Varför alla dem? Asm lär du inte behöva om du inte ska progga drivrutiner eller kärnor, PHP har jag full förståelse för, men behöver du kunna både C och C++? Isf skulle jag nöja mig med ett av dem och komplettera senare ifall det behövs.
User avatar
übermensch
Hedersbit
Posts: 3190
Joined: 2002-03-08 0:03:05
Location: Kista
Contact:

Re: Söker lärdom inom programmering

Post by übermensch »

kr1sse wrote:Ganska intressant mix.. Varför alla dem? Asm lär du inte behöva om du inte ska progga drivrutiner eller kärnor, PHP har jag full förståelse för, men behöver du kunna både C och C++? Isf skulle jag nöja mig med ett av dem och komplettera senare ifall det behövs.

Det finns en poäng med asm beroende på vad det är för målplattform man har. När du har 128Byte(inte kilobyte) arbetsminne att leka med finns det en poäng med att hålla sig så nära hårdvaran som möjligt.

I övrigt håller jag med, det är en rejäl blandning av språk. Kanske det vore bättre om du(orginalpostaren) berättade vad du vill få ut av det hela istället för att sikta så brett som du verkar göra nu.
In cars several processors are connected by a bus
User avatar
Moonsky
Posts: 2256
Joined: 2005-09-21 15:52:41

Post by Moonsky »

Du kan lära dig PHP genom dokumentationen på PHP sidan och experimentera lite.
PHP har en C-liknande syntax och är väldigt lätt att programmera i.
kqr
Posts: 3077
Joined: 2005-09-05 17:23:20
Location: Stockholm

Post by kqr »

@übermensch:
När man bara har 128 byte att leka med känns det lite som att man kan förutsätta att det är någon form av kärna man jobbar med...
User avatar
übermensch
Hedersbit
Posts: 3190
Joined: 2002-03-08 0:03:05
Location: Kista
Contact:

Post by übermensch »

kr1sse wrote:@übermensch:
När man bara har 128 byte att leka med känns det lite som att man kan förutsätta att det är någon form av kärna man jobbar med...
Eller en helt vanlig mikrokontroller. All programmering är inte för datorer i vanlig mening :)
In cars several processors are connected by a bus
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

Tycker att ASM, C, och C++ går hand i hand. En vettig C-programmerare kan ASM lika bra, annars förstår han inte C. Och förstår han inte C så förstår han inte C++ heller.

Vad gäller gratis video tutorials på svenska.. Ditt lokala universitet har förmodligen många bra, och gratis, kurser i sånt här. Utnyttja dina skattepengar. Och passa på och ta en engelska-kurs också.
IL1
User avatar
HLC
Posts: 2146
Joined: 2004-09-25 10:08:21
Location: Kista

Post by HLC »

Med tanke på vad jag sett ifrån landets största och "bästa" universitet vad gäller de grundläggande programmeringskurserna skulle jag inte alls rekommendera att söka upp sådanna kurser hursomhelst. Speciellt inte om man inte är beredd att lägga ned den tid och de resurser (som att kunna engelska närapå flytande) som oftast krävs.
"Broadcom and Apple are the antithesis of free disclosure of information." - Theo de Raadt
"Unconditional love costs extra." - Sun Microsystems
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

mirza* wrote:Tycker att ASM, C, och C++ går hand i hand. En vettig C-programmerare kan ASM lika bra, annars förstår han inte C. Och förstår han inte C så förstår han inte C++ heller.
Jag ser inte alls hur asm går hand i hand med C++.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
kqr
Posts: 3077
Joined: 2005-09-05 17:23:20
Location: Stockholm

Post by kqr »

IcePic wrote:
mirza* wrote:Tycker att ASM, C, och C++ går hand i hand. En vettig C-programmerare kan ASM lika bra, annars förstår han inte C. Och förstår han inte C så förstår han inte C++ heller.
Jag ser inte alls hur asm går hand i hand med C++.
Lika långa namn.
User avatar
nem
Hedersbit
Posts: 4678
Joined: 2002-04-12 15:48:33
Location: Lund

Post by nem »

mirza* wrote:En vettig C-programmerare kan ASM lika bra, annars förstår han inte C.
Bollocks. Det finns mängder med duktiga C-programmerare som känner sig förlorade om de tvingas skriva assembler.

Med några mycket specifika undantag så skriver kompilatorer mycket bättre assembler än någon människa. Enda anledningen till att lära sig det är för att få bättre förståelse för hårdvara, men för att skriva program i C behöver man inte ägna det en tanke.

Mitt stalltips brukar vara att man ska lära sig programmeringens principer först, innan man tyngs ner av lågnivåspråkens begränsningar. Python eller Ruby är alldeles utmärkta språk för detta ändamål, och är också mer motiverande för nybörjare eftersom man snabbare når resultat. Sedan måste man enligt min erfarenhet förr eller senare lära sig C, vare sig man vill eller ej, men jag tycker att det är bättre att skjuta upp tills man lärt sig algoritmtänket man får av att programmera i högnivåspråk.
"Rightful liberty is unobstructed action according to our will within limits drawn around us by the equal rights of others."- Thomas Jefferson
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

Jag kanske tog i lite för mycket. "En vettig C-programmerare kan ASM
lika bra." ---> "En bra C-programmerare vet precis vad som händer
under the hood." Du kanske tycker att det är en löjligt hög standard
att vänta sig att någon vet hur hans favorite abstraction fungerar,
men det tycker inte jag.
nem wrote:
mirza* wrote:En vettig C-programmerare kan ASM
lika bra, annars förstår han inte C.
Bollocks. Det finns
mängder med duktiga C-programmerare som känner sig förlorade om
de tvingas skriva assembler.
[/quote]

Bollocks. Det finns det inte alls.
nem wrote:Med några mycket specifika undantag så skriver
kompilatorer mycket bättre assembler än någon människa. Enda
anledningen till att lära sig det är för att få bättre förståelse
för hårdvara, men för att skriva program i C behöver man inte
ägna det en tanke.
Man lär sig assembler för att få bättre förståelse både för ens
hårdvara och ens programmeringsspråk.

Compilern är inte en magisk låda, och koden de flesta genererar är
inte särskilt bra. Speciellt inte compilers (eller interpreterers) för
high-level språk som Ruby och Python. Det finns inte mycket en
compiler kan göra i det fallet, eftersom språket i sig är så pass
dynamiskt. Det andra problemet är att high-level språk will encourage
vårdlös programmering, med tunga data structures, boxing och malloc
överallt, etc, och det finns inte mycket en compiler kan göra åt
det. Det finns inte mycket programmeraren kan göra åt det heller,
om han inte vet vad som händer under the hood. Den bästa high-level
compilern jag har sett är GHC, men Haskell är rätt low-level när man
tänker efter, det är bara det att det har high-level syntax.
nem wrote:Mitt stalltips brukar vara att man ska lära sig
programmeringens principer först, innan man tyngs ner av
lågnivåspråkens begränsningar. Python eller Ruby är alldeles
utmärkta språk för detta ändamål, och är också mer motiverande
för nybörjare eftersom man snabbare når resultat. Sedan måste man
enligt min erfarenhet förr eller senare lära sig C, vare sig man
vill eller ej, men jag tycker att det är bättre att skjuta upp
tills man lärt sig algoritmtänket man får av att programmera i
högnivåspråk.
I wholeheartedly disagree. När du lärde dig matte började du från
grunden upp. Du lärde dig inte en hög abstraction och använde den utan
att veta hur enkel matte fungerar. Hur många gånger har en av dina
lärare sagt "Jag vet att det här suger, men vi ska lära oss det för
att det är viktigt att förstå. Sen kommer ni uppskatte resten mycket
mer."?

1. Man tyngs inte ner av lågnivåspråkens begränsningar.

Lågnivåspråk kan göra vad som helst, men det är mer jobb för
programmeraren att göra det. Högnivåspråk å andra sidan ger dig en
abstraction för att göra vissa saker väldigt enkelt, men samtidigt ger
de dig begränsningar.

"[1..333].reverse.reverse.reverse.join" är inte så himla coolt.

När man jobbar med lågnivåspråk tyngs man ner av sin egen okunnighet,
när man jobbar med högnivåspråk tyngs man ner av språkets
abstractions.

2. Algoritmtänk

Hur kan någon analysera algoritmer om han inte vet något om maskinen
och the basic operations som algoritmen implementeras mot? Din average
"algoritmtänkande" Ruby-programmerare vet inte vad en quicksort är,
och även om han visste det skulle han inte kunna jämföra den mot en
mergesort.

Knuth skriver inte algoritmer i Ruby, my friend.
IL1
kqr
Posts: 3077
Joined: 2005-09-05 17:23:20
Location: Stockholm

Post by kqr »

Uh, jag är inte duktig, och det är jag inte heller över hobbynivå, men malloc() ger väl ändå programmeraren ganska bra kontroll över vad som händer? (Och därmed också hur mycket som allokeras och så vidare...)
Det går att skriva mycket effektiv kod i både C och C++. Självklart blir det ännu bättre i asm, men man måste ju också välja något som inte är ett helvete att jobba i. Att sitta och skriva hello world i ASM är en grej, att föreställa sig att göra ett stort databasapp i det är en annan.
Personligen tror jag att skicka parametrar till funktioner är mer intuitivt än att lagra parametrarna i rätt register för att interrupten ska tycka om dem. (Förlåt om jag har fel återigen, har bara nosat på asm och kernel programming...)

Och, nej, matte räcker inte som grund för att lära sig programmering. (Åtminstone inte matte A, jag vet inte allt för mycket om de andra...) Det är ett ganska speciellt tänk det där att forma så exakta instruktioner att de inte går att missförstå. Vi är vana vid att den som tar emot instruktioner kan ställa frågor och lära sig av sina misstag.

Nej, man tyngs inte av lågnivåspråkens begränsningar (ganska motsägelsefullt påstående i sig), däremot tyngs man av exaktheten... Som nybörjare är det mycket trevligare att slippa bry sig om olika variabeltyper och liknande till en början. Att programmera utan att se resultat (tänk segfault) är inte roligt.

När man jobbar med lågnivåspråk tyngs man ner av sin egen okunnighet,
Väldigt sant. När man börjar programmera är man också just okunnig. Högnivåspråkens begränsningar gäller inte riktigt som argument när man fortfarande håller på och lär sig standard input/output.

Angående algoritmer så är de inte heller som sagt så viktiga när man börjar lära sig programmering. Även om jag fullt håller med dig på den punkten. Jag som har lekt med C av och till har en programmeringsstil som är relativt raktpåsak och kortfattad. När jag skulle samarbeta med en annan med en grej i högnivåspråk så såg jag bara hans kod och det slog mig hur onödigt omskriven och lång den var för så enkla saker.

Men jag började också med såna långa omskrivna saker när jag var ny, det klickade bäst med mig, så det är oavsett såna man kommer börja med.

Högnivåspråk är ett lägre berg med trappa till det högre berget lågnivåspråk. Ingen idé att klättra uppför det högre direkt. ;)


EDIT: Btw, skulle du skriva kod i brainfuck om det vore det effektivaste? Min poäng är att man måste kompromissa. ;)
Baurken
Posts: 171
Joined: 2007-07-14 22:34:58

Post by Baurken »

Varför jag ville lära mig ASM, PHP, C++ var för att jag använder programmeringen till största del till att bygga s.k. extenders till ett spel, dvs. har en kompilerad kod som jag lägger till funktioner till.

Har inget problem med engelska på så sätt att jag inte förstår den, Men om man ska läsa längre texter och guider så föredrar jag svenska för jag tycker det är ett "skönare" språk att läsa. Men har ännu inte hittat någon guide inom ASM, som jag rekommenderas att börja med så läser en på engelska istället.

Var mycket mer matte än jag trodde det skulle vara, och det finns inte mycket mer jag hatar än "avancerad" matte. Och upphöjningar och omvandlingar mellan hexa, decimala och binära tal är i min mening hyfsat avancerad.

Så än så länge går det ganska trögt. Och det om att få material via universitet, då måste jag väl vara inskriven på universitetet?
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

Du har helt rätt inställning kr1sse, keep going strong.

malloc är finfint, men det är inte gratis eller
enkelt. http://en.wikipedia.org/wiki/Heap_%28programming%29 Använd
malloc så mycket du vill, men förstå att Ruby mallocar för minsta
lilla grej, och det är en anledning till att det är så slött.

Jag tycker inte att någon ska skriva assembly, eller brainfuck, och de
flesta programmerare behöver inte skriva C, men jag tycker att man ska
förstå det, för annars förstår man inte high-level-språket man
programmerar i. Hade jag blivit tvungen att skriva assembly för en ny
arch så hade jag skrivit en mini-compiler från ett lite enklare språk.

Jag lärde mig programmera från trial and error med high-level-språk,
och nu när jag tittar tillbaks var det inte särskilt effektivt. Om man
har en bra lärare eller bok, och kan förstå grunderna, så är segfaults
ärligt talat rätt ofarliga. C är ett väldigt minimalt språk, och det
finns mycket man kan göra för att hålla det motiverande för en
nybörjare. #include <glut.h> bara. Sen när man försöker introducera
personen till ett high-level-språk kommer han undra vad han ska göra
med classes, virtual functions, och lambdas om han inte kan göra någon
meningfull I/O till hårdvaran.

High-level-språk kommer leda en i en riktning där man memoriserar
syntax och library functions och tror att man blir en bättre
programmerare för det. I C behöver du lära dig en liten samling
kraftfulla koncept och sen kan du göra vadsomhelst, i Ruby kommer du
lära dig tusen olika sätt att assigna en variabel, och du blir inte
smartare för det.
IL1
User avatar
nem
Hedersbit
Posts: 4678
Joined: 2002-04-12 15:48:33
Location: Lund

Post by nem »

mirza* wrote:Jag kanske tog i lite för mycket.
Mina erfarenheter av att undervisa på universitet och att arbeta på ett programvaruföretag i Silicon Valley leder mig till andra slutsatser än dina. Jag låter det stanna där.

Här är en länk jag brukar rekommendera till den som vill lära sig programmera:
http://hetland.org/writing/instant-hacking.html
"Rightful liberty is unobstructed action according to our will within limits drawn around us by the equal rights of others."- Thomas Jefferson
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

nem wrote:Mina erfarenheter av att undervisa på universitet och att arbeta på ett programvaruföretag i Silicon Valley leder mig till andra slutsatser än dina. Jag låter det stanna där.

Här är en länk jag brukar rekommendera till den som vill lära sig programmera:
http://hetland.org/writing/instant-hacking.html
Appeal to authority? Your own authority? Come on. Nem, jag har också pluggat på uni, och, incidentally, jag jobbar också i Silicon Valley. We should get lunch sometime. För det mesta säljer mitt företag consumer hardware, men vi är kända för world-class software också. Jag jobbar i developer tools, vi skriver virtual machines och runtimes om dagarna, llvm-killarna sitter i kontoren bredvid oss, och gcc-folket är inte långt ifrån. Jag spelar regularly volleyball och fotboll med folk från Apple, Google, Facebook, och andra företag i närheten. Jag tycker att jag har träffat ett antal smarta programmerare, och jag tycker att jag kan the basics of hur man lär sig programmering. Jag vet mycket väl att du är en hel del smartare än mig, men i det här fallet är du helt enkelt out of your field. Det finns ingen enkel path som är 100% rätt, och det går mycket väl att lära sig programmering via Python, men de argument du har gjort för high-level-språk är fel, och jag har förklarat varför.
IL1
kqr
Posts: 3077
Joined: 2005-09-05 17:23:20
Location: Stockholm

Post by kqr »

Baurken wrote:omvandlingar mellan hexa, decimala och binära tal är i min mening hyfsat avancerad.
http://pozorvlak.livejournal.com/105840.html hjälper ganska bra när du ska konvertera hex->dec och motsatsen. :D

mirza*: ska läsa på mer om minneshanteringen där, för jag är lite nyfiken. Har aldrig riiiiktigt förstått ända ut. :P
Och, jo, C(++) är något man måste komma till förr eller senare, det är det verkligen eftersom det just nu utgör någon form av stomme i programmeringen. Men när man börjar är det för det mesta lättare om man får se resultat som ser professionella ut. När jag började leka med programmering så blev Visual Basic ett stort steg för mig, eftersom det såg ju ut nästan som "på riktigt". (Jag menar inte nödvändigtvis att man ska lära sig just Visual Basic (gillar varken Basic som språk eller Visual Studio-programmen), men något liknande som ger hjälp med de grafiska elementen.)

Sen har C och ASM lätt snyggast syntax. :D
User avatar
nem
Hedersbit
Posts: 4678
Joined: 2002-04-12 15:48:33
Location: Lund

Post by nem »

Ungefär samma sak som diskuterats i den här tråden kom idag upp på Slashdot:
http://ask.slashdot.org/article.pl?sid= ... 5&from=rss
men de argument du har gjort för high-level-språk är fel
Med tillbörlig respekt; jag samtycker inte. Bara för att du inte tycker dig tyngas ner av exempelvis minneshantering betyder det inte att andra inte gör det. Till det jag använder programspråk är lågnivåspråk dåligt lämpade. Att själv behöva sköta min minneshantering ger mig inte annat än huvudvärk, det står mellan mig och implementeringen av den algoritm jag behöver för min simulering.

För de som vill använda programmering som ett verktyg för ett annat ändamål är lågnivåspråk idag sällan att rekommendera. Jag har hjälpt något hundratal nya universitetsstudenter att börja med programmering (vilket för övrigt är en helt annan upplevelse än att själv studera), och med den erfarenheten i ryggen känner jag mig ganska säker i mitt påstående att för det stora flertalet så är lågnivåspråk sämre att lära sig programmering för problemlösning med.

Vet man när man börjar att ens mål är att man ska bli mjukvaruingenjör kan man måhända dra en annan slutsats.
När du lärde dig matte började du från grunden upp.
Jag är ganska övertygad om att du inte varit nära matematikens grund ännu. Började er lärare med Euklides tio axiom? Det är oftast inte förrän på de rent matematiska programmen på universitetsnivå man behandlar grunderna i plangeometri och aritmetik. I första klass upplever de flesta Elementa som lite tung kurslitteratur. Många upplever att de tyngs ner av postulat, matematisk bevisning och definitioner. Inget av vilka faktiskt är direkt nödvändigt för att memorera multiplikationstabeller och beräkna arean av kohagar.
"Rightful liberty is unobstructed action according to our will within limits drawn around us by the equal rights of others."- Thomas Jefferson
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

nem wrote:Ungefär samma sak som diskuterats i den här tråden kom idag upp på Slashdot:
http://ask.slashdot.org/article.pl?sid= ... 5&from=rss
men de argument du har gjort för high-level-språk är fel
Med tillbörlig respekt; jag samtycker inte. Bara för att du inte tycker dig tyngas ner av exempelvis minneshantering betyder det inte att andra inte gör det. Till det jag använder programspråk är lågnivåspråk dåligt lämpade. Att själv behöva sköta min minneshantering ger mig inte annat än huvudvärk, det står mellan mig och implementeringen av den algoritm jag behöver för min simulering.

För de som vill använda programmering som ett verktyg för ett annat ändamål är lågnivåspråk idag sällan att rekommendera. Jag har hjälpt något hundratal nya universitetsstudenter att börja med programmering (vilket för övrigt är en helt annan upplevelse än att själv studera), och med den erfarenheten i ryggen känner jag mig ganska säker i mitt påstående att för det stora flertalet så är lågnivåspråk sämre att lära sig programmering för problemlösning med.

Vet man när man börjar att ens mål är att man ska bli mjukvaruingenjör kan man måhända dra en annan slutsats.
Well, the topic är ASM, C, C++, plugins till spel, runtime code injection, etc. Rätt low-level grejer. Jag tycker att Python är alldeles utmärkt om ens mål är att programmera Excel macros.
nem wrote:
När du lärde dig matte började du från grunden upp.
Jag är ganska övertygad om att du inte varit nära matematikens grund ännu. Började er lärare med Euklides tio axiom? Det är oftast inte förrän på de rent matematiska programmen på universitetsnivå man behandlar grunderna i plangeometri och aritmetik. I första klass upplever de flesta Elementa som lite tung kurslitteratur. Många upplever att de tyngs ner av postulat, matematisk bevisning och definitioner. Inget av vilka faktiskt är direkt nödvändigt för att memorera multiplikationstabeller och beräkna arean av kohagar.
Att säga att vector spaces är grunden i matematik är som att säga att lambda calculus är grunden i programmering. På sätt och vis har man rätt, men samtidigt är det helt irrelevant in the real world. Å andra sidan kan de flesta människor, efter en kort introduktion, lösa enkla problem med en Turing machine, även om den är hopplöst low-level. Enligt min korta erfarenhet är det lättare för folk att lösa problem om de börjar "lågt", konkret, flyttar lite data omkring, och sedan abstraherar; istället för att börja uppifrån och försöka lösa ett abstrakt definierat problem.
IL1
User avatar
nem
Hedersbit
Posts: 4678
Joined: 2002-04-12 15:48:33
Location: Lund

Post by nem »

mirza* wrote:Well, the topic är ASM, C, C++, plugins till spel, runtime code injection, etc. Rätt low-level grejer. Jag tycker att Python är alldeles utmärkt om ens mål är att programmera Excel macros.
PHP nämndes explicit. I mina ögon inte särskilt lågnivå.

Makron till Excel? Du tar verkligen i från tårna.
mirza* wrote:
nem wrote:
När du lärde dig matte började du från grunden upp.
Jag är ganska övertygad om att du inte varit nära matematikens grund ännu. Började er lärare med Euklides tio axiom?
Att säga att vector spaces är grunden i matematik är som att säga att lambda calculus är grunden i programmering.
Nu är det någon som är långt utanför sitt område.
"Rightful liberty is unobstructed action according to our will within limits drawn around us by the equal rights of others."- Thomas Jefferson
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

mirza* wrote: Jag lärde mig programmera från trial and error med high-level-språk,
och nu när jag tittar tillbaks var det inte särskilt effektivt. Om man
har en bra lärare eller bok, och kan förstå grunderna, så är segfaults
ärligt talat rätt ofarliga. C är ett väldigt minimalt språk, och det
finns mycket man kan göra för att hålla det motiverande för en
nybörjare. #include <glut.h> bara. Sen när man försöker introducera
personen till ett high-level-språk kommer han undra vad han ska göra
med classes, virtual functions, och lambdas om han inte kan göra någon
meningfull I/O till hårdvaran.
Fast det behöver man inte längre.

Hårdvaran du köper har iallafall inga specs att titta på, så om du inte inkluderar
OpenGL-includes blir det ingen 3D på dina SLI-gfxkort hur mycket asm du än försöker lära
dig. Du kommer ha köpt 6 nya olika grafikkkort innan du fått 3D i asm på ditt befintliga.

Om man däremot ger en nybörjade nåt i stil med pyGame eller annat högnivåspråk med
GL-hooks så tror jag det kommer statistiskt sett mycket fler 3D-spel ur den personen än
om man tvingar ner personen på en på tok för låg nivå innan de ens kan programmera ordentligt.

Jo, jag är på nem's linje här. På ZX81,Vic-20, C64 och Amiga kändes det relevant att lära
sig asm före t.ex C eller forth (och efter basic som man var tvungen att börja med), men
redan mot slutet av amigans tidsålder visade det sig att vissa saker gjorde sig bra i asm, men
de stora projekten gjordes av folk som skrev i språk på högre nivå. Demos och spel i all ära,
men i avdelningen för folk som faktiskt producerade både många, stora och bra program så
var det C eller högre nivå som gällde. Asm-folket (mig inklusive) satt och whine:ade om förlorad
prestanda men lyckades sällan skriva saker med mycket mer än ett par K med reell kod.

Nuförtiden skriver jag mest shellscripts, lustigt nog. Våra 3GHz-datorer manglar våra datamändger
så fort att det är viktigare att inte min tid går åt än CPU-tiden. Visst, jag servar knappast
3D-realtidsdata, men vi har så mycket maskiner och så många cpu:er per styck att argumentet
att "det skulle gå fortare om du debuggade lite segfaults i C en timme och sen fick ett program
som går på 30 sek istället för 10 minuter" inte riktigt funkar.

Ser man på vart många programmeringstimmar läggs idag så är det saker för webben,
tomcats, frameworks och andra löjligt högnivåspråk där det inte bara är dumt utan rent
orimligt att räkna cykler-per-instruktion osv. Source-koden för Win95 sas till mig innehålla
över 50 st. separata versioner av bubble-sort, alla lite olika. Tyvärr är det även min erfarenhet
av hur asm-programmering brukade sluta. Inte nog med att man ska uppfinna allt från scratch,
man ser inte att andra delar av ett riktigt stort projekt redan kan ha löst ett av mina delproblem.
Skulle man haft nåt bloat:at framework som hade en .sort()-metod så skulle man slippa råka
göra den typen av misstag, och kanske t.o.m råkat få en sorteringsalgoritm som inte är den
absolut sämsta för allt utom redan-sorterat-data.

Självklart kanske kompilatorn får jobba lite
på att veckla ut de 23 indirekta referenserna så anropet till sort() för din typ av data får sin
rätta kod, kanske blir den sort:en 2 cyckler sämre per iteration, men att slippa betala en programmerare
för att åter igen uppfinna bubble-sort är nog värt det.

Det känns nästan synd att se den här diskussionen efter snart 20 år komma tillbaka. Ja, bloat
är lite synd, men att spendera smart-programmerar-tid på återimplementationer är faktiskt värre.
Moore's Law confirms it.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
mirza*
Posts: 1267
Joined: 2002-04-19 15:46:47

Post by mirza* »

Guys, guys, vi pratar omkring varandra. Ingen ska skriva om Windows i assembly, men om de som skriver kerneln inte kan assembly är resultatet rätt kört.
mirza* wrote:Tycker att ASM, C, och C++ går hand i hand. En vettig C-programmerare kan ASM lika bra, annars förstår han inte C. Och förstår han inte C så förstår han inte C++ heller.
mirza* wrote:Jag tycker inte att någon ska skriva assembly, eller brainfuck, och de
flesta programmerare behöver inte skriva C, men jag tycker att man ska
förstå det, för annars förstår man inte high-level-språket man
programmerar i.
See, mitt argument är enkelt: (1) man bör förstå vad som händer under the hood, och (2) folk lär sig bättre när de börjar konkret och förstår vad som händer istället för att bolla abstrakta koncept i huvudet.

--
nem wrote:
mirza* wrote:Well, the topic är ASM, C, C++, plugins till spel, runtime code injection, etc. Rätt low-level grejer. Jag tycker att Python är alldeles utmärkt om ens mål är att programmera Excel macros.
PHP nämndes explicit. I mina ögon inte särskilt lågnivå.

Makron till Excel? Du tar verkligen i från tårna.
Jag struntade i PHP i min första post. De flesta Python-program är på samma nivå som Excel-makron. Hur många nontrivial Python-program har du sett? Du har Eve Online, ett antal coola web-frameworks, ORM och bindings till sql-clients, but that's about it. Look around you. OS X är den env som har flest program skrivna i ett nästan high-level språk: Objective-C, och de flesta är ändå ett ihopknåp av C, Objective-C, och C++.

Btw, Twitter is down again. ;o
nem wrote:
mirza* wrote:
nem wrote:
När du lärde dig matte började du från grunden upp.
Jag är ganska övertygad om att du inte varit nära matematikens grund ännu. Började er lärare med Euklides tio axiom?
Att säga att vector spaces är grunden i matematik är som att säga att lambda calculus är grunden i programmering.
Nu är det någon som är långt utanför sitt område.
Helt rätt, jag har knappt en halv utbildning i matematik. Som du vet pluggar jag utomlands, och jag antog att "plangeometri" är svenska för vector spaces.

Notera: Euclidean planes, 10 axioms: http://en.wikipedia.org/wiki/Vector_space

Honest mistake. Resten av mitt argument, som jämför lambda calculus och Turing machines, är inte särskilt beroende på det.
IL1
Post Reply