Lära sig programera

Avdelningen för programmering, nätverk samt alternativa OS.
Ponte
Posts: 301
Joined: 2003-05-06 23:09:32
Location: Lycksele
Contact:

Lära sig programera

Post by Ponte »

Ja, som topic lyder så vill jag gärna lära mig programera. Har inga tidigare kunskaper av någon form av programering :) Första frågan är väll vilket språk man ska lära sig..har funderat på c++ då dom flesta verkar använda sig av det :)

Enklaste/snabbaste sättet att lära sig då? Ja, det är väll frågan :) Har hört många säga att tex "C++ På 30 dagar" och liknande inte är några höjdare..men vad ska man använda istället då? (vill tex inte lägga ut tusentals kronor på böcker)

Kom med tips och förslag :)
Vill köpa bärbar :)
User avatar
m0nk
Posts: 46
Joined: 2002-03-12 9:56:28
Location: Sverige, men bor i Greenock
Contact:

C++

Post by m0nk »

Mitt svar är C++ eller Java! Men det tycker jag kanske också för att jag började med dem!

Fördelen med Java är att jag tycker att syntaxen är lättare än C++, men det kan kanske vara lite knepigt att installera så att man blir helt förvirrad innan man kommer till själva kodandet!

Det jag gillar med C++ är att det är lätt att fixa fram en kompilator och ibland är den dessutom fint sammanslagen med en editor... som tex DevC++ som gör att man kan börja koda snabbt och lätt... Vilket kanske är bra med tanke på att du nog vill börja lugnt!

Literatur: (som jag gillar)

Per Holm, Objektorienterad programering och java (JÄTTE-BASIC)
Hade en bok om C++ också som var bra, men den har jag nog supit bort! Internet är fullt av bra guider!
SuSE 8.2, Win XP [AMD Athlon XP 1900+, 256 Mb RAM] [2Mbit IP-Bolaget]

"...so that one may walk in peace..." - KM
whe
Posts: 37
Joined: 2003-12-19 20:27:56
Location: Växjö
Contact:

Post by whe »

Jag tycker du ska fråga dig själv vad du vill programmera för något, och vilken nivå du vill lägga dig på.

Ska du programmera webb-baserade lösningar kanske PHP, ASP eller JAVA passar bättre.
Ska du programmera enkla "windows-pogram" kanske du ska titta åt Visual Basic eller Visual C#.
Ska du gå ännu djupare så ska du nog satsa på C/C++.
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

Jag skulle börjat med Python, det är fint, enkelt och låter en komma igång
fort utan att lära sig en massa onödigt fluff. Fluffet kan man alltid lära sig
sedan.
Precis som med talade språk så är det sällan en nackdel att kunna ett par
andra språk sen innan eftersom man måste lära sig vad "pluskvamperfekt"
eller "predikat" är oavsett om det är tüska eller engelska man vill bli bra
på. När man väl kan _de_ bitarna för något språk så räcker nästan en ordlista för att klara
av glosorna sedan.

Så på samma vis för datorspråk så måste man lära sig programmera först,
oavsett om det är C64-basic eller C#.Net, och när man väl kan programmera
(om än bara lite) så är det enklare att byta språk senare än vad man tror.
Kan man redan programmera och ett par språk så är det så oändligt mycket
lättare att välja språk efter det problem man vill lösa (sortera medlemslista,
webgästbok, räkna primtal osv) och inte försöka få C64-basic att hantera
100-siffriga primtal bara för att det är just det språket man kan bäst.
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
root
Posts: 1150
Joined: 2002-03-07 23:22:35
Contact:

Post by root »

http://www.ibiblio.org/obp/thinkCSpy/ - Om du nu vill göra som Icepic säger och börja med Python.
Pulling together is the aim of despotism and tyranny. Free men pull in all kinds of directions.
-Terry Pratchett
Ponte
Posts: 301
Joined: 2003-05-06 23:09:32
Location: Lycksele
Contact:

Post by Ponte »

Okej, jag är inte intresserad av att programera windows program, eftersom jag själv mestadels pysslar med freebsd, är inte så intresserad av java, php eller asp just nu. Tror nästan jag håller mig till c++ :)
Vill köpa bärbar :)
User avatar
nva
Hedersbit
Posts: 2517
Joined: 2002-03-07 23:34:21
Location: Skåneland
Contact:

Post by nva »

Här är en bra tutorial.
The three most dangerous things in the world are a programmer with a soldering iron, a hardware type with a program patch and a user with an idea.

In theory, there is no difference between theory and practice. But, in practice, there is.
Ponte
Posts: 301
Joined: 2003-05-06 23:09:32
Location: Lycksele
Contact:

Post by Ponte »

tack :)
Vill köpa bärbar :)
Ponte
Posts: 301
Joined: 2003-05-06 23:09:32
Location: Lycksele
Contact:

Post by Ponte »

Jag var och kollade runt lite på cdon.se och pagina.se..finns ju massvis med böcker om c++ =/ Nån som har ett bra tips på en bra bok? (som då helst inte kostar 500+)
Vill köpa bärbar :)
User avatar
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

Fixar du engelska?

Kanske titta på Bruce Eckels bok 'Thinking in C++' som ju har fördelen att du kan tanka hem den gratis.
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
Ponte
Posts: 301
Joined: 2003-05-06 23:09:32
Location: Lycksele
Contact:

Post by Ponte »

Mjo, engelska går bra, men helst ser jag att den är på svenska, för då kan ja lägga all energi på att lära mig istället för att lägga ner energin på att försöka förstå vad som står :)
Vill köpa bärbar :)
User avatar
jb
Posts: 1076
Joined: 2002-08-08 3:39:12
Location: Karlshamn
Contact:

Post by jb »

Ny låt ---> Jallabert - KRS3
R2D2
Posts: 5
Joined: 2004-05-07 17:36:53

Post by R2D2 »

User avatar
Biograf
Posts: 362
Joined: 2003-12-13 16:21:19

Post by Biograf »

R2D2 wrote:http://marcusson.no-ip.com/meosaf/default.asp < - - Bra C++-guider

hehe stackars independence community.... testa nått annat... c++.se på quakenet tex...

eller cplusplus.org
cplusplus.se
cplusplus.com
User avatar
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

Hittade nedanstående exempelkod i guiden hur man använder vektorer och matriser:

Code: Select all

#include<iostream>

using std::cout;

int main ()
{
    int en_vektor[4];

    en_vektor[0] = 1;
    en_vektor[1] = 2;
    en_vektor[2] = 3;
    en_vektor[3] = 4;
    en_vektor[4] = NULL;

    cout << en_vektor[0] << en_vektor[1] << en_vektor[2] << en_vektor[3];

    return 0;
}
Känns tryggt att man redan i grundkursen lär ut buffer overrun - kanske ett av delstegen i: "hur du gör ditt eget virus".
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
User avatar
Biograf
Posts: 362
Joined: 2003-12-13 16:21:19

Post by Biograf »

haha
User avatar
stealth
Hedersbit
Posts: 3364
Joined: 2003-03-11 13:33:10
Location: Göteborg
Contact:

Post by stealth »

pwm wrote:Hittade nedanstående exempelkod i guiden hur man använder vektorer och matriser:

Code: Select all

#include<iostream>

using std::cout;

int main ()
{
    int en_vektor[4];

    en_vektor[0] = 1;
    en_vektor[1] = 2;
    en_vektor[2] = 3;
    en_vektor[3] = 4;
    en_vektor[4] = NULL;

    cout << en_vektor[0] << en_vektor[1] << en_vektor[2] << en_vektor[3];

    return 0;
}
Känns tryggt att man redan i grundkursen lär ut buffer overrun - kanske ett av delstegen i: "hur du gör ditt eget virus".
;D
Grundare av webbyrån We made you look http://wemadeyoulook.at
User avatar
nem
Hedersbit
Posts: 4678
Joined: 2002-04-12 15:48:33
Location: Lund

Post by nem »

Jag rekommenderar (läs predikar) för Python.
"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 »

pwm wrote:Känns tryggt att man redan i grundkursen lär ut buffer overrun - kanske ett av delstegen i: "hur du gör ditt eget virus".
Steg #2 kanske är att hitta ett OS som triggar på att man flödar över och
ser till att varna om det.
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
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

IcePic wrote:Steg #2 kanske är att hitta ett OS som triggar på att man flödar över och
ser till att varna om det.
Inte så lätt att upptäcka buffer overrun, eftersom OS inte kan se variabler, och det går åt mycket minne om alla buffrar använder egna segment eller placeras ut på kanten av minnessidor med nästa sida spärrad...

Däremot vore nog en A64 med nästa SP till XP trevligt. Att inte kunna använda en överskriven buffer för att exekvera program på skulle nog vara ett betydande lyft för Windoze. Vissa självmodifierande program kanske inte uppskattar det riktigt, men livet blir nog lite jobbigare för virusprogrammerare.
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

pwm wrote:Vissa självmodifierande program kanske inte uppskattar det riktigt, men livet blir nog lite jobbigare för virusprogrammerare.
Stöder verkligen windows självmodifierande kod? Bortsett från att det pajar
cpu-cachning och ställer till det så är väl nästan alla moderna OS inställda
på att ha text-segmentet (kod-hunken, whatever) ReadOnly så att man kan
dela den mellan flera olika instanser av det programmet.
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
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

Windows tillåter stack och datasegment att exekvera kod. Det är däremot det som A64 + ny SP skall fixa. Jag har inte kikat närmare på implementationen, men rimligtvis får programmen specifikt allokera minne och begära exekveringsrätt för att kunna fortsätta att fiffla på.

I princip bör/måste alla riktiga operativsystem ha någon form av support för självmodifierande kod. Det används i en del debuggers mm för att t ex sätta en brytpunkt, ändra i kod och fortsätta exekveringen. Bl a VC++ supportar det.

Det används även a JIT-kompilatorer, t ex för att on-the-fly kompilera java byte-kod till nativ kod, eller i grafikdrivers (OpenGL, DirectX mm) för att skapa rasterkod.
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

pwm wrote:Windows tillåter stack och datasegment att exekvera kod. Det är däremot det som A64 + ny SP skall fixa. Jag har inte kikat närmare på implementationen, men rimligtvis får programmen specifikt allokera minne och begära exekveringsrätt för att kunna fortsätta att fiffla på.

I princip bör/måste alla riktiga operativsystem ha någon form av support för självmodifierande kod. Det används i en del debuggers mm för att t ex sätta en brytpunkt, ändra i kod och fortsätta exekveringen. Bl a VC++ supportar det.

Det används även a JIT-kompilatorer, t ex för att on-the-fly kompilera java byte-kod till nativ kod, eller i grafikdrivers (OpenGL, DirectX mm) för att skapa rasterkod.
Fast jag tror vi pratar om olika saker. Självmodifierande kod tolkar jag
som att man ändrar i den kod man laddat in från disk, och det tillåter ju
iaf ingen av unixarna.

JIT osv är ju att man genererar kod i ett allokerat
minne och sedan (på ett eller annat vis) ger sig själv tillåtelse att exekvera
det, men det kallar jag inte självmodifierande kod, eftersom man i mitt tycke
inte modifierar koden, utan skapar och kör "ny" kod.

Det är ju bara frågan om att ha ett bra API eller bra metoder för att bestämma
vart sådan nyskapt kod får/ska finnas för att kunna köras (kräva mprotect() t.ex)
så är det ju klart sen. OpenBSD fick gå igenom lite JIT-grejs, men det var
ju bara en handfull extra mprotect man la ut så löste sig allt, trots att otroligt
få platser är körbara numera.
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
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

För att kunna stega igenom kod, ändra och sedan fortsätta så måste man kunna återanvända samma minnesadresser som programmet laddades på ursprungligen, eftersom det på stacken finns ett antal lagrade returadresser.

I detta fall måste man antigen redan från start få loadern att använda R/W/X på minnessidorna, eller också måste man i efterhand kunna lägga till W-attribut på sidorna.

I fallet med VC++ så allokerar den nya sidor för den nygenererade koden och patchar sedan den gamla koden till att göra ett jmp till den nya koden. Givetvis kräver det sistnämnda copy-on-write, dvs OS måste kopiera de förändrade sidorna och inte förlita sig på att de kan återhämtas från exe-fil.
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
independence
Posts: 3
Joined: 2004-05-17 13:43:20
Contact:

Post by independence »

Hehe, vad ska jag göra nu, ni har kommit på mina elaka planer att förgifta planeten med sunkig C++-kod :)
Borde jag gå iväg och ta självmord nu, jag har väl ingen chans att förtsätta förstöringen nu när ni kommit på mig? Eller jo, lite, jag har jobbat på en ny site http://www.blinkenlights.se :D
Om ni inte vill att jag förgiftar världen med mina giftiga kodexempel så kanske ni kan berätta för mig hur det ska vara? Ska vektorn ha plats för fem element så man kan lagra null i den sista, eller är det något annat som är fel?
Post Reply