Lära sig programmering, vilket språk?

Permalänk
Datavetare

Känner mig lite skyldig till att vara helt off-topic ovan, så för att vara lite OT:
vilket språk du ska välja beror lite på vad målet är och vad du kan innan. Jobbar själv med inbyggda-system och där är det C och inget annat än C som gäller, C++ finns men är väldigt ovanligt. Fördelen med C är att det är ett språk helt utan "magi", alla anrop som sker görs explicit. Nackdelen är kanske att många har svårt för pekar-aritmetik och du blir aldrig en riktigt bra C programmerare utan att bemästra detta.

Vill du programmera spel finns bara ett seriöst alternativ: C++. Det är språket som i praktiken används på Windows, konsoller, iOS (endast GUI är i ObjC för spel) och Android (via NDK). WP7 är den enda plattform som inte stödjer C++ för spelprogrammering, men allt tyder på att WP8 kommer fixa detta.

Vill du programmera "back-end" programvara så finns det idag tre alternativ, C# (Windows), Java (Windows och *NIX) samt C++ (Windows och *NIX, ganska ovanligt idag med används där maximal prestanda erfordras, t.ex. högfrekvenshandel).

Ska du skriva program för att administrera och automatisera saker så skulle jag föreslå Python.

Vill du bara lära dig för egen skull och verkligen sätta dig in i olika algoritmer skulle jag föreslå Clojure som är en LISP dialek som fokuserar på att göra det enkelt att skriva program som på ett korrekt sätt kan använda flera CPU-kärnor.

Här kommer ett smakprov på hur Python och Clojure kan se ut, använder quick-sort och insert-sort som exempel så finns dessa i åtminstone 3 olika språk i denna tråd

Python

def quick_sort(lst): if len(lst) <= 1: return lst pivot = lst.pop() return (quick_sort([e for e in lst if e < pivot]) + [pivot] + quick_sort([e for e in lst if e >= pivot])) def insert_sort(lst): sorted_lst = lst[:1] unsorted_lst = lst[1:] while len(unsorted_lst) > 0: key = unsorted_lst.pop(0) j = len(sorted_lst) - 1 while j >= 0 and key < sorted_lst[j]: j -= 1 sorted_lst = sorted_lst[:j+1] + [key] + sorted_lst[j+1:] return sorted_lst print quick_sort([5,2,6,4,9,1]) print insert_sort([5,2,6,4,9,1])

Clojure

(defn quick-sort [lst] (let [pivot (first lst) l (rest lst)] (if (nil? pivot) [] (concat (quick-sort (filter #(< % pivot) l)) [pivot] (quick-sort (filter #(>= % pivot) l)))))) (defn insert-sort [lst] (loop [sorted_lst [(first lst)] unsorted_lst (rest lst)] (if (empty? unsorted_lst) sorted_lst (let [key (first unsorted_lst)] (recur (concat (filter #(< % key) sorted_lst) [key] (filter #(>= % key) sorted_lst)) (rest unsorted_lst)))))) (defn parallel-quick-sort [lst] "quick-sort that may run on multiple threads" (let [pivot (first lst) l (rest lst)] (if (nil? pivot) [] (let [hi (future (parallel-quick-sort (filter #(>= % pivot) l)))] (concat (parallel-quick-sort (filter #(< % pivot) l)) [pivot] @hi))))) (println (quick-sort [5 2 6 4 9 1])) (println (parallel-quick-sort [5 2 6 4 9 1])) (println (insert-sort [5 2 6 4 9 1])) ;; Use of (future) will start Java-executors that need to be shutdown ;; or for the JVM to shutdown. (shutdown-agents)

Clojure körs ovanpå en JVM och det är fullt möjligt att anropa Clojure kod från Java och vice-versa. Clojure är ett s.k. funktionellt språk och tycker personligen det är betydligt mycket enklare och trevligare att använda jämfört med Haskell (som ändå är riktigt trevligt) och F# (som jag aldrig riktigt blivit vän med, tycker det är ful syntax).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Är också ett stort fan av Clojure och tycker dessutom att det är ett bra språk som introduktion till funktionell programmering. Vill man veta mer om Clojure är http://learn-clojure.com/ en bra utgångspunkt. Om man vill prova på att knacka lite kod direkt kan man ge sig an uppgifterna på http://www.4clojure.com.

Permalänk
Medlem
Skrivet av björk:

Är också ett stort fan av Clojure och tycker dessutom att det är ett bra språk som introduktion till funktionell programmering. Vill man veta mer om Clojure är http://learn-clojure.com/ en bra utgångspunkt. Om man vill prova på att knacka lite kod direkt kan man ge sig an uppgifterna på http://www.4clojure.com.

Tack till er båda, nu har jag något att göra om nätterna

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Ehm,jag har zero kunskaper i kodning...jag går i 8:an och är lite inne på det här med IT.
Jag vill sticka ut ur mängden och lära mig lite om kodning redan nu så jag kan göra små basic grejer.
Skulle uppskatta någon basic guide. Dom som jag har hittat går straight in på kodningen så jag måste väll gå in på fel sidor :/
Det är mest farsan som sagt att jag ska tänka på vad jag ska plugga vidare till och jag vill nu pröva kodning lite innan.
Om jag inte gillar det så utesluter jag det och funderar vidare
EDIT:Jag skrev i denna tråd för att återuppskapa den för nutidens grejer och så att man ska veta att den finns. Om ingen svarar så skapar jag en tråd.

Visa signatur

Proccesor:i5 3450 3,1 Ghz Grafik:GeForce GTX 650Ti 2GB Moderkort:MSI Z77A-G43 ATX Chassi:NZXT Source 210 Elite The voltage :D :Be quiet! Pure power L7 530W Bronze 80+ RAM:Corsair 8GB 1333Mhz HDD:1TB Western digital blue Skärm:BenQ 21,5 LED

Permalänk
Medlem
Skrivet av 420GBGlass:

Ehm,jag har zero kunskaper i kodning...jag går i 8:an och är lite inne på det här med IT.
Jag vill sticka ut ur mängden och lära mig lite om kodning redan nu så jag kan göra små basic grejer.
Skulle uppskatta någon basic guide. Dom som jag har hittat går straight in på kodningen så jag måste väll gå in på fel sidor :/
Det är mest farsan som sagt att jag ska tänka på vad jag ska plugga vidare till och jag vill nu pröva kodning lite innan.
Om jag inte gillar det så utesluter jag det och funderar vidare
EDIT:Jag skrev i denna tråd för att återuppskapa den för nutidens grejer och så att man ska veta att den finns. Om ingen svarar så skapar jag en tråd.

ar bra om du verkligen har noll koll, rekommenderar aven python dar

Permalänk
Medlem
Skrivet av Kabeltv:

http://codecademy.com
ar bra om du verkligen har noll koll, rekommenderar aven python dar

Du har inte lust att länka var man hittar lite tutorials och så? Jag gav mig på Python för några år sedan men la snabbt ner då jag inte hittade något att sträva emot. Du kanske skulle kunna bistå med något där?

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk
Medlem
Skrivet av gosh:

C++ är otroligt genomtänkt men det är inte gjort för att vara enkelt och lära, det är gjort för att man skall kunna skapa bästa möjliga applikation.

Genomtänkt är verkligen inte det ord jag skulle välja för att beskriva C++.

Permalänk
Medlem
Skrivet av YGLeXz:

Du har inte lust att länka var man hittar lite tutorials och så? Jag gav mig på Python för några år sedan men la snabbt ner då jag inte hittade något att sträva emot. Du kanske skulle kunna bistå med något där?

Ja, jag länkade ju till codecademy, där finns massor av tutorials

Edit: måste ha blivit fel när jag länkade innan

Permalänk
Medlem
Skrivet av Kabeltv:

Ja, jag länkade ju till codecademy, där finns massor av tutorials

Edit: måste ha blivit fel när jag länkade innan

Ty ty!

Letade lite själv och hittade den HÄR killen. Har plöjt över 20 avsnitt och är såld. Han är duktig på det han gör och jag rekommenderar det _starkt_. (Tänk dock på att de flesta guider är för python 2.x.x, tog mig ett bra tag innan jag fattade varför alla mina försök att skriva "Hello World!" i cmd inte funkade....)

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk

www.Udacity.com -> CS101
Ifall man inte har någon förkunskap om kodning, Python är språket.

Visa signatur

Bal-Sagoth | Ensiferum | Windir | Finntroll | Wintersun | Amon Amarth | Moonsorrow | Nazgûl

Permalänk
Medlem

Vilket program laddar man ner för att programmera i Java?
Och om man vill programmera i C#, räcker C# 2010 Express som finns att ladda ner hos Windows?

Permalänk
Medlem
Skrivet av nicoliani:

Vilket program laddar man ner för att programmera i Java?
Och om man vill programmera i C#, räcker C# 2010 Express som finns att ladda ner hos Windows?

Först behöver du JDK(bara att söka på google) och sedan använder du eclipse som IDE

Permalänk
Medlem

Hej. Jag jag jobbar som nätverkskonsult och är väldigt intresserad av optimering och automatisering. Jag har gjort några bash-script för att förenkla diverse uppgfiter men tänkte nu försöka mig på en lite mer sofistikerad konfigurationsgenerator. Att formulera text i Bash är ju idiotiskt så jag tänkte egentligen bara höra vilket språk som passar bäst för detta.

Jag kan dra ett exempel:

Nu, i bash så har jag denne:

echo -e "anchor \"${VAR1}_IN\" in on \$$VAR2 {\n include \"${VAR3}_in\"\n}\nanchor \"${VAR1}_OUT\" out on \$$VAR2 {\n include \"${VAR3}_out\"\n}"

Som blir detta:

anchor "$VAR1_IN" in on $$VAR2 { include "$VAR3_in" } anchor "$VAR1_OUT" out on $$VAR2 { include "$VAR3_out" }

Jag vill hitta ett språk där jag enkelt kan skriva rad för rad som det ska vara direkt och få output'en i samma format:

anchor "$VAR1_IN" in on $$VAR2 { include "$VAR3_in" } anchor "$VAR1_OUT" out on $$VAR2 { include "$VAR3_out" }

Det skulle bli onödigt mycket kliande i huvudet för att göra detta i Bash.

Python verkar rätt nice men jag klarar inte att lista ut hur jag skriver variabler när jag printar multilines:

Kod: print ''' anchor "$VAR1_IN" in on $$VAR2 { include "$VAR3_in" } anchor "$VAR1_OUT" out on $$VAR2 { include "$VAR3_out" ''' Output: anchor "$VAR1_IN" in on $$VAR2 { include "$VAR3_in" } anchor "$VAR1_OUT" out on $$VAR2 { include "$VAR3_out"

So, what's the word?

Permalänk
Medlem

Googla python string interpolation

edit: Jag tycker Groovy har snyggare interpolation. Ditt exempel skulle bli

def var1 = "HELLO" def var2 = "WORLD" def var3 = "SAUSAGE" def text = """\ anchor "${var1}_IN" in on $${var2} { include "${var3}_in" } anchor "${var1}_OUT" out on $${var2} { include "${var3}_out" } """

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Googla python string interpolation

edit: Jag tycker Groovy har snyggare interpolation. Ditt exempel skulle bli

def var1 = "HELLO" def var2 = "WORLD" def var3 = "SAUSAGE" def text = """\ anchor "${var1}_IN" in on $${var2} { include "${var3}_in" } anchor "${var1}_OUT" out on $${var2} { include "${var3}_out" } """

Dold text

Jag har inte tillgång till Groovy på jobbet...
Hur hade samma sett ut i Python? Jag får inte till det med att printa variabeln med

VAR1 = "Världen" print Hej VAR1 print ''' Hej VAR1 ''' Output: Hej Världen Hej VAR1

Permalänk
Skrivet av nicoliani:

Vilket program laddar man ner för att programmera i Java?
Och om man vill programmera i C#, räcker C# 2010 Express som finns att ladda ner hos Windows?

Skrivet av Kabeltv:

Först behöver du JDK(bara att söka på google) och sedan använder du eclipse som IDE

Tanka ner IntelliJ IDEA Community Edition på www.jetbrains.com. Eclipse-sandlådan kan du hoppa över.

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");

Permalänk
Medlem
Skrivet av dellhem:

Jag har inte tillgång till Groovy på jobbet...
Hur hade samma sett ut i Python? Jag får inte till det med att printa variabeln med

VAR1 = "Världen" print Hej VAR1 print ''' Hej VAR1 ''' Output: Hej Världen Hej VAR1

http://docs.python.org/2/library/stdtypes.html#string-formatt...

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av gosh:

Det bästa språket för att få fram hög kvalitet på kort tid är C++. Det blir snabb kod, språket är väldigt väl lämpat för att göra sina egna bibliotek som då används till de uppgifter man sysslar med. Man sitter heller inte i klistret på grund av begränsningar i språket.

Det är helt fel. C++ är bland de sämsta språken för att frå fram högkvalitativ kod på kort tid. Språket är verkligen inte lämpat för att göra egna bilbiltek. Det finns stora begränsningar i språket, och massa odefinierat beteende som gör att det är mycket mer sannolikt att man råkar skapa buggar.

Skrivet av gosh:

Håller man inte med så beror det förmodligen på att man antingen inte kan språket eller tycker språket är för svårt. Håller man på och lär sig programmera så är det givetvis svårt och förstå med även om man pluggat en del C++. Det tar några år och bli duktig.

Angående diverse andra specialskrivna språk:
Skulle jag göra ett "internt" språk för någon applikation så hade jag också mycket väl kunnat tänka mig och använda Lisp. orsaken är att det är så lätt och parsa till interna objekt, det är dock lite fusk och gör det svårare och få till anpassningar, bättre att välja ett språk som fler kan eller är enklare och lära sig.

Menar du att det i Lisp "är svårare att få till anpassningar" och att C++ är enklare att lära sig än Lisp?

EDIT: Oj, trodde sidan 11 var sista sidan i denna tråd, för det stod "1 2 3 4 ... 11" på sidväljaren, var inte meningen att svara så sent på ett tidigare inlägg."

Permalänk
Medlem

Den länken var ju helt utan värde...

Permalänk
Medlem

Välj Powershell...! eh-mmm

Om du gillar å scripta för management

Visa signatur

Kamera: D800
Optik:Nikkor 24-70mm f/2.8, Nikkor 70-200 f/2.8 VR, Sigma 50mm f/1.4, 500m f/4 VR

Permalänk
Medlem

haha att läsa igenom pajkastningen i denna tråd är inte så motiverande när man vill ge sig in i programmering.

Jag hade tänkt börja med python i Geany, om någon har lust att rekommendera mig annat blir jag glad, är helt färsk inom programmering och matten är inte den bästa (men jag jobbar på det).

Permalänk
Medlem
Skrivet av Jay-Jay:

haha att läsa igenom pajkastningen i denna tråd är inte så motiverande när man vill ge sig in i programmering.

Jag hade tänkt börja med python i Geany, om någon har lust att rekommendera mig annat blir jag glad, är helt färsk inom programmering och matten är inte den bästa (men jag jobbar på det).

Gammal tråd men varför inte. Kör själv Python i geany och tycket det funkar kanon. Kör ju bara på hobbynivå men hittills har python klarat av att leverera allt jag eftersökt. Har inga referenser mot andra språk men Python känns ganska lätt att komma in i.
Tror det viktigaste är att ha något projekt att köra istället för bara en massa tutorials med "Hello World!".
Kanske ett textbaserat Black Jack eller så för att lära sig mycket av grunderna^^

Visa signatur

Bara gammalt skräp...

Permalänk
Medlem
Skrivet av saddam:

Tycker C# har många bra funktioner som inte Java har, t ex vid användningen av Getters och Setters. Och GUI byggande ska vi ju inte tala om!

Till TS:

Jag anser inte att du behöver snöa in dig på vilket språk du ska lära dig, även om det känns viktigt just nu så kommer du snart märka motsatsen. Det viktiga är att du lär dig programerings tänket, att tänka logiskt, kunna implementera algoritmer och förstå deras innebörd, ha kunskap om när man bör använda en viss datastruktur eller algoritm, bra design mönster på klasser, tänka objekt orienterat etc etc.

Jag personligen hade satsat på Java eller C#, det är 2 stora populära språk som det finns massvis av tutorials och böcker omkring. Och de allra flesta bloggar och dylikt som visar kodexempel gör det väldigt ofta i Java.

Mitt #1 tips: Skaffa en bra bok!

Permalänk
Medlem
Skrivet av bardbard:

Gammal tråd men varför inte. Kör själv Python i geany och tycket det funkar kanon. Kör ju bara på hobbynivå men hittills har python klarat av att leverera allt jag eftersökt. Har inga referenser mot andra språk men Python känns ganska lätt att komma in i.
Tror det viktigaste är att ha något projekt att köra istället för bara en massa tutorials med "Hello World!".
Kanske ett textbaserat Black Jack eller så för att lära sig mycket av grunderna^^

Du är grym! Har inte riktigt kommit fram till något jag vill göra men är ju torsk på blackjack så det är intressant!
Tack så mycket hörru!

Permalänk
Medlem
Skrivet av Jay-Jay:

Du är grym! Har inte riktigt kommit fram till något jag vill göra men är ju torsk på blackjack så det är intressant!
Tack så mycket hörru!

Tycker också att Python är en bra start om man vill bli direkt hands-on. Eftersom jag är den typen av människa som måste läsa på 100% om allt innan jag gör något (istället för den som bara kör direkt och kör 100% learningbydoing) så började jag med Java, där man får en större förståelse för den bakomliggande programmeringen. Detta är dock endast om man har enormt mycket tid och intresse.

Visa signatur

| Corsair Crystal 460X | Z390-F | 9700K | ROG Ryujn 360mm | RTX 3080Ti | ROG Thor 850W | Vengeance Pro 3200mhz 16cl 16GB (2x8) | 970 Pro 2TB + 2xWD Black 4TB | ROG SWIFT PG279Q | Arctis 7 Pro Wireless | ROG Scope Deluxe red silent | ROG Chakram |

Permalänk
Medlem
Skrivet av Mithras:

Tycker också att Python är en bra start om man vill bli direkt hands-on. Eftersom jag är den typen av människa som måste läsa på 100% om allt innan jag gör något (istället för den som bara kör direkt och kör 100% learningbydoing) så började jag med Java, där man får en större förståelse för den bakomliggande programmeringen. Detta är dock endast om man har enormt mycket tid och intresse.

Hmm jag är mer - läsa lite -> göra det så att det sitter -> läsa lite -> göra det så att det sitter.

Var i alla fall såhär jag läste nätverk.

Så jag är väl 50/50

Permalänk
Medlem
Skrivet av Jay-Jay:

Hmm jag är mer - läsa lite -> göra det så att det sitter -> läsa lite -> göra det så att det sitter.

Var i alla fall såhär jag läste nätverk.

Så jag är väl 50/50

Har du tid och tålamod så skulle jag isf. nästan föreslå att börja med Java istället. Jag märkte ganska snabbt att min förståelse för programmering och sedermera Python var mycket högre än de av mina kamrater som aldrig programmerat Java utan endast i Python, eftersom de inte förstod alltid varför saker fungerade som de gjorde, då Python är ganska "high-level" och därför maskerar/gömmer undan vissa underliggande processer. I Java får man en större förståelse för exakt hur programmeringen fungerar, så har du tiden och tålamodet så kommer Java gynna mer i längden om du frågar mig. Däremot är det ju en mycket, mycket längre "start-up time" på dig som programmerare på det sättet.

Visa signatur

| Corsair Crystal 460X | Z390-F | 9700K | ROG Ryujn 360mm | RTX 3080Ti | ROG Thor 850W | Vengeance Pro 3200mhz 16cl 16GB (2x8) | 970 Pro 2TB + 2xWD Black 4TB | ROG SWIFT PG279Q | Arctis 7 Pro Wireless | ROG Scope Deluxe red silent | ROG Chakram |

Permalänk
Medlem
Skrivet av Mithras:

Har du tid och tålamod så skulle jag isf. nästan föreslå att börja med Java istället. Jag märkte ganska snabbt att min förståelse för programmering och sedermera Python var mycket högre än de av mina kamrater som aldrig programmerat Java utan endast i Python, eftersom de inte förstod alltid varför saker fungerade som de gjorde, då Python är ganska "high-level" och därför maskerar/gömmer undan vissa underliggande processer. I Java får man en större förståelse för exakt hur programmeringen fungerar, så har du tiden och tålamodet så kommer Java gynna mer i längden om du frågar mig. Däremot är det ju en mycket, mycket längre "start-up time" på dig som programmerare på det sättet.

Hmm okej, hur är det med Java på arduino? Tanken är att köpa lite Arduino grejer och programmera in saker på dem, och så vitt jag vet fungerar Python och C# väldigt bra där.

Ursäkta min okunnighet!

Permalänk
Medlem

C++ möjligt för total nybörjare?

Hej, jag har i år velat börja lära mig programmera men har aldrig kommit långt in i det hela. Jag har shiftat mellan python / c / c++ / delphi. Kan inte sätta mig fast i ett och hålla mig kvar där då det känns för tungt eller något jag inte förstår och inte har någonstans att vända mig. Om jag skulle posta varenda gång då jag behöver hjälp på ett forum så skulle forumet överbelastas

Mitt mål är egentligen att lära mig c++ då det är ett språk som går på djupet och kan hantera memory manipulation och snabbheten samt göra program så som sökmotorer.
Men har som sagt inte kunnat hålla mig kvar vid det då jag känt att det har blivit för tufft, jag är inte den mest smarta personen så känns liksom som att man bara kan ge upp. När jag gått över till lättare språk så blir det i princip detsamma fast där är det mer känslan av att jag försöker lära mig ett språk som jag inte egentligen ser något mål med (även om det är det indirekt, precis som allt så behöver man gå igenom saker man inte vill för att uppnå det man vill) men som sagt jag är otålig och har aldrig fungerat på det sättet. Jag har en aktivitets och uppmärksamhetsstörning, vilket kan spela in i min hopplöshet...

Har ni några tips eller råd? Bör jag bara ge upp då jag har mina mentala problem? (t.om kanske inte hjärna nog)

Visa signatur

/Ben~

Permalänk
Medlem
Skrivet av Benna:

Ett tips är att inte tänka på vilket språk som är bäst etc etc... utan att hitta på något projekt och genomföra det. Har du inget mål, bara sitter och kollar youtube-filmer som går igenom syntax så kommer man inte speciellt långt.

Lär man sig ett språk så kommer du snabbt kunna byta till ett annat då många språk liknar varandra.

Sedan angående prestanda. Arbetar du inte med microkontrollers så spelar val av språk ur prestandasynpunkt inte ett skit. Visst man kan säkert göra en sökmotor i c++ som är lite mer optimerad än python. Men varför handikappa sig själv?

Angående överbelastade forum, jag kan lova dig att allt du kommer att försöka göra i din programmeringskarriär redan har gjorts av någon. Det gäller bara att slipa på google-skillsen samt förståelse för vad som krävs för att utföra uppgiften.
Skickades från m.sweclockers.com