Allmäna frågor om programmering

Permalänk

Allmäna frågor om programmering

Tjena!

Jag har fått lära mig mycket om datorer genom gymnasiet där jag läste en hel del datakurser som en del av mitt program (Elprogrammet), men jag har sedan lång tid tillbaka också haft ett stort intresse för datorer, speldatorer, konsoler m.m. Så jag kan mycket om datorer, både mjukvara och hårdvara. Jag säger inte att jag kan allt, men jag kan mycket mer än en genomsnittlig datoranvändare. Men jag har fortfarande mycket att lära dock, liksom de flesta av oss som pysslar med datorer, det är ett ständigt lärande eftersom tekniken utvecklas så snabbt.

Det som jag vill lära mig mer om är programmering för att få en ännu bättre bild av hur datorer fungerar. Min tidigare erfarenhet är att jag har gjort en del enklare webbsidor (jag tvingades också lära mig det rätta namnet "webbplatser", eftersom flera webbsidor bildar webbplatser), både på fritiden och som skolarbete. Men det är ju inte riktigt programmering egentligen, jag håller med de som argumenterar för det. Det närmaste programmering som jag har kommit har nog varit programmering av PLC kontroller i skolan. Så jag känner att jag är tillräckligt mogen och har tillräckligt med "kött på benen" för att ge mig på programmering för att försöka förstå hur datorernas själv fungerar. Jag känner att det är dags nu att jag börjar spendera min "fria" tid framför datorn på ett mer nyttigt sätt och förhoppningsvis lära mig mer, och inte bara slöa och göra ingen nytta. Tidigare har jag inte riktigt haft motivationen, men nu har jag motivationen. Det jag behöver nu är lite av er vägledning till rätt språk och verktyg.

Allmänt om programmeringsspråk
Vilket programmeringsspråk är lättast att lära en nybörjare i programmering? Basic kanske? Basic står ju för "beginners all-purpose symbolic instruction code".

Vilket programmeringsspråk är mest allsidigt?

Vilket eller vilka programmeringsspråk är mest efterfrågade idag av uppdragsgivare?

Vilket är det äldsta programmeringsspråket? Fortran eller Ada?

Vilket är det senaste programmeringsspråket? Är det Java, Delphi eller C#? Det måste ju vara någon av de tre.

Hur skiljer sig skriptspråk från andra programspråk egentligen?

Är alla programspråk oberoende av plattform och operativsystem?

Går det att utveckla ett program som är oberoende av plattform och operativsystem? Ja, jag vet att det där har att göra med processorn och dess arkitektur, för det är ju den man programmerar. Men det borde åtminstone gå att göra ett program oberoende av operativsystemet. Om t.ex. två datorsystem har olika operativsystem men i grunden samma maskinvara så borde det väl funka?

Vilket språk ska man välja om man vill skriva ett effektivt program som har snabb respnstid? Jag hatar program som Azureus m.fl. och just Azureus verkar vara skrivet i Java. Och bara för det kräver den att man har Java Enviroment installerat på datorn. Det är helt kasst tycker jag.

Vissa program kräver Java, andra kräver C++ Redistributable för att över huvudtaget fungera och för att de ska installeras. Är det så med alla programspråk? Finns det språk som inte kräver några extra konstigheter så att de kan köras nativt i t.ex. Windows miljö?

Går det att skriva delar av ett program i ett språk och andra delar i ett helt annat språk?

Vilket programspråk finns det flest resurser till (böcker på svenska, artiklar på nätet, tutorials etc.)? Kring vilket programspråk finns det mest hype liksom?

Några begrepp
Vad är en kompilator/compiler respektive decompiler?

Vad är en assembler respektive disassembler?

Vad är en interpreter?

Framför allt, vad är huvudsakligen skillnaden mellan dessa?

Finns det kompilatorer som kostar pengar och de som är gratis?

Finns det många kompilatorer att välja mellan för ett visst språk eller finns det bara en officiell kompilator för det programspråket?

Vad är klasser och bibliotek? Kan det liknas på något sätt med märken och attribut hos HTML? Att använda flera bibliotek är alltså som att expandera ett spårk ytterligare med flera funktioner?

Vad menar med objektorienterad programmering? Vad är motsatsen till det?

Behöver man ett fullständigt IDE program med GUI builder, source code editor och allt, eller räcker det med en enkel texteditor till en början (t.ex. Notepad)?

Vilka verktyg behöver man? Om man skaffar sig ett IDE program, måste man fixa kompilatorer och grejer separat eller ingår det t.ex. i program som Visual Studio?

Jag tänker jobba i Windows. Vilka programutvecklingsverktyg finns det att välja på till Windows? Gratis, respektive de som kostar? Jag känner till Visual Studio, och den finns också i en Express version som är gratis men kräver registrering. Är det något att ha? Jag har också hört talas om KDevelope men det är till Linux om jag inte har fel. Nämn först och främst de som ni har testat och som ni tycker är bra.

Jag hoppas att det inte var för många frågor, och att någon hittar tid till att besvara några av dessa. Jag vet att det har ställts många frågor om hur man kommer igång med programmering. Jag har försökt att vara lite annodlunda genom att ställa några konkreta frågor som jag går och funderar på.

Jag måste säga att det är jävligt tråkigt att ingen har hittills skapat en guide här på forumet för alla nybörjare som jag själv, utan man bara envist hänvisar till olika trådar där olika frågor redan har ställts och så. Det är jävligt tråkig attityd. Det här är ingen databank. Det här är ändå ett levande forum, precis som ett riktigt forum där folk med liknande intressen möts och diskuterar och utbyter idéer och kunskap. Jag hoppas att det ska förbli så och att inte hela forumet snart ska förvandlas till ett enda FAQ. Jag hoppas att någon snart ska ta på sig uppgiften att skriva en allmän introduktion i programmering här på forumet, och helst på svenska då för våra läsares skull. En början på det kan vara att försöka besvara och förklara några av de begrepp som jag har tagit upp här ovan. Ni behöver inte ge några avancerade / kvalificerade svar, svara så enkelt som möjligt så att alla förstår.

Tack på förhand till den som väljer att svara.

Visa signatur

"Good teaching is one-fourth preparation and three-fourths pure theatre."—Gail Godwin
Sweclockers BB kod
0101001101000111

Permalänk
Medlem

Hej.

Jag får intrycket av att du är väldigt fokuserad på att göra rätt hela tiden och på att memorera detaljer som vad olika förkortningar står för. Mitt främsta råd till dig är att försöka sluta hänga upp dig på sådant och istället bara kasta dig in i smeten med huvudet före. Nybörjare tror ofta att det är väldigt viktigt att välja rätt språk från början, men det viktigaste är att börja över huvud taget. Välj något bara och sätt igång! Det räcker ändå inte med att kunna bara ett programmeringsspråk. Se till att göra massor med misstag för det är det du lär dig mest av

Python är antagligen ett bra språk att börja med. Basic skulle jag däremot inte rekommendera eftersom det ger dåliga vanor och antagligen inte har en ljus framtid.

Det finns inget språk som är "mest allsidigt" eller bäst för alla situationer. Olika verktyg har olika användningsområden.

Java och C# är antagligen de språk som är mest eftertraktade på arbetsmarknaden just nu, men när du är färdigutbildad programmerare kan det ha ändrats.

I princip alla språk kräver att du har saker installerade på datorn för att kunna köra dem. Skillnaden är om de kommer förinstallerade med Windows (som libbarna för C) eller om använderaren måste installera saker själv (som Java).

Ja, det går oftast att blanda olika språk på olika sätt.

En kompilator är ett program som översätter källkoden för andra program till maskinkod som kan köras direkt på processorn. En decompiler försöker göra motsatsen (omvandla maskinkod till något som är lättare att läsa för människor).

En assembler är en kompilator som översätter källkod i ett assemblerspråk till motsvarande maskinkod.

En tolk/interpreter är ett program som kör ett annat program genom att själv utföra det andra programmets instruktioner. Tolken har hela tiden kontrollen och det tolkade programmet körs inte direkt på processorn.

För många språk finns det flera kompilatorer att välja på. För andra språk finns det bara en. Vissa kostar pengar och andra inte.

Nu orkar jag inte svara på fler frågor. Godnatt.

Visa signatur

Alla män är dödliga. Sokrates var dödlig. Alltså är alla män Sokrates.

Permalänk
Hedersmedlem

Som sagt, bäst är bara sätta igång och försöka skapa något. Någon visual studio express-variant blir utmärkt om du kör windows och c# är förmodligen det som går snabbast att komma igång med. Det är dessutom pinsamt lätt att skapa gui:n, vilket är trevligt i början. Och som sagt är det inte så viktigt vilket språk du börjar med, huvudsaken är att man lär sig hur man strukturerar program och löser problem. När man väl kan detta går det fort att lära sig nya språk (hyfsat bra i alla fall).
För rena definitionsfrågor rekommenderas wikipedia.

Permalänk
Medlem

Håller med selotodo, vilket språk man väljer har inte så stor betydelse om man ska bara lära sig att programmera. Det finns inget språk som är sämmre än det andra, det beror på vad man ska göra för någon applikation.

Citat:

ElectroGeeza
Går det att utveckla ett program som är oberoende av plattform och operativsystem? Ja, jag vet att det där har att göra med processorn och dess arkitektur, för det är ju den man programmerar. Men det borde åtminstone gå att göra ett program oberoende av operativsystemet. Om t.ex. två datorsystem har olika operativsystem men i grunden samma maskinvara så borde det väl funka?

Vilket språk ska man välja om man vill skriva ett effektivt program som har snabb respnstid? Jag hatar program som Azureus m.fl. och just Azureus verkar vara skrivet i Java. Och bara för det kräver den att man har Java Enviroment installerat på datorn. Det är helt kasst tycker jag.

Javisst kan man göra programkod som är plattformsoberoende. Java är ett sånt språk, det är ju därför man måste ha Java Environment istallerat för att man ska kunna köra Java koden. Java körs ju i en virtuel maskin som är likadan på alla olika plattformer den finns på, därför kan du göra en java app som funkar i linux, solaris, windows osv.

Visst Java kan upplevas som segt, men Java kan vara helt galet snabbt också iallafall när det gäller mattematiska beräkningar. Sen ska du inte välja språk efter prestanda heller, som nybörjare skriver du säkert Java applikationer som är bra mycket snabbare än C++ applikationer.

Jag tycker du ska börja med Java. Ett modernt och objektorienterat språk, pinsamt enkelt att skapa GUI applikationer, när du väl bemästrar Java så kan du mer eller mindre C# också. Sen kan du skapa lite apps till mobilen med java också. Java är inte ett dåligt språk på något sätt.

Permalänk
Hedersmedlem

Vilket är det äldsta programmeringsspråket? Fortran eller Ada?
http://en.wikipedia.org/wiki/History_of_programming_languages
Fortran var väl det första som levde vidare och inspirerade senare språk. Fortran har ju kommit i nya versioner genom åren så det ursprungliga är inte alls likt nuvarande. De modernare varianterna är populära i högprestandaberäkningssammanhang.
Ada är ett mer sentida språk, men du kanske har hört om kvinnan som det är uppkallat efter och på så sätt associerar (läs på länken som också länkar vidare till hennes wikisida).

Vilket är det senaste programmeringsspråket? Är det Java, Delphi eller C#? Det måste ju vara någon av de tre.
Flamewar-diskussioner om sådant här har hållt på sen urminnestider. Java och C# är välanvänt idag, Delphi är inte så längre.

Hur skiljer sig skriptspråk från andra programspråk egentligen?
Ofta är scriptspråken interpreterade och kan vara svåra att göra kompilator för. Sen hänger det helt på hur avancerade de är. Batch-programmering i windows, alltså en typ av shellscriptspråk, har ju kontrollflödeselement (IF...) så man kan styra det. Alltså väldigt enkelt språk. Tittar man på mer avancerade språk så brukar det vara väldigt högnivåspråk.

Är alla programspråk oberoende av plattform och operativsystem?
Beror på hur man vill se det. I praktiken handlar väl det mycket om det finns kompilator/interpreter för den plattformen (alltså OS:et som körs på en viss instruktionsuppsättning (processortyp)). Är maskinen (vilket den inom vanliga begränsningar är) turningkomplett så kan man skapa verktygen (i annat språk) för att kunna använda det programmeringsspråket på den plattformen.

Går det att utveckla ett program som är oberoende av plattform och operativsystem? Ja, jag vet att det där har att göra med processorn och dess arkitektur, för det är ju den man programmerar. Men det borde åtminstone gå att göra ett program oberoende av operativsystemet. Om t.ex. två datorsystem har olika operativsystem men i grunden samma maskinvara så borde det väl funka?
Java-programmen (bytecodefilerna) är plattformsoberoende. Men inte mer än att man måste ha en Java runtime environment för den plattformen (den måste såklart (delvis) vara skrivit i något annat språk). Så java stupar när det inte finns någon JRE.
Om vi tar program som har kompilerats direkt till maskinkod så är det inte så som du skriver. Det är inte så att programkodsfilen innehåller bara det man programmerat utan de har ett speciellt filformat de också.
T.ex. så windowsprogram fungerar ju att köra på olika windowsversioner fast t.ex. 9x/me och NT-serierna skiljer sig mycket åt. Men man kan inte köra en linuxbinär. Men man kan också skapa sig miljöer för att kunna köra andra operativsystems programfilsformat. T.ex. med WINE kan man köra windowsprogram i linux. Är det olika instruktionsuppsättningar i processorn mot vad programmet var kompilerat för krävs emulering av instruktionerna, vilket ofta segar ner det hela.
Om man tillåter omkompilering av program så kan samma C-program kompileras för många olika plattformar och köras direkt. Det kräver dock att man inte använder för mycket andra saker, att man håller sig till standardbiblioteket. Jag har inte räknat men jag gissar på att det finns fler maskinvaruarkitekturer med OS som har fungerande C-kompilator än det finns fungerande JREs tillgängliga.

Vissa program kräver Java, andra kräver C++ Redistributable för att över huvudtaget fungera och för att de ska installeras. Är det så med alla programspråk? Finns det språk som inte kräver några extra konstigheter så att de kan köras nativt i t.ex. Windows miljö?
Javaprogram som kräver JRE är ju riktigt beroende av det för att fungera. C++-programmen som krävern redistributable kan man väl (inte helt säker) integrera det med programmet, men det är hur som helst "kringsaker", maskinkoden i programmet är rätt plattform från början då och de körs nativt.

Går det att skriva delar av ett program i ett språk och andra delar i ett helt annat språk?
Ja det händer ofta för stora projekt. Man ska använda rätt verktyg för rätt uppgift. T.ex. ta ett spel som supreme commander. Själva motorn lär väl vara skriven i C eller C++ men AI-saker och mycket annat spelrelaterat är gjort i LUA (som blivit rätt populärt att integrera i spelmotorer nu).

Vilket programspråk finns det flest resurser till (böcker på svenska, artiklar på nätet, tutorials etc.)? Kring vilket programspråk finns det mest hype liksom?
Mest mainstream-hype nu är väl C#, men det och Java är väl som det finns mest modern litteratur på svenska för.

Finns det många kompilatorer att välja mellan för ett visst språk eller finns det bara en officiell kompilator för det programspråket?
Beror på språket. Till C finns det ju en hel skog kompilatorer och det är ju inget enskilt företag som står bakom det så det finns ju ingen helt officiell kompilator. Men till Java som kommer från ett företag (SUN) så finns det ju den officiella, men andra också. Bara språket är väldefinierat så kan vem som helst med rätt kunskaper (t.ex. några kompilatorteknikkurser på universitet rekommenderas) också göra en kompilator för det.

Vad är klasser och bibliotek? Kan det liknas på något sätt med märken och attribut hos HTML? Att använda flera bibliotek är alltså som att expandera ett spårk ytterligare med flera funktioner?
Här är det nog svårt att jämföra. HTML är ett typsättningsspråk, ett domänspecifikt språk. Det används inte alls för att göra program och koncepten blir helt olika. Klass är ett koncept som hör till objektorientering. Bibliotek är en samling funktioner som är inriktat på något som kompletterar kompilatorn och programmeraren. Det är för att inte behöva uppfinna alla saker om och om igen, t.ex. Cs standardbibliotek som innehåller grundläggande saker för filhantering. Varje kompilatorpack som har standardbibliotek har i sin tur ordnat andra sidan så de här filhanteringssakerna fungerar med just det operativsystemet.

Vad menar med objektorienterad programmering? Vad är motsatsen till det?
En av många programmeringsparadigmer (observera att språk kan vara multiparadigmer, de har koncept från flera saker). Finns inte något som man ska sätta på platsen för "motsats".

Behöver man ett fullständigt IDE program med GUI builder, source code editor och allt, eller räcker det med en enkel texteditor till en början (t.ex. Notepad)?
GUI underlättar väldigt när man gör GUI-program. Det finns ju väldigt många gratis bra IDE:er för olika språk så det är ju inget att tveka om. Om man inte söker en helt IDE så finns det ju bra texteditorer.
Visst kan man skriva sina C++-program i notepad men det är bara jobbigt. Det finns ingen anledning för någon, ens en nybörjare, att göra det. Bara självplågning när man missar saker som syntax highlightning, automatiskt indentering osv.

Vilka verktyg behöver man? Om man skaffar sig ett IDE program, måste man fixa kompilatorer och grejer separat eller ingår det t.ex. i program som Visual Studio?
Beror på IDE:n om det inkluderas eller inte. Men i regel finns det någon nedladdning där det ingår eller tydliga instruktioner för hur man installerar kompilator och länkare.
I Visual studio ingår det.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem

Re: Allmäna frågor om programmering

Citat:

Ursprungligen inskrivet av ElectroGeeza

Vilket språk ska man välja om man vill skriva ett effektivt program som har snabb respnstid? Jag hatar program som Azureus m.fl. och just Azureus verkar vara skrivet i Java. Och bara för det kräver den att man har Java Enviroment installerat på datorn. Det är helt kasst tycker jag.

Varför skulle det vara kasst att ha java enviroment installerat på datorn?
Vilken modern dator har inte det installerat...
Du kan köra dina java program nästan överallt.

Om du ska skriva ett program (applikation) behövs inte snabb responstid då den redan är väldig snabb. Du märker nästan ingen skillnad. Spel kan ha behov av snabb responstid och oftast gäller det avancerade 3D-spel.

Och nej java är inte lika seg som tidigare Versioner, vad än folk säger till dig (vissa lever fortfarande i 1900-talet).

Java:
Lätt att skriva program, bra GUI. Ren struktur. Stooort bibliotek. Råkar du ut för ett problem så har 10000 andra råkat ut för det och då är det lätt att hitta lösningen. Kräver virtuelmaskin. Stöd för många olika OS. Dock inte lika öppen att göra vad du än vill.

Python:
Väldigt lätt att förstå. Dock är strukturen inte lika ren och för en nybörjare, kan tänkta mig att det kan förvirra lite (e inte hundra på att det kan förvirra) när stora applikationer skapas. Kräver Virtuelmaskin. Fler OS har stöd för python än java.

C/C++:
Lite mer avancerad, då det inte finns en garbage collector. Man måste hålla koll på mer saker och det kan ta längre tid att skapa vanliga GUI applikationer än med andra språk. Litet bibliotek (dock finns det många lib som man kan ladda ner från nätet). Krävs omkompilering för att fungera på andra OS.

Se en class som en riktning.
EX. En class är ritning för en Volvo v70. När du Använder Classen skapas ett Objekt. Objektet är Bilen, Volvo v70.

Visa signatur

Stationär: Ubuntu GB DQ6 P35 | Q6600 | 4GB ram Corsair 2*2gb 800mhz (3.5gb) |1tb SATA + 500gb SATA + 250gb SATA | Sparkle 9800gt Passiv
Laptop: Lenovo 3000 v200 | Ubuntu |

Permalänk
Medlem

Vilket är det senaste programmeringsspråket? Är det Java, Delphi eller C#? Det måste ju vara någon av de tre.
Nej, dom är inte ens i närheten. En lista över dom flesta programmeringsspråken i kronologisk ordning finns på wikipedia här: http://en.wikipedia.org/wiki/Timeline_of_programming_language...
Som synes är varken Delphi, Java eller C# med bland dom 10 nyaste språken... Och det är bra för oss som använder dom, eftersom att under dom första åren ett språk finns kommer det inte finnas så mycket dokumentation, hjälp på nätet eller så många bibliotek att använda. För att inte tala som saknade egenskaper mm som gör det onödigt jobbigt. Tex fanns inte "generics" med i varken Java eller C# från början, men det gör det nu.

Vissa program kräver Java, andra kräver C++ Redistributable för att över huvudtaget fungera och för att de ska installeras. Är det så med alla programspråk? Finns det språk som inte kräver några extra konstigheter så att de kan köras nativt i t.ex. Windows miljö?

En anledning till att en del språk kräver färdiginstallerade paket är att det vore onödigt att skicka med paketen med varje program som använder det. Det vore tex onödigt om alla spel installerade sin egen direct x, då är det istället mer praktiskt att man tvingar användaren att installera en delad direct x som alla spel kan dela på..

Vilket eller vilka programmeringsspråk är mest efterfrågade idag av uppdragsgivare?

Det beror lite på hur du menar. Om det finns 10 C++-job men bara 1 sökande är det då bättre eller sämre än 20 Javajobb med 100 sökande? Om man tittar på tex http://www.langpop.com/ verkar SQL, PHP och C vara mest efterfrågat bland arbetsgivare.

Dock behöver det inte betyda att det ger mest betalt att kunna något av dom språken, rent spontant skulle jag tro att affärssystemsspråken (och deras APIer/miljöer) ger mest pengar, tex om man är skicklig på SAP (ABAP?) kan man nog dra in mycket pengar. Däremot kan man tänka sig att PHP inte är lika bra pengamässigt sett eftersom det ofta används på enklare sidor, det finns många med PHP-kunskap och det som byggs med PHP inte är nära "pengarna" i företag på samma sätt som tex SAP. (det här stycket innehåller lite gissningar och generaliseringar så ta det inte för seriöst)

Vilket programmeringsspråk är lättast att lära en nybörjare i programmering? Basic kanske? Basic står ju för "beginners all-purpose symbolic instruction code".

Jag kan bara hålla med selotodo här, python är nog ett bra val att börja med. Lättläst kod, lätt att köra koden, behöver bara en texteditor för att skriva koden och det kräver att du indenterar koden rätt är några av sakerna som gör det lätt och bra att börja med. Men om den här saken finns det många olika åsikter

Permalänk

Tänkte bara inflika att C++ inte är speciellt svårt, har mest ett rykte om sig att vara det. (Men det beror ju på vilka kretsar man rör sig i) Kan själv rekommendera det. Var mitt första språk.
OT: Ada ftw!

Visa signatur

Legalise Internet (and stimpacks)