Forumet - Programmeringsresurser

Programmeringsresurser

780 0 33
Jag tycker att den här tråden skall väckas ur graven.

Hej på er barn och ungdomar. Idag ska farbror Jöns berätta hur man programmerar. Inte riktigt, men ni som har blivit sugna på att göra eran första applikation, eran första webbsida eller ert första bash-script måste ha någonstans att starta ifrån, eller hur? Självklart, därför ska jag lista lite guider och referenser här.

Kom ihåg, ni gamla godingar, ni får gärna bidra med egna länkar.

--==PROGRAMSPRÅK, SORTERADE PÅ ANVÄNDNINGSOMRÅDE==--
Webdesign

PHP
http://php.net - överlägsen ifall du vill lära dig php. Har både grundläggande tutorial och funktionsrefernser.
http://www.phpportalen.net/ är ovärderliga för nybörjaren. Hittar man inte svaret i någon tidigare tråd går det att fråga själv och få ett trevligt svar tillbaka.

HTML/XHTML
http://htmldog.com/ - Mysig validerande XHTML/CSS-grund.

Jag listar just nu inte w3schools pga http://w3fools.com/

Högnivåspråk

C++
http://www.cplusplus.com/doc/tutorial/ - ger en bra grundläggande guide till hur man programmerar i C++. Inga fönster, forkar eller annat krångel, bara ren och skär programmering.
http://msdn2.microsoft.com/sv-se/library/60k1461a(VS.80).aspx - MSDN är alltid en gott ställe att leta på. Säga vad man vill om Microsoft, men MSDN är ett bra verktyg för programmerare. Där kan man även hitta Express-utgåvor av produkter från deras Visual Studio-paket, vilka är fenomenal miljö att programmera i.
http://www.cppreference.com/ - Bra sida med grundläggande C++-syntax.

Java
http://java.sun.com/javase/6/docs/api/

C#
http://www.softsteel.co.uk/tutorials/cSharp/cIndex.html - grunderna i C#.
http://msdn2.microsoft.com/sv-se/library/kx37x362(VS.80).aspx - MSDN igen. Fortfarande bra referenser och liknande.

Databaser

SQL
http://www.w3schools.com/sql/default.asp

Funktionell Programmering

Haskell
http://www.haskell.org
http://wxhaskell.sourceforge.net/doc/
http://www.haskell.org/gtk2hs/

Scriptspråk och annat

Python
http://docs.python.org/
http://wiki.imbumba.se/Python_Och_Jag

Objective CAML
http://www.ocaml-tutorial.org/

--==NISCHAD PROGRAMMERING==--

Spelprogrammering
http://www.gamedev.net/ - Spelprogrammeringssidan nummer ett. Rekommenderas starkt ifall du vill utveckla spel.
http://nehe.gamedev.net/ - Grundläggande OpenGL-guide för 3D-grafik i spel. Rekommenderas av GameDev.net
http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/index - Grundläggande SDL-guide för 2D-grafik i spel. Rekommenderas av GameDev.net
http://www.gamedev.se är svenska motsvarigheten till Gamedev.net med en del kunnigt folk.

--==ALLMÄNT==--
http://www.codeproject.com/ har väldigt mycket bra exempelkod och artiklar, en guldgruva för alla utvecklare.
http://wikibooks.org/ - bra sida med flera gratisböcker under wikilicens.
http://www.jjj.de/fxt/fxtbook.pdf - Algoritmer för programmering
http://win32assembly.online.fr/ är antagligen den mest kända tutorial:en för Win32-asm

Nu kommer jag inte på så mycket mer. Dela gärna med er av era tutorialtips, kom ihåg; Sharing is Caring, speciellt när man talar om mjukvara :D
Comrade Premier:

Jag listar just nu inte w3schools pga http://w3fools.com/


W3Schools må vara shit fail, men W3Fools är inte mycket bättre:

W3Fools:

> JavaScript code (or just JavaScript) is a sequence of JavaScript statements.

Apparently declarations and expressions can go right to hell (since JavaScript only is a sequence of statements).


W3Fools har uppenbarligen aldrig hört talas om att en toppnivån hos valfri JS-grammatik ser ut någonting i stil med:
Program ::= [Statement]
Statement ::= Expression | Declaration | ...

W3Fools:

>Use the for...in statement to loop through an array:

This is wrong. You should never use for..in to loop through an array, since it will enumerate any properties or methods that are attached to Array.prototype (or the Array object itself).


För det första är deras klagomål direkt inkorrekt; for..in fungerar alldeles utmärkt att använda på arrayer, och listar inte alls attribut eller metoder på arrayobjektet. För det andra undrar jag vilken sorts idiot som skulle få för sig att lägga till nya metoder och attribut till ett array-objekt, eller ännu värre, Array.prototype!

W3Fools:

>Scripts in <head>

In older browsers, placing scripts in the <head> has a negative impact on page performance. Until the script is done loading, resources below the script are blocked from downloading, and elements below the script are blocked from rendering. So try to put scripts at the bottom of the page, when possible.


...eller så använder man sig av delay-laddade script istället, och slipper kludda upp dokumentets semantik med failoptimerade <script>-taggar.

W3Fools:

It lists new Array() as the way to create an array. The problem is that this is the old, slower way. The new way, [] is shorter and it makes you look cool.


De gnäller på detta över new Object() vs. {} också, och det är inget annat än nån sorts efterblivet försök att påtvinga andra sitt eget sinne för estetik. Jag betvivlar starkt att new Array() är märkbart långsammare än [] oavsett vilken JS-tolk som används.

W3Fools:

That's weird, I am *pretty* sure that ampersands are not characters that need to be escaped in JS strings, but maybe I have been doing it wrong this whole time!?!? Maybe they meant that it is an HTML special character, so using it in JS blocks inside the HTML document can cause problems.


Nu missförstår de med vett och vilje. Naturligtvis behöver ' escape:as om man använder dem inuti en sträng med ' omkring.

I och för sig refererar de hela tiden till jQuery, så man kanske inte borde förvänta sig nåt vett därifrån...

Spana också in:

Lambda89:

Vett och vilje till trots, vad är det för fel med jQuery? [tard]


Inte lika effektivt, inte lika snabbt och ett ganska trubbigt verktyg överlag. Snabbare att utveckla i DOM- och AJAXtunga situationer än traditionell JavaScript, men kostnaden är rätt hög. Speciellt att det finns webbutvecklare som sätter sig i situationen att lära sig jQuery framför JavaScript, när jQuery, precis som andra ramverk, skall ses som ett komplement till språket.

I korthet, kritiken är att:
* Folk som enbart lär sig jQuery blir sämre utvecklare.
* jQuery är långsammare än traditionell JavaScript.
* jQuery marknadsförs som något fantastiskt universalverktyg, istället för vad det är; ett bra verktyg i vissa situationer. Denna myt är utbredd och leder till att klientside-scripting i JavaScript onödigt bökig då man anser att man måste slå i en spik med en Bagger 288.

I övrigt är det ett ganska okej verktyg.
Lambda89:

Okej. Tyvärr tillhör jag nog den där kategorin av urusla utvecklare som använde jQuery till allt. Tyvärr är det en del av yrkesrollen. Det finns liksom inte tid att hacka saker i JavaScript för hand, om det går att göra med jQuery.


Det är inte realistiskt att använda "rå" JavaScript kontinuerligt, dock borde du lära dig att åtminstone göra DOM-manipulation och AJAX-anrop utan jQuery för att få koll på hur det genomförs. När du vet vad du gör kan du börja använda ett ramverk för det.
Lambda89:

Vett och vilje till trots, vad är det för fel med jQuery? [tard]


jQuery är, precis som Perl, något man skriver en gång och sedan ingen någonsin kan läsa. Att det dessutom uppmuntrar till att pissa sidoeffekter kors och tvärs överallt i koden och är fantastiskt bloatat gör inte precis situationen bättre.

- - - - - - - - - - - - - - - - - Sammanslagning 1 - - - - - - - - - - - - - - - - -


Lambda89:

Tyvärr tillhör jag nog den där kategorin av urusla utvecklare som använde jQuery till allt. Tyvärr är det en del av yrkesrollen.


Det är den sortens inställning som gör att resten av IT-världen ser webbapa som lägsta gemensamma nämnare.

Comrade Premier:

Det är inte realistiskt att använda "rå" JavaScript kontinuerligt


Snarare är det inte realistiskt att använda jQuery till någonting som har några som helst kvalitetskrav, annat än möjligtvis för mer invecklade DOM-operationer.

Blivande_japan:

önskar att du ist kunde förklara för mig hur man löser 1b
http://www.kth.se/polopoly_fs/1.80856!1035-010-36.pdf
tack på förhand!


Det är lätt; du behöver bara använda en zygohistomorfisk prepromorfism.
Kan förutom java-api:t tipsa om ett gäng stegförsteg-tutorials för den som är sugen på att börja koda lite java. Tips är dock att skaffa en riktig utvecklingsmiljö snabbt och inte hålla på och grotta för länge med kommandorad och java och javac. Några exempel är netbeans, eclipse eller liknande, eclipse funkar extra bra för nybörjare eftersom syntaxkollen är såpass välutvecklad.

http://www.oracle.com/technetwork/topics/newtojava/gettingstarted-jsp-138588.htm...
Gentlernen:

Det är den sortens inställning som gör att resten av IT-världen ser webbapa som lägsta gemensamma nämnare.


Inställning? Klart jag skulle vilja kunna skriva saker i största möjliga mån med JS. Därmed inte sagt att det kommer leda till att jag håller varken deadlines eller budget. Ber om ursäkt om det "kränker", men jag gillar att ha ett jobb, oavsett om jag anses vara lägst eller inte.

Gentlernen:

jQuery är, precis som Perl, något man skriver en gång och sedan ingen någonsin kan läsa.


Håller inte med om att jQuery skulle vara svårläst. Definitivt inte mer än vad JavaScript självt redan är. Men det är väl tycke och smak, antar jag. Inget att argumentera om.
Gentlernen:

Snarare är det inte realistiskt att använda jQuery till någonting som har några som helst kvalitetskrav, annat än möjligtvis för mer invecklade DOM-operationer.


Det finns inte ett enda kommersiellt webbprojekt där folk tycker om JavaScript så mycket att en minskning av utvecklingstiden på mellan 50%-90% överväger att skriva lite finare kod.
Comrade Premier:

en minskning av utvecklingstiden på mellan 50%-90%


Källa eller GTFO.

Jobbigare DOM-manipulering är ett legitimt användningsområde för jQuery, men fanskapet har den fula ovanan att sprida sin $%__:,??-liknande kod till områden där den överhuvudtaget inte har någonting att göra.

Lambda89:

Klart jag skulle vilja kunna skriva saker i största möjliga mån med JS. Därmed inte sagt att det kommer leda till att jag håller varken deadlines eller budget.


Jag hoppas verkligen att du inte menar att du faktiskt behöver jQuery för att alls kunna utföra de uppgifter du använder det till, utan bara att tiden inte räcker till?
Gentlernen:

Jag hoppas verkligen att du inte menar att du faktiskt behöver jQuery för att alls kunna utföra de uppgifter du använder det till, utan bara att tiden inte räcker till?


Beror på vad du menar med "kan". Nej, jag skulle inte kunna skriva en egen variant av jQuerys animate-funktioner. Vad är det jag "måste kunna" för att inte framstå som en idiot nu då?
Lambda89:

Nej, jag skulle inte kunna skriva en egen variant av jQuerys animate-funktioner.


Seriöst, är koden under för svår för dig?
function hide(obj) {
if(obj.style.width <= 0 && obj.style.height <= 0)
return;
else {
if(obj.style.width > 0)
obj.style.width -= 1;

if(obj.style.height > 0)
obj.style.height -= 1;

setTimeout(function() {
hide(obj);
}, 5);
}
}


... och du kallar dig utvecklare? wtf
Lambda89:

Beror på vad du menar med "kan". Nej, jag skulle inte kunna skriva en egen variant av jQuerys animate-funktioner. Vad är det jag "måste kunna" för att inte framstå som en idiot nu då?


Att skriva komplicerade program i Haskell är enkelt; eftersom språket är så högnivå är det bara att tuta och köra så tenderar allting att bara fungera. Men så vill du testa ditt program på ett större dataset, och helt plötsligt blir allting helt otroligt långsamt utan att du har någon som helst aning om varför. Vad gör du i den situationen om du inte förstår på ett ungefär vad en viss bit Haskell faktiskt gör när den körs på en maskin i verkligheten?

Samma sak gäller alla högnivåkoncept; språk, frameworks, designmönster, tekniker, etc. Du kan inte utvärdera, välja och implementera dem effektivt och pålitligt om du inte har en ganska god förståelse för dem. Om så var fallet hade du kunnat sätta Google och PHP för dummies i händerna på vilken gymnasieelev som helst och sedan låta dem skriva kontrollsystem för dialysmaskiner!

Skulle du vilja åka med en pilot som inte vet hur man flyger eftersom autopiloten i dagsläget sköter flygningen på egen hand för det mesta, eller kanske anlita en elektriker som glatt pluggar in sladdar i kontakten med rätt färg enligt en manual, men som inte förstår skillnaden på likström och växelström?
Gentlernen:

Källa eller GTFO.


Har ingen källa, och orkar inte leta fram någon, men tycker du inte att smartare selektorer, cross-browser, jQuery.ajax(), jQuery UI samt ett pluginstöd som dessutom är relativt välpopulerat inte bidrar till en kraftigt ökad utvecklingshastighet så behöver du inte.

EDIT
Gentlernen:

eller kanske anlita en elektriker som glatt pluggar in sladdar i kontakten med rätt färg enligt en manual, men som inte förstår skillnaden på likström och växelström?


Jag tror att 50% av de som installerade iaf Fortums nya elmätare tillhörde den kategorin.
Gentlernen:

Samma sak gäller alla högnivåkoncept; språk, frameworks, designmönster, tekniker, etc. Du kan inte utvärdera, välja och implementera dem effektivt och pålitligt om du inte har en ganska god förståelse för dem.


Stämmer bra, men förståelsens djup kan variera och det riktiga djupet tar tid att skaffa sig. På en utbildning eller hemma framför datorn kan man tillägna sig mycket kunskap och erfarenhet, men vissa saker är svåra att komma åt utan väl tilltagen yrkeserfarenhet. De flesta yrkeserfarna jag har pratat med, är inte direkt stolta över vad de kodade ihop de första två åren av sin karriär.

Designmönster är förresten ett riktigt bra exempel på vad jag menar med olika djup av förståelse. Att man har en god förståelse för konceptet i sig, innebär ju inte alls per automatik att man har hunnit skaffa sig en såpass djup designkunskap/erfarenhet, att man för ett specifikt system med specifika begränsningar kan avgöra om designmönstret är lämpligt att använda. Att man kan kika i java-sdk och förstå hur langklasserna fungerar, innebär inte heller att man hade varit mogen att koda upp dem själv.
Cruella De Vil:

De flesta yrkeserfarna jag har pratat med, är inte direkt stolta över vad de kodade ihop de första två åren av sin karriär.


Jag tycker snarare att yrkeserfarenhet överskattas. Folk ser yrkeserfarna år istället för vad man gjort med dem. Ifall man inte kan de underliggande koncepten och bara jobbar på med någon pissig YH-utbildning leder det till att det tar flera år för en att lära sig vad man borde kunnat från början.