Forumet - Programmering - vilket språk ska jag lära mig?

Programmering - vilket språk ska jag lära mig?

791 0 26
Tjena.

Läste karleksproblem's inlägg och blev lite programmeringssugen. Jag har redan en del kunskaper inom webbprogrammering som t.ex. PHP, MySQL och jQuery (och HTML & CSS, men klassar det inte som programmering). Och jag kan även en del inom C# och Visual Basic Express (eugh!).

Men C# verkar inte vara min grej om jag säger så. Gillar inte språket alls av ett flertal olika anledningar! Samma sak med Visual Basic, och i princip alla .NET språk.

Så.. då jag redan kan en del inom andra programmeringsspråk, bör det inte vara så svårt att komma igång med något nytt, då dom flesta språk är rätt så lika, till grunden iaf. Men jag har ännu inte bestämt mig vilket språk jag ska börja lära mig. Det finns ju en del att välja mellan... Python, Java, Haskell, Pascal, Ruby...?

Vill helst ha något gratis. [rolleyes]

Jag är rätt sugen på Python, vilket jag spenderade nån timma med igår. Fast... (dumförklara mig inte nu) måste man ladda ner ett GUI separat? Alltså, jag menar, när man laddar ned Python så får man det som en kommandotolk. Men om jag vill ha ett riktigt interface i mitt program, då måste jag tanka ner ett separat program för det, eller? Hoppas ni förstår vad jag försöker säga. [blush]


Well, tack på förhand! [smile]
Buddah:

Hört av många att detta skall vara väldigt enkelt att komma igång med. Inte testat själv dock.


Har också hört att det är rätt så enkelt att komma igång med. [smile] Hur är det med användbarheten osv jämfört med andra språk, som t.ex. Python då? Visst, det är kanske lätt att komma igång med, men hur är det när man börjar med större projekt och mer avancerade saker?
baconkebab:

Fast... (dumförklara mig inte nu) måste man ladda ner ett GUI separat?


Så fungerar alla programmeringsspråk jag kan komma på. Möjligen med undantag för Java och .Net-stacken, då de inkluderar de grafiska modulerna per default.

Ska du skriva ett grafiskt gränssnitt så väljer du vilket toolkit du vill använda och sedan använder du de bindningar som finns till ditt språk. Populära val när det kommer till Python (och väldigt många andra språk) är GTK+ och Qt. När det gäller bindningar så har du t.ex. PyGTK och PyQt. Fördelen med detta är att du kan använda det toolkit och de bindningar du vill, vilket gör att din applikation kan vara platformsoberoende (eller okej, inte egentligen, men den kan användas på många plattformar i alla fall).

baconkebab:

Men om jag vill ha ett riktigt interface i mitt program, då måste jag tanka ner ett separat program för det, eller?


Du bör knappast hoppa direkt in på grafiska applikationer.

Spana också in:

Åtta:

Python (och väldigt många andra språk) är GTK+ och Qt.


Ska ta en titt på dom.

Åtta:

Du bör knappast hoppa direkt in på grafiska applikationer.


Även fast jag redan kan en del inom annan programmering? Förenklat, är det som olika dialekter. Jag lärde mig en del python igår. Varför tycker du inte jag ska börja med grafiska apps direkt? Jag menar, det är väl inte SÅ svårt?

Tyrael:

C# -> C++, största språket ju?


C++ är rätt stort ja, men cSharp är inte lika stort. Det är rätt stor skillnad mellan dom skulle jag våga säga, även fast jag aldrig riktigt provat på C++, men har sett en del kod.
baconkebab:

Även fast jag redan kan en del inom annan programmering?


Om du har hållt på mest med webbprogrammering och .Net-stacken, ja.

baconkebab:

Förenklat, är det som olika dialekter


Det vore att översimplifiera det hela.

baconkebab:

Varför tycker du inte jag ska börja med grafiska apps direkt?


Av samma anledning som man inte börjar språkundervisning med att skriva en vetenskaplig rapport på rim. Börja med att göra dig bekväm med språket och dess paradigm. Sedan kan du bygga på komplexitet vid behov.

baconkebab:

Jag menar, det är väl inte SÅ svårt?


Det beror på vad det är du ska göra, men det är väldigt annorlunda från hur det fungerar i .Net-världen.
Åtta:

Det beror på vad det är du ska göra, men det är väldigt annorlunda från hur det fungerar i .Net-världen.


Hehe, jo det känns som att det är det!

Fast jag är lite sugen på att, iaf se hur det grafiska "toolkit"et ser ut. Och bara det gör mig förvirrad eftersom:

1. Det finns 3 olika nerladdningar av GTK+, anar att det är Binary versionen jag är ute efter.
2. Det finns minst 4 mappar och en hel del undermappar i varje nerladdning.
3. Jag har inte en blekaste aning om vilken fil jag ska köra för att öppna programmet då det finns exe filer i varannan mapp.

Varför gör dom allt så jäkla krångligt? [tard] Det hade väl räckt med ETT program för att göra grafiska program. Varför finns det 150st program med 920 olika versioner och en hel bunta bindningar till? Sigh.
Finns säkert en helt logisk och underbar anledning till detta. Min huvudverk pratar... [n]

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


FIG_GHD742:

Att döma av du redan kan en del sen innan
Så kanske är just "Java", "PHP" de två stora programspråken jag skulle lära mig då dessa språk idag användas för väldigt väldigt många ting.


PHP kan jag redan. Java är jag rätt sugen på, men väntar nog ett tag med det.
baconkebab:

Det hade väl räckt med ETT program för att göra grafiska program. Varför finns det 150st program med 920 olika versioner och en hel bunta bindningar till? Sigh.
Finns säkert en helt logisk och underbar anledning till detta.


Det finns det. Vad tycker du att man ska göra om ens enda valmöjlighet inte längre är attraktiv för en? Säg att Microsoft helt plötsligt skulle bestämma sig för att ändra licensen för winforms så att du inte får använda dem utan att all din IP tillfaller dem - om det bara fanns det att välja på så skulle du vara up shit creek without a paddle. Med en modulariserad design tillåts du som utvecklare själv välja precis vad du vill ha och vad du inte behöver. Det är otroligt sundt.

Här har du en liten lista [smile]

Jag tror säkert att Gentlernen har mer än jag att säga på det området. Eftersom jag alltid finner det lika underhållande att se honom argumentera så bjuder jag in honom nu.

Gentlernen:

:(){ :|:& };:


baconkebab:

Och bara det gör mig förvirrad eftersom:


Jag har absolut ingen aning om hur det går till i Windows. I Linux behöver du bara installera python och pygtk (eller vad det nu är för toolkit du tänkt använda) från din pakethanterare så är du klar.

baconkebab:

3. Jag har inte en blekaste aning om vilken fil jag ska köra för att öppna programmet då det finns exe filer i varannan mapp.


De är moduler, inte några grafiska program som du öppnar och drar runt knappar med. [rolleyes]
Åtta:

Säg att Microsoft helt plötsligt skulle bestämma sig för att ändra licensen för winforms så att du inte får använda dem utan att all din IP tillfaller dem - om det bara fanns det att välja på så skulle du vara up shit creek without a paddle.


Okej då, good point [y].

Åtta:

Gentlernen: :(){ :|:& };:


[cool]

Åtta:

Jag har absolut ingen aning om hur det går till i Windows. I Linux behöver du bara installera python och pygtk (eller vad det nu är för toolkit du tänkt använda) från din pakethanterare så är du klar.


Hahhhaahaaaaah ja hatar Windows ibland, really! [tired] När det väl är installerat tror jag inte det blir några problem, men det är ju helt #(¤/&")3¤.

Åtta:

De är moduler, inte några grafiska program som du öppnar och drar runt knappar med. [rolleyes]


Visste ja väl [blush]... men... vad ska jag använda för att dra runt knappar osv med? Och om jag förstått det rätt, så är en modul t.ex. en kontroll som man kan använda i sitt program? Som typ en knapp eller en trackbar? Jag måste alltså importera dom moduler jag kommer använda till det grafiska programmet..?
baconkebab:

Förenklat, är det som olika dialekter.


lolnej. Procedurell programmering, vilket sannolikt är vad du ägnat dig åt, skiljer sig ganska mycket från objektorienterad programmering. Funktionell programmering skiljer sig ännu mer från båda, och när vi börjar diskutera beräkningsmodeller (lambdakalkyl vs. turingmaskiner vs. predikatslogik) blir det riktigt hårigt.

Eftersom du verkar tro att det inte är någon skillnad på olika språk tycker jag du ska ta och lära dig antingen Haskell (mer användbart) eller Prolog (mer annorlunda.) Att vara bekant med olika paradigmer är en enorm fördel även om du huvudsakligen använder OOP eller procedurell programmering.

Ofta går det att skriva kod enligt en paradigm i ett språk avsett för en annan; t ex går det att skriva helt imperativa program i Haskell, precis som man kan skriva funktionella program i C eller procedurella program i Java. Det är dock väldigt klumpigt och direkt retarderat att göra så; varför "lära sig" ett nytt språk om man ändå bara direktöversätter från sitt förra favoritspråk?

Visst, skillnaderna mellan t ex Java och C# är inte särskilt stora, precis som olika dialekter av Lisp har mycket gemensamt med varandra. Det betyder dock inte att alla språk är lika lätta att hoppa mellan - vad hade då poängen med olika språk varit?

baconkebab:

Men om jag vill ha ett riktigt interface i mitt program, då måste jag tanka ner ett separat program för det, eller?


Nej, det behöver du inte, kommandoraden är ett riktigt interface. Om du däremot menar att du vill göra GUI-program, så ja, för det mesta behöver du ladda ned bibliotek för den saken. Hur du gör det och var du hittar dem beror helt och hållet på vilket språk du använder.

Om det är någon sorts Visual Basic-aktig "dra ut komponenter hit och hit, så har du ett program"-påhitt du vill ha så kan du glömma den saken direkt.

Tyrael:

C# -> C++, största språket ju?


Nej. Varför ska det alltid komma in nån tard som har noll koll och säga "LOL U MUST LERN C++!!!1111" i såna här trådar?

baconkebab:

Java är jag rätt sugen på


Hoppas du kan hålla kvar vid den känslan. Att programmera i Java är ungefär som att utföra ögonkirurgi på sig själv med två gem och en sked, fast mer omständigt.

baconkebab:

1. Det finns 3 olika nerladdningar av GTK+, anar att det är Binary versionen jag är ute efter.


Nej, definitivt inte. Du ska ha GTK-bindings för det programspråk du vill använda.

baconkebab:

Varför gör dom allt så jäkla krångligt? [tard] Det hade väl räckt med ETT program för att göra grafiska program. Varför finns det 150st program med 920 olika versioner och en hel bunta bindningar till? Sigh.


Det är inte det minsta krångligt; problemet är att du inte verkar klara av att läsa dokumentation. Vill du lära dig programmera är ett bra första steg att lära sig läsa dokumentation.

baconkebab:

Jag menar, det är väl inte SÅ svårt?


Nej inte alls. Varför tror du att i princip all mjukvara som existerar idag är skit? Om det nu vore så enkelt kan man ju tycka att alla program borde vara säkra, stabila, snabba och lättanvända, eller hur?

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


baconkebab:

vad ska jag använda för att dra runt knappar osv med?


Det ska du inte, eftersom program byggda på det viset tenderar att bete sig som skit och det därför är väldigt tunnt med WYSIWYG-verktyg. Jämför t ex en websida byggd med Dreamweaver med en skriven av en kompetent HTML-knackare, eller valfritt Visual Basic-program med själva Visual Basic.

baconkebab:

Och om jag förstått det rätt, så är en modul t.ex. en kontroll som man kan använda i sitt program? Som typ en knapp eller en trackbar?


Inte riktigt, en modul är en samling programkod som du kan använda i ditt program. Exempelvis innehåller modulen Data.List i Haskell diverse olika funktioner för att manipulera listor, medan Graphics.UI.SDL innehåller SDL-bibliotekets funktioner för att rita enkel grafik och liknande.

baconkebab:

Jag måste alltså importera dom moduler jag kommer använda till det grafiska programmet..?


Ja.
Shit pomfritt, du skrev en del ja. [rolleyes]

Varför finns det olika paradigmer då? Och vad är en paradigm? Har dom olika användningsområden (alltså använder man olika paradigmer för att skapa speciella program)? Är en del jag inte förstår inom programmering verkar det som.

Gentlernen:

Vill du lära dig programmera är ett bra första steg att lära sig läsa dokumentation.


Smart [y]

Gentlernen:

Det ska du inte, eftersom program byggda på det viset tenderar att bete sig som skit och det därför är väldigt tunnt med WYSIWYG-verktyg.


Okej, men hur ska jag då kunna placera ut kontroller i programmet? Kodar jag in det också eller? Låter lite överdrivet jobbigt :o
baconkebab:

vad är en paradigm?


Man kan säga att det är olika metodologier för att strukturera program.
http://en.wikipedia.org/wiki/Programming_paradigm

baconkebab:

Varför finns det olika paradigmer då?


För att olika männsiskor vill göra saker på olika sätt. Sedan finns det säkert vissa problem som går enklast att lösa i ett visst paradigm. För att få en fundamental förståelse och få breda programmeringskunskaper så bör man utsätta sig själv för flera olika paradigm, för att lära sig olika sätt att tänka.

baconkebab:

hur ska jag då kunna placera ut kontroller i programmet?


Vanligen så kodar du in dem, ja. Det finns en del grafiska verktyg för att hjälpa dig med det hela, men de är oftast endast bra till att skapa en grund som du sedan kan bygga vidare på i koden. Glade skulle jag tro är det vanligaste verktyget när det kommer till Python + PyGTK. Där designar du ett fönster som sedan exporteras som XML, om jag inte missminner mig, och som sedan parsas av gtk.builder som ritar upp det med hjälp av PyGTK. Men som sagt så ger det dig endast en statisk grund. Så fort du ska ändra något så måste du koda det.

baconkebab:

Låter lite överdrivet jobbigt :o


Välkommen till att programmera grafiska gränssnitt på riktigt.
Åtta:

För att få en fundamental förståelse och få breda programmeringskunskaper så bör man utsätta sig själv för flera olika paradigm, för att lära sig olika sätt att tänka.


Alltså lära sig flera olika programmeringsspråk?

Åtta:

Vanligen så kodar du in dem, ja. Det finns en del grafiska verktyg för att hjälpa dig med det hela, men de är oftast endast bra till att skapa en grund som du sedan kan bygga vidare på i koden.


Tack och lov. Det var något sånt jag letade efter... man "ritar" ut en design, exporterar som XML och importerar i programmet? Och sedan lägger man till någon typ av funktion som körs när knappen eller kontrollen justeras/klickas?

Åtta:

Men som sagt så ger det dig endast en statisk grund. Så fort du ska ändra något så måste du koda det.


Ändra vad t.ex.?

Åtta:

Välkommen till att programmera grafiska gränssnitt på riktigt.


Man tackar! [rolleyes]
baconkebab:

Alltså lära sig flera olika programmeringsspråk?


Inte nödvändigtvis, men det kan vara att rekommendera. Som Gentlernen sade förut så kan man programmera procedurellt i Haskell, även om det är skapat primärt för att vara funktionellt. Men ja, för att få ut fördelarna av paradigmet kan det vara smart att programmera i ett språk specifikt utformat för det.

baconkebab:

Ändra vad t.ex.?


En lista, en text, en bild; vad som helst.

baconkebab:

man "ritar" ut en design, exporterar som XML och importerar i programmet?


I princip.

baconkebab:

Och sedan lägger man till någon typ av funktion som körs när knappen eller kontrollen justeras/klickas?


När ett event händer med dina kontroller så skickas en signal till ditt program. I programmet definierar du callbacks som reagerar på signalen, och som då t.ex. kör en funktion.
Åtta:

En lista, en text, en bild; vad som helst.


Jaja, men då förstår jag. Men det hade man fått ändra med kod i vilket annat språk som helst, väl? Om man har en tom lista som man vill fylla med några rader text eller nåt, så kodar man in det!? Fast, man kan väl göra det i glade med? Men man får då ändra det med kod senare om man vill..? Right?

Åtta:

När ett event händer med dina kontroller så skickas en signal till ditt program. I programmet definierar du callbacks som reagerar på signalen, och som då t.ex. kör en funktion.


Det var precis det jag menade, fast förklarade rätt dåligt. [rolleyes]
baconkebab:

en om jag vill ha ett riktigt interface i mitt program, då måste jag tanka ner ett separat program för det, eller?


Med GUI, menar du utveckligsmiljo, eller menar du GUI till programmen du sjalv kodar?

Svaret pa forsta fragan bor vara, "Skaffa en vettig editor, som klarar de flesta sprak. Jag gillar Kate och Gedit."

Fraga tva: Nej.
baconkebab:

Okej, men hur ska jag då kunna placera ut kontroller i programmet? Kodar jag in det också eller? Låter lite överdrivet jobbigt :o


Java ar inte sa jattefarligt att koda, man kan ju placera ut kontroller med for-loopar och sadant.

Jag geggade lite med VB for en massa ar sedan, och att rita ut kontroller for hand var inte alls min grej. Jag foredrar att ha full koll pa alla delar.