Gå til innhold

Anbefalte innlegg

Kjøp deg ei god bok om språket du vil lære, det er svært mykje bra litteratur om emnet der ute. Sjølv les eg Java: How to Program 5th edition (ISBN 9781405855150), og er igrunn fornøyd med den. Tar for seg ting grunding, og startar i bunn for å gi best mulig forståelse for ting.

 

Ein annan ting du er heilt avhengig av for å lære deg å programmere, er interessen og stå-på-viljen. I starten ser du neppe stort meir enn eit terminalvindu som viser litt tekst eller tall, så ikkje forvent ferdige superfancy grafiske grensesnitt med ein gong :)

 

Programmering er eit såpass stort emne at det er vanskelig å svare på "Alt om programmering" som du seier i førsteposten her.

 

Om nokon skal lære seg programmering så anbefaler eg ofte Head First bøkene i valgfritt språk. Java, SQL, C# eller Javascript. Dei er veldig lettleste og har masse teikninger! Kombiner det med ein referansebok så er du godt på veg

 

SQL og Javascript er vel ikkje akkurat programmering, strengt tatt. SQL er eit databasespråk, og det aleine får du ikkje gjort så ufattelig mykje spennande med. Javascript aleine har heller ingenting for seg, og må kombinerast med HTML og CSS for å få noko særlig ut av det. Er og eit scriptspråk, og ikkje eit programmeringsspråk.

Lenke til kommentar
Videoannonse
Annonse

Programmeringsspråk genererer maskinkode på et eller annet punkt før programmet kjøres; dette skjer i Java, C#, VB.NET, VB6, C/C++, Assembly, D og lisp.

Det skjer derimot ikke i Python og Ruby (Perl vet jeg ikke noe om)

Python har et bytecode språk, men dette oversettes bare on-the-fly, og blir ikke direkte gjort om til maskinkode.

Ruby skal vel få bytecode i neste versjon etter det jeg har hørt.

.NET og Java kompilerer programmene sine til et mellomstadie (CIL og Java Bytecode) men disse programmene vil bli kompilert til maskinkode når programmene kjører (Just-in-time compilation)

 

HTML og CSS er hverken programmeringsspråk eller scriptspråk.

Det er ressurser som brukes av et annet program (IE, FireFox etc.) og kan ikke kalles et programmeringsspråk, da det ikke kan brukes til å regne ut noe som helst.

 

Men man pleier ikke å skille så veldig mellom scriptspråk og programmeringsspråk annet en der det er nødvendig, f.eks. hvis en bruker Python som scriptspråk i et C++ program.

Lenke til kommentar
Programmeringsspråk genererer maskinkode på et eller annet punkt før programmet kjøres; dette skjer i Java, C#, VB.NET, VB6, C/C++, Assembly, D og lisp.

Det skjer derimot ikke i Python og Ruby (Perl vet jeg ikke noe om)

Så Python er ikke et programmeringsspråk? Interessant, for å si det mildt. Hva med Jython og IronPython?

 

Om et språk kompileres til mellomkode, maskinkode og NÅR denne oversettingen skjer er uinteressant. Det endrer ikke på det faktum at språket er et programmeringsspråk. ALT kjører jo på en maskin og blir dermed til maskinkode til syvende og sist, det er bare snakk om abstraksjoner.

 

Hele skillet mellom "programmeringsspråk" og "scriptespråk" er uinteressant og enhver kategorisering basert på dette alene vil være feil. Uansett.

 

Skill mellom språk og implementasjon av språk.

 

Edit: skrivefeil

Endret av steingrim
Lenke til kommentar

Skillet er egentlig ganske vesentlig.

Det man gjør når man "programmerer" er å skrive instruksjoner til en prosessor, som regel x86.

MEN hvis programmet du skriver i virkeligheten aldri genererer en eneste instruksjon direkte for prosessoren, kan man virkelig kalle det et programmeringsspråk?

Lenke til kommentar
Skillet er egentlig ganske vesentlig.

Slik du presenterer skillet er det jo fullstendig galt og da er det uvesentlig. Python er ikke et programmeringsspråk, men Jython og IronPython er det? Det er jo samme språk, bare forskjellige implementasjoner!

 

Det man gjør når man "programmerer" er å skrive instruksjoner til en prosessor, som regel x86.

MEN hvis programmet du skriver i virkeligheten aldri genererer en eneste instruksjon direkte for prosessoren, kan man virkelig kalle det et programmeringsspråk?

Dette blir jo helt merkelig. Når jeg skriver brev i Word genererer jeg instruksjoner på prosessoren, men det betyr ikke at brevet mitt er et program. Eller script.

 

Man kan ikke skille programmeringsspråk og scriptespråk utifra språket. Språket sier noe om hva og hvordan man kan uttrykke noe, med regler for dette. En gitt implementasjon av et språk kan oversette dette direkte til maskinkode, eller den kan oversette det i det språket tolkes. Om eksekveringen i en gitt implementasjon er realisert med mellomkode eller tolking endrer det ikke på faktumet at språket er et programmeringsspråk.

Lenke til kommentar
Dette blir jo helt merkelig. Når jeg skriver brev i Word genererer jeg instruksjoner på prosessoren

 

Det gjør du aldeles ikke.

 

Men når det gjelder selve språket har du egentlig rett, det går på implementasjonen.

Men forskjellige implementasjoner fører også til endringer i språket for å støtte domenet som implementasjonen er ment for.

Derfor: Python er et scriptspråk, IronPython er ikke det.

Endret av GeirGrusom
Lenke til kommentar
Men forskjellige implementasjoner fører også til endringer i språket for å støtte domenet som implementasjonen er ment for.

Derfor: Python er et scriptspråk, IronPython er ikke det.

Python og IronPython ER SAMME SPRÅK :) Hvis du virkelig mener at tolkede språk har et annet domene enn kompilerte språk så lever vi i totalt forskjellige virkeligheter. Det er ikke implementasjonen av et språk som bestemmer domenet.

 

Python (eller CPython som den offisielle versjonen gjerne kalles) har forresten et bytecode språk som mellomspråk, disse ligger i .pyc-filer. Dermed kan man si det er kompilert om man synes det er vesentlig. Det synes dog ikke jeg det er, men det gjør altså du :)

Lenke til kommentar

Eit scriptespråk er eit språk som kan kjøres uten å måtte kompileres først. F.eks Groovy er eit lag over Java der du kan programmere i *real-time*, ergo kjøre instrukser utan å måtte rekompilere. Det same vil eg tru gjelder for Jython også.

 

Men alle går under definisjon programmeringsspråk.

Lenke til kommentar
Python (eller CPython som den offisielle versjonen gjerne kalles) har forresten et bytecode språk som mellomspråk, disse ligger i .pyc-filer. Dermed kan man si det er kompilert om man synes det er vesentlig. Det synes dog ikke jeg det er, men det gjør altså du :)

 

Nei, det er ikke vesentlig ;) bytecode er ikke det samme som maskinkode.

 

Men det burde vært et annet navn på det som ikke er scriptspråk dog, for det fører til mer forvirring, siden man ikke kan påstå at man ikke lager programmer med Python.

 

.NET og Java er også i en slags gråsone, siden disse krever en JIT compiler.

Endret av GeirGrusom
Lenke til kommentar

Jeg syns ikke det er noe galt å kalle python, perl etc. for programmeringsspråk. Man programmerer jo med disse språkene selv om det ikke blir generert maskinkode. Å programmere er jo bare å få datamaskinen til å gjøre ting, om det blir gjort ved å skrive instruksjoner til prosessoren eller interpretet er ganske likegyldig for meg ihvertfall. Kan jo se hva wikipedia sier også:

http://en.wikipedia.org/wiki/Scripting_lan...namic_languages

http://en.wikipedia.org/wiki/Programming_language

Lenke til kommentar

Det har med ytelse og funksjonalitet å gjøre.

Et program som kjører i ren maskinkode er betydelig mer effektivt en et interperated språk, og avhengig av hva en prøver å gjøre, kan dette være veldig viktig.

 

Aprikos dette har jeg ikke helt forstått hvorfor Python, Lua etc. bruker den stack metoden for å kommunisere med host programmet; kan ikke interperatoren eller compileren bare lage en bitteliten bit med native code som setter i gang interperatoren, istedet for at programmereren må dytte ting av og på stack?

Det jeg tenker på, er at man i språket har f.eks. en funksjon

def myfunc(x)

i python, kan oversettes til

typedef PYOBJECT* (*myfunc) (PYOBJECT* x); i C, og man bruker funksjonspekere istedet? da blir det plutselig helt opp til interperatoren å behandle stacken, og ting kan gjøres mye mer effektivt.

 

f.eks.

 

struct call_proc_x86

{

// Dytt variabler til stacken

char opcode; // 0x9A jump far absolute (32-bit)

void* jmp_address;

char return_code; // 0xCB far return to calling procedure

};

 

Men det er sikkert noe jeg ikke vet om her, siden det ikke gjøres slik...

Lenke til kommentar
Det har med ytelse og funksjonalitet å gjøre.

Et program som kjører i ren maskinkode er betydelig mer effektivt en et interperated språk, og avhengig av hva en prøver å gjøre, kan dette være veldig viktig.

Hæ? Nå snakker vi om hva som kan kalles et programmeringsspråk, hva har ytelse og effektivitet med det å gjøre? Et programmeringsspråk kan kontrollere en datamaskin, kalkulere osv. Python, perl etc passer fint inn her etter min mening og wikipedia også for den saks skyld. Står ingenting om verken ytelse eller at det må kompileres til maskinkode. Så lenge det er en universal turingmaskin og turingkomplett eller bygger på lambdakalkulus er det et programmeringsspråk.

Endret av teflonpanne
Lenke til kommentar

...så vil jeg vel ikke si at Wikipedia er den beste kilden uansett. Det er noe som heter kildekritikk, liksom.

 

Men det er en ganske grei definisjon:

- Programmeringsspråk = programmerer datamaskin

- scriptsrpåk = Programmerer/instruerer et annet program

Lenke til kommentar
...så vil jeg vel ikke si at Wikipedia er den beste kilden uansett. Det er noe som heter kildekritikk, liksom.

Du vil ikke si det nei? Wikipedia er en jævlig bra kilde for fysikk/matte/informatikk osv, det har blitt verifisert flere ganger.

 

Men det er en ganske grei definisjon:

- Programmeringsspråk = programmerer datamaskin

- scriptsrpåk = Programmerer/instruerer et annet program

Ja, da får dere holde dere til den definisjonen da, så forholder jeg meg til det alle andre mener.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...