Gå til innhold

Måtte Java brenne i helvete


Anbefalte innlegg

Jeg er en annen
Skrevet

Nå har jeg faen meg sittet i flere timer og prøvd å finne ut av dette jar-helvete til Java. Har fått til å lage nye jar-filer osv. -- men problemet er: hvordan forandrer jeg en eksisterende klasse i en jar-fil? Altså, hvordan får jeg kompilert en klasse tilhørende en jar-fil på en fornuftig måte og så lagt denne til jar-filen slik at denne blir kjørbar?

Så langt jeg kan se er dokumentasjonen til Sun elendig. I det hele tatt virker det som å lære seg Java består av pugge en hel helvetes masse syntaks og kommandoer -- er det noen som får tid til å programmere i dette fryktelige språket? Hvis jeg ikke finner ut av dette i løpet av morgendagen skriver jeg hele programmet fra bunnen av i et ordentlig språk (Lisp eller Python), og så ber jeg en stille bønn om at Java snart går til helvete som språk.

Jeg er en annen
Skrevet

Må du absolutt ha Java, da? ;)

Jeg skal modifisere en mindre del av et større program skrevet i Java. Hvis jeg bruker et annet språk må jeg skirve det hele fra bunnen av. Men det ser ut til at det er det jeg kommer til å gjøre.

Skrevet

Java er det eneste språket der jeg har vært avhengig av en IDE for å få ting til å henge sammen. Fikk aldri orden på jar-filene uten.

Jeg er en annen
Skrevet

Java er det eneste språket der jeg har vært avhengig av en IDE for å få ting til å henge sammen. Fikk aldri orden på jar-filene uten.

Hvilken IDE brukte du? JBuilder?

Skrevet

Hvilken IDE brukte du? JBuilder?

Øh, godt spørsmål. Jeg har ikke satt mine bein i Java på flerfoldige år. Jeg husker ærlig talt ikke, men jeg tror kanskje det var NetBeans.

Skrevet

Hvilken IDE brukte du? JBuilder?

Bruk for all del ikke JBuilder - det miljøet har for mange tillegg og egne ting til at det kan kalles standard java.

Det er to utviklingsmiljøer som gjelder når man snakker om "vanlig" java: Eclipse og Netbeans.

"I det hele tatt virker det som å lære seg Java består av pugge en hel helvetes masse syntaks og kommandoer"

Uhm...det gjelder et hvilket som helst språk, vel.

"er det noen som får tid til å programmere i dette fryktelige språket?"

Java er sansynligvis, om ikke DET enkleste, så ihvertfall et av de aller enkleste språkene å programmere i. Men det er selfølgelig ganske annerledes enn en del andre språk, som LISP, Python, C++ etc.

"..........................."

Jeg er en annen
Skrevet

Bruk for all del ikke JBuilder - det miljøet har for mange tillegg og egne ting til at det kan kalles standard java.

Det er to utviklingsmiljøer som gjelder når man snakker om "vanlig" java: Eclipse og Netbeans.

"I det hele tatt virker det som å lære seg Java består av pugge en hel helvetes masse syntaks og kommandoer"

Uhm...det gjelder et hvilket som helst språk, vel.

"er det noen som får tid til å programmere i dette fryktelige språket?"

Java er sansynligvis, om ikke DET enkleste, så ihvertfall et av de aller enkleste språkene å programmere i. Men det er selfølgelig ganske annerledes enn en del andre språk, som LISP, Python, C++ etc.

"..........................."

"Java er sansynligvis, om ikke DET enkleste, så ihvertfall et av de aller enkleste språkene å programmere i. Men det er selfølgelig ganske annerledes enn en del andre språk, som LISP, Python, C++ etc."

Programmeringsspråk kan man som kjent debattere i det uendelige, ulike mennesker legger vekt på ulike ting. For meg er det viktig med fleskible språk der man har stor frihet; dernest bør syntaksen være så enkel som mulig (her er språk temmelig ulike). Jeg har alltid opplevd at det har vært for mye dilldall med Java, men i så måte er det bedre enn f.eks. Pascal og sikkert på linje med C++.

Skrevet

"Java er sansynligvis, om ikke DET enkleste, så ihvertfall et av de aller enkleste språkene å programmere i. Men det er selfølgelig ganske annerledes enn en del andre språk, som LISP, Python, C++ etc."

Programmeringsspråk kan man som kjent debattere i det uendelige, ulike mennesker legger vekt på ulike ting. For meg er det viktig med fleskible språk der man har stor frihet; dernest bør syntaksen være så enkel som mulig (her er språk temmelig ulike). Jeg har alltid opplevd at det har vært for mye dilldall med Java, men i så måte er det bedre enn f.eks. Pascal og sikkert på linje med C++.

"For meg er det viktig med fleskible språk der man har stor frihet"

Det blir feil å bedømme java ut i fra det, egentlig, iom. at noe av poenget med java er at det IKKE skal være fleksibelt på samme måte som f.eks C++. I tillegg er det veldig strengt, noe som gjør det godt egnet til å lære grunnleggende programmeringsteknikker. Men språk er selfølgelig, som du sier, stort sett smak og behag. Man kan gjøre det meste i de fleste språk, men hvert språk har sine styrker og svakheter.

"........................."

Jeg er en annen
Skrevet

"For meg er det viktig med fleskible språk der man har stor frihet"

Det blir feil å bedømme java ut i fra det, egentlig, iom. at noe av poenget med java er at det IKKE skal være fleksibelt på samme måte som f.eks C++. I tillegg er det veldig strengt, noe som gjør det godt egnet til å lære grunnleggende programmeringsteknikker. Men språk er selfølgelig, som du sier, stort sett smak og behag. Man kan gjøre det meste i de fleste språk, men hvert språk har sine styrker og svakheter.

"........................."

Gir Java en siste sjanse nå. Noen spørsmål:

Jeg har en katalog meg en rekke kildekodefiler i ulike underkataloger, skal så lage en jar-fil av denne. Holder det da med kommandoen >jar cf min-jar-fil katalog-med-kildefiler ? Eller må kildefilene kompileres først? bruker jo da javac, men hvordan får jeg den til å kompilere hele katalogen med underkatalogen (det dreier seg om en mengde filer)?

Skrevet

Gir Java en siste sjanse nå. Noen spørsmål:

Jeg har en katalog meg en rekke kildekodefiler i ulike underkataloger, skal så lage en jar-fil av denne. Holder det da med kommandoen >jar cf min-jar-fil katalog-med-kildefiler ? Eller må kildefilene kompileres først? bruker jo da javac, men hvordan får jeg den til å kompilere hele katalogen med underkatalogen (det dreier seg om en mengde filer)?

Beklager - håper noen andre her kan svare på det. Jeg har ingen peiling på jar.

".........................."

Skrevet

Gir Java en siste sjanse nå. Noen spørsmål:

Jeg har en katalog meg en rekke kildekodefiler i ulike underkataloger, skal så lage en jar-fil av denne. Holder det da med kommandoen >jar cf min-jar-fil katalog-med-kildefiler ? Eller må kildefilene kompileres først? bruker jo da javac, men hvordan får jeg den til å kompilere hele katalogen med underkatalogen (det dreier seg om en mengde filer)?

jar har jeg ikke peiling på, men kompilering av alle filene burde være greit nok: http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html

Som du ser kan du liste alle filene i katalogen i en tekstfil, og bruke denne som argument til javac. Utlisting av filnavnene til fil klarer du sikkert selv :)

Jeg er en annen
Skrevet

jar har jeg ikke peiling på, men kompilering av alle filene burde være greit nok: http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html

Som du ser kan du liste alle filene i katalogen i en tekstfil, og bruke denne som argument til javac. Utlisting av filnavnene til fil klarer du sikkert selv :)

Takk for tipset, men nå fant jeg endelig en måte å gjøre det på der jeg kan kompilere bare den ene klassen jeg skal forandre, og så bygge jar-filen på nytt med denne blant klassefilene. Hele applikasjonen består av ~200 klasser så det er greit å slippe å kompilere alt hver gang.

Til sammen har jeg vel brukt tilnærmet en arbeidsdag på å finne ut av det. Ber en stille bønn om at jeg slipper å ha noe mer med Java å gjøre i framtida.

Jeg er en annen
Skrevet

"For meg er det viktig med fleskible språk der man har stor frihet"

Det blir feil å bedømme java ut i fra det, egentlig, iom. at noe av poenget med java er at det IKKE skal være fleksibelt på samme måte som f.eks C++. I tillegg er det veldig strengt, noe som gjør det godt egnet til å lære grunnleggende programmeringsteknikker. Men språk er selfølgelig, som du sier, stort sett smak og behag. Man kan gjøre det meste i de fleste språk, men hvert språk har sine styrker og svakheter.

"........................."

Med fleksibelt mener jeg at man har stor frihet, samt at man slipper å bruke for mye tid på detaljer (eller med andre ord at man kan gjøre mer med færre linjer kode).

Jeg er grunnleggende uenig i at strenge språk er velegnet til å lære programmering. Vel lærer man seg kanskje gode kodekonvensjoner, men man lærer alt for mye unødvendig som er språkspesifikt. Java har mye syntaks som framstår som uforståelig først, men som man ikke kommer utenom. Bare for å lage et Hello World-program i Java må man bruke en rekke sære ord (static final void osv.) som man ikke har grunnlag for å forstå på dette trinnet.

Det hefter en slags snøballeffekt ved Java: Det har vært hypet og det har blitt tatt i utstrakt bruk i næringslivet, dette har igjen ført til at det er skrevet en rekke ferdigkomponenter for det som forenkler mange standardoppgaver i "kommersiell" programmering, pga. av denne standardiseringen har så universiteter og høgskolder (dessverre) kommet etter og begynt å undervise grunnkurs i programmering med Java, osv.

Spør du meg burde opplæring i programmering forgå vha. språk som er på et høyere nivå enn Java (mer abstrakte, fjernere fra maskinvaren). Da vil man kunne fokusere mest mulig på problemløsningen, og ikke så mye på språkspesifikke særegenheter/-systemsæregenheter. Språket på høyest nivå i dag er Lisp (inkludert Scheme). Python og Perl er et stykke unna, men i nærheten. Så kommer Java, C++, Delphi/Pascal o.l.

Skrevet

Med fleksibelt mener jeg at man har stor frihet, samt at man slipper å bruke for mye tid på detaljer (eller med andre ord at man kan gjøre mer med færre linjer kode).

Jeg er grunnleggende uenig i at strenge språk er velegnet til å lære programmering. Vel lærer man seg kanskje gode kodekonvensjoner, men man lærer alt for mye unødvendig som er språkspesifikt. Java har mye syntaks som framstår som uforståelig først, men som man ikke kommer utenom. Bare for å lage et Hello World-program i Java må man bruke en rekke sære ord (static final void osv.) som man ikke har grunnlag for å forstå på dette trinnet.

Det hefter en slags snøballeffekt ved Java: Det har vært hypet og det har blitt tatt i utstrakt bruk i næringslivet, dette har igjen ført til at det er skrevet en rekke ferdigkomponenter for det som forenkler mange standardoppgaver i "kommersiell" programmering, pga. av denne standardiseringen har så universiteter og høgskolder (dessverre) kommet etter og begynt å undervise grunnkurs i programmering med Java, osv.

Spør du meg burde opplæring i programmering forgå vha. språk som er på et høyere nivå enn Java (mer abstrakte, fjernere fra maskinvaren). Da vil man kunne fokusere mest mulig på problemløsningen, og ikke så mye på språkspesifikke særegenheter/-systemsæregenheter. Språket på høyest nivå i dag er Lisp (inkludert Scheme). Python og Perl er et stykke unna, men i nærheten. Så kommer Java, C++, Delphi/Pascal o.l.

"Jeg er grunnleggende uenig i at strenge språk er velegnet til å lære programmering."

Det kan du gjerne være, men jeg er helt uenig. Et strengt språk, som hindrer en i å ta snarveier e.l, tvinger deg til å lære å gjøre ting "riktig".

"lærer alt for mye unødvendig som er språkspesifikt."

Det går ikke an å komme utenom. Skal man bruke et språk for å lære å programmere, så MÅ man lære en del språkspesifikke elementer. Man kan selfølgelig lære programmereingsteori, men det fører til at veldig mange går ut av et programmeringskurs uten å kunne lage noe som helst i noe språk.

"Java har mye syntaks som framstår som uforståelig først, men som man ikke kommer utenom."

Java har en av de enkleste syntaksene jeg har sett i programmeringsspråk. Se f.eks på hvordan man bruke sockets: man skriver omtrent gramatisk hva man skal gjøre, i sterkt motsetning til de fleste andre språk.

"Bare for å lage et Hello World-program i Java må man bruke en rekke sære ord (static final void osv.) som man ikke har grunnlag for å forstå på dette trinnet."

"final" er helt unødvendig i den sammenhengen. Resten har å gjøre med klassedefinisjoner, noe man ikke kommer unna i noen språk som er 100% objektorienterte. (c++ er ikke det)

"Det hefter en slags snøballeffekt ved Java: Det har vært hypet og det har blitt tatt i utstrakt bruk i næringslivet, dette har igjen ført til at det er skrevet en rekke ferdigkomponenter for det som forenkler mange standardoppgaver i "kommersiell" programmering, pga. av denne standardiseringen har så universiteter og høgskolder (dessverre) kommet etter og begynt å undervise grunnkurs i programmering med Java, osv."

Både og. Javas styrke er at det er plattformuavhengig, noe som i internett- og intranettapplikasjoner er en stor fordel.

Tidligere brukte bl.a UIO Simula i programmerings-grunnkursene. Sammenlignet med Java så var dette nærmest meningsløst, iom. at man faktisk lærte å bruke et verdiløst (i arbeidssammenheng) språk. Man ble nødt til å lære seg et nytt språk senere, med den grunnleggende programmeringskunskapen i bakhodet, noe man fortsatt kan etter å ha lært java. Forskjellen er at man kommer langt med bare java også.

"Spør du meg burde opplæring i programmering forgå vha. språk som er på et høyere nivå enn Java (mer abstrakte, fjernere fra maskinvaren)."

Det finnes knapt et språk som er mer høynivå enn java - det sier seg selv, iom. at det er plattformuavhengig.

"Da vil man kunne fokusere mest mulig på problemløsningen, og ikke så mye på språkspesifikke særegenheter/-systemsæregenheter."

Sorry, men her kan jeg ikke se hvordan der er mulig å se det du snakker om. Jo mer abstrakt, jo mindre fokus på spesifikke ting relatert til system, omstendigheter etc. Nettopp det gir en muligheten til å fokusere mer på problemstillingen.

"Språket på høyest nivå i dag er Lisp (inkludert Scheme). Python og Perl er et stykke unna, men i nærheten. Så kommer Java, C++, Delphi/Pascal o.l."

Jeg vet ikke hva du mener men "høynivå", men jeg forholder meg til den terminilogien som er standard. Altså: laveste nivå er maskinkode (evt. assembler). Høyest ligger de språkene som ikke snakker direkte til maskinvaren i det hele tatt. F.eks java. C++ og delphi er også høynivå språk, men jeg kjenner ikke godt nok til dem til å komme med konkrete sammenligninger med java.

Imildertid er objectorientert programmering det som de fleste mener er mest nyttig å fokusere på i dag. Java er helt objektorientert. C++ og delphi er blandinger, d.s.v at man kan, men trenger ikke, å følge alle prinsipper for OOP. Jeg har selv skrevet en del c++ kode i tideligere år, og jeg gjorde det som om jeg skrev c kode (altså - ikke objektorientert i det hele tatt, bortsett fra den aller første klassedeklarasjonen).

Jeg vil ikke krangle med ditt syn på java og andre språk i undervisningssammenheng, men jeg ser ikke at du kommer med noen gode argumenter som støtter påstandene.

"..........................."

Jeg er en annen
Skrevet

"Jeg er grunnleggende uenig i at strenge språk er velegnet til å lære programmering."

Det kan du gjerne være, men jeg er helt uenig. Et strengt språk, som hindrer en i å ta snarveier e.l, tvinger deg til å lære å gjøre ting "riktig".

"lærer alt for mye unødvendig som er språkspesifikt."

Det går ikke an å komme utenom. Skal man bruke et språk for å lære å programmere, så MÅ man lære en del språkspesifikke elementer. Man kan selfølgelig lære programmereingsteori, men det fører til at veldig mange går ut av et programmeringskurs uten å kunne lage noe som helst i noe språk.

"Java har mye syntaks som framstår som uforståelig først, men som man ikke kommer utenom."

Java har en av de enkleste syntaksene jeg har sett i programmeringsspråk. Se f.eks på hvordan man bruke sockets: man skriver omtrent gramatisk hva man skal gjøre, i sterkt motsetning til de fleste andre språk.

"Bare for å lage et Hello World-program i Java må man bruke en rekke sære ord (static final void osv.) som man ikke har grunnlag for å forstå på dette trinnet."

"final" er helt unødvendig i den sammenhengen. Resten har å gjøre med klassedefinisjoner, noe man ikke kommer unna i noen språk som er 100% objektorienterte. (c++ er ikke det)

"Det hefter en slags snøballeffekt ved Java: Det har vært hypet og det har blitt tatt i utstrakt bruk i næringslivet, dette har igjen ført til at det er skrevet en rekke ferdigkomponenter for det som forenkler mange standardoppgaver i "kommersiell" programmering, pga. av denne standardiseringen har så universiteter og høgskolder (dessverre) kommet etter og begynt å undervise grunnkurs i programmering med Java, osv."

Både og. Javas styrke er at det er plattformuavhengig, noe som i internett- og intranettapplikasjoner er en stor fordel.

Tidligere brukte bl.a UIO Simula i programmerings-grunnkursene. Sammenlignet med Java så var dette nærmest meningsløst, iom. at man faktisk lærte å bruke et verdiløst (i arbeidssammenheng) språk. Man ble nødt til å lære seg et nytt språk senere, med den grunnleggende programmeringskunskapen i bakhodet, noe man fortsatt kan etter å ha lært java. Forskjellen er at man kommer langt med bare java også.

"Spør du meg burde opplæring i programmering forgå vha. språk som er på et høyere nivå enn Java (mer abstrakte, fjernere fra maskinvaren)."

Det finnes knapt et språk som er mer høynivå enn java - det sier seg selv, iom. at det er plattformuavhengig.

"Da vil man kunne fokusere mest mulig på problemløsningen, og ikke så mye på språkspesifikke særegenheter/-systemsæregenheter."

Sorry, men her kan jeg ikke se hvordan der er mulig å se det du snakker om. Jo mer abstrakt, jo mindre fokus på spesifikke ting relatert til system, omstendigheter etc. Nettopp det gir en muligheten til å fokusere mer på problemstillingen.

"Språket på høyest nivå i dag er Lisp (inkludert Scheme). Python og Perl er et stykke unna, men i nærheten. Så kommer Java, C++, Delphi/Pascal o.l."

Jeg vet ikke hva du mener men "høynivå", men jeg forholder meg til den terminilogien som er standard. Altså: laveste nivå er maskinkode (evt. assembler). Høyest ligger de språkene som ikke snakker direkte til maskinvaren i det hele tatt. F.eks java. C++ og delphi er også høynivå språk, men jeg kjenner ikke godt nok til dem til å komme med konkrete sammenligninger med java.

Imildertid er objectorientert programmering det som de fleste mener er mest nyttig å fokusere på i dag. Java er helt objektorientert. C++ og delphi er blandinger, d.s.v at man kan, men trenger ikke, å følge alle prinsipper for OOP. Jeg har selv skrevet en del c++ kode i tideligere år, og jeg gjorde det som om jeg skrev c kode (altså - ikke objektorientert i det hele tatt, bortsett fra den aller første klassedeklarasjonen).

Jeg vil ikke krangle med ditt syn på java og andre språk i undervisningssammenheng, men jeg ser ikke at du kommer med noen gode argumenter som støtter påstandene.

"..........................."

"Jeg vil ikke krangle med ditt syn på java og andre språk i undervisningssammenheng, men jeg ser ikke at du kommer med noen gode argumenter som støtter påstandene."

For meg ser det ut som du vil krangle, selv om du ikke helt vil innrømme det ;) Man blir vel sjelden enig i en duskusjon om programmeringsspråk, men det kan være interessant allikevel.

Vi diskuterer egentlig to forskjellige (men ikke helt adkskilte) ting her: 1) Hva karakteriserer et godt lærespråk, og 2) hvor bra er Java (sammenlignet med andre språk).

1)

"Skal man bruke et språk for å lære å programmere, så MÅ man lære en del språkspesifikke elementer. Man kan selfølgelig lære programmereingsteori, men det fører til at veldig mange går ut av et programmeringskurs uten å kunne lage noe som helst i noe språk."

Selvsagt må man ha et eller annet språk å implementere ting i, poenget er at de språkspesifikke elementene man må lære bør være så få som mulig. Ditt eksempel med socketprogrsammering i Java viser bare at Java har mange ferdige klasser man kan benytte, men har ingenting med enkel syntaks å gjøre. Enekel syntaks vil si at man kan gjøre mye (det meste) vha. en liten grammatikk.

Scheme, som er en mindre utgave av Lisp, er fin i denne sammenhengen. På ~1 time har man lært seg syntaksen som er nødvendig for å gjøre det meste man trenger i løpet av et innføringskurs i programmering. Er det mange som bruker Scheme i norsk næringsliv da? Antagelig ingen. Hva så? Har man først lært seg å programmere er det å lære seg et nytt språk en relativt triviell sak.

Ved MIT har de i en årrekke benyttet Scheme som språk i innføringskurset i progrsmmering for electrical engeneering- og computer science-studenter, men jeg tviler på at MIT-studenter har større problemer med å få seg jobb enn andre av den grunn.

2)

"Det finnes knapt et språk som er mer høynivå enn java - det sier seg selv, iom. at det er plattformuavhengig."

At et språk er plattformuavhengig sier i prinsippet ikke noe om hvor høynivå det er (f.eks. kunne man tenke seg et plattformuavhenig assemlber-språk med sin egen "virtuelle maskin").

Jeg kan være enig i at "høynivå" er et fluffy begrep; la oss kalle det et språks uttrykkskraft -- med andre ord: Hvor mye kan man få til med færrest mulig linjer kodde?

Her er Lisp på et høyere nivå enn Java (og alle andre språk). Det er helt rikig som du sier at de fleste mener det er mest nyttig å fokusere på OOP i dag, og det er ofte et fint prinsipp for programmering. Problemet med Java er at der _må_ alt være objektorientert, hele tida. I Lisp kan man skrive objektorientert hvis man vil (hvis det passer best til problemet som skal løses); altså har man større frihet (ja, det innebærer også at man "har lov til" å programmere dårlig). Det er ikke uten grunn at Lisp så å si er standardspråk innefor AI, hvor man som regel jobber med komplekse problemstillinger; Lisp er rett og slett det språket som tilbyr størst fleksibilitet i problemløsningsprosessen, det språket som best kan tilpasses problemdomenet.

Lisp har muligheter som det er vanskelig å forklare hvis man ikke selv har erfaring i Lisp. Fordi både variabler og funksjoner er "first class objects" i Lisp kan man f.eks. sende funksjoner som parametre til andre funsakjoner. Dette er et eksempel på en egenskap ved Lisp som gjør at man kan tenke på en helt ny måte når man programmerer -- for Lisp tillater ting som ikke går an i andre språk.

Et eksempel på dette, i pseudokode:

function foo(en_funskjon, en_verdi) { return en_funksjon(en_verdi) }

function goo(x) { return x * x }

>foo(goo, 2)

4

Lisp/Scheme:

(define (foo en-funksjon en-verdi) (en-funksjon en-verdi))

(define (goo x) (* x x))

Kaller funksjonen:

> (foo goo 2)

4

Slik kan man ikke programmere i Java -- dvs. man kunne antagelig lage en klasse med en x^2-metode, som man så instansierer et objekt av og sender som parameter til en annen metode. Men man må da angi hvilken metode i klassen man skal bruke, så dette kan aldri bli så generelt som i Lisp-versjonen.

Dette er bare ett eksempel på den fleksibiliteten som gjør Lisp til et kraftigere språk enn Java.

Se ellers http://www.paulgraham.com/icad.html for en sammenligning av Lisp og andre språk, med flere konkrete kodeeksempler på slutten.

Skrevet

"Jeg vil ikke krangle med ditt syn på java og andre språk i undervisningssammenheng, men jeg ser ikke at du kommer med noen gode argumenter som støtter påstandene."

For meg ser det ut som du vil krangle, selv om du ikke helt vil innrømme det ;) Man blir vel sjelden enig i en duskusjon om programmeringsspråk, men det kan være interessant allikevel.

Vi diskuterer egentlig to forskjellige (men ikke helt adkskilte) ting her: 1) Hva karakteriserer et godt lærespråk, og 2) hvor bra er Java (sammenlignet med andre språk).

1)

"Skal man bruke et språk for å lære å programmere, så MÅ man lære en del språkspesifikke elementer. Man kan selfølgelig lære programmereingsteori, men det fører til at veldig mange går ut av et programmeringskurs uten å kunne lage noe som helst i noe språk."

Selvsagt må man ha et eller annet språk å implementere ting i, poenget er at de språkspesifikke elementene man må lære bør være så få som mulig. Ditt eksempel med socketprogrsammering i Java viser bare at Java har mange ferdige klasser man kan benytte, men har ingenting med enkel syntaks å gjøre. Enekel syntaks vil si at man kan gjøre mye (det meste) vha. en liten grammatikk.

Scheme, som er en mindre utgave av Lisp, er fin i denne sammenhengen. På ~1 time har man lært seg syntaksen som er nødvendig for å gjøre det meste man trenger i løpet av et innføringskurs i programmering. Er det mange som bruker Scheme i norsk næringsliv da? Antagelig ingen. Hva så? Har man først lært seg å programmere er det å lære seg et nytt språk en relativt triviell sak.

Ved MIT har de i en årrekke benyttet Scheme som språk i innføringskurset i progrsmmering for electrical engeneering- og computer science-studenter, men jeg tviler på at MIT-studenter har større problemer med å få seg jobb enn andre av den grunn.

2)

"Det finnes knapt et språk som er mer høynivå enn java - det sier seg selv, iom. at det er plattformuavhengig."

At et språk er plattformuavhengig sier i prinsippet ikke noe om hvor høynivå det er (f.eks. kunne man tenke seg et plattformuavhenig assemlber-språk med sin egen "virtuelle maskin").

Jeg kan være enig i at "høynivå" er et fluffy begrep; la oss kalle det et språks uttrykkskraft -- med andre ord: Hvor mye kan man få til med færrest mulig linjer kodde?

Her er Lisp på et høyere nivå enn Java (og alle andre språk). Det er helt rikig som du sier at de fleste mener det er mest nyttig å fokusere på OOP i dag, og det er ofte et fint prinsipp for programmering. Problemet med Java er at der _må_ alt være objektorientert, hele tida. I Lisp kan man skrive objektorientert hvis man vil (hvis det passer best til problemet som skal løses); altså har man større frihet (ja, det innebærer også at man "har lov til" å programmere dårlig). Det er ikke uten grunn at Lisp så å si er standardspråk innefor AI, hvor man som regel jobber med komplekse problemstillinger; Lisp er rett og slett det språket som tilbyr størst fleksibilitet i problemløsningsprosessen, det språket som best kan tilpasses problemdomenet.

Lisp har muligheter som det er vanskelig å forklare hvis man ikke selv har erfaring i Lisp. Fordi både variabler og funksjoner er "first class objects" i Lisp kan man f.eks. sende funksjoner som parametre til andre funsakjoner. Dette er et eksempel på en egenskap ved Lisp som gjør at man kan tenke på en helt ny måte når man programmerer -- for Lisp tillater ting som ikke går an i andre språk.

Et eksempel på dette, i pseudokode:

function foo(en_funskjon, en_verdi) { return en_funksjon(en_verdi) }

function goo(x) { return x * x }

>foo(goo, 2)

4

Lisp/Scheme:

(define (foo en-funksjon en-verdi) (en-funksjon en-verdi))

(define (goo x) (* x x))

Kaller funksjonen:

> (foo goo 2)

4

Slik kan man ikke programmere i Java -- dvs. man kunne antagelig lage en klasse med en x^2-metode, som man så instansierer et objekt av og sender som parameter til en annen metode. Men man må da angi hvilken metode i klassen man skal bruke, så dette kan aldri bli så generelt som i Lisp-versjonen.

Dette er bare ett eksempel på den fleksibiliteten som gjør Lisp til et kraftigere språk enn Java.

Se ellers http://www.paulgraham.com/icad.html for en sammenligning av Lisp og andre språk, med flere konkrete kodeeksempler på slutten.

"For meg ser det ut som du vil krangle, selv om du ikke helt vil innrømme det ;) Man blir vel sjelden enig i en duskusjon om programmeringsspråk, men det kan være interessant allikevel."

De må du gjerne "se" hvis det er det du vil. Som sagt - å diskutere smak og behag er bare tull. Men du kom med en del påstander som var direkte feil, og da dreier seg seg lite om krangling. F.eks definisjonen på høy/lav-nivå. Din definisjon på "enkel" syntaks er jeg heller ikke enig i. Dette dreier seg ikke utelukkende om å gjøre mest mulig på minst mulig plass. Da ville man kunne si at Perl har en enkel syntax - det er et av de aller kraftigste scrit-språkene, og man kan gjøre utrolig mye rart med lite kode. Men enkelt syntax? Godt nybegynnerspråk? No way.

At LIST er et av de kraftigste språkene vi har er det liten tvil om. Men det er ikke høyere nivå enn java av den grunn. Og det er heller ikke noe vanlig brukt nybegynnerspråk.

Du virker som om du har lagt java for hat, og det er helt greit mht. smak etc. Men argumentene dine for at det er "dårlig" og "dumt å lære programmering i" er helt på jordet (mener jeg :-)

Selv synes jeg java er et glimrende språk - til sitt bruk. D.v.s internett/nett-relaterte ting, små applikasjoner, servlets, for ikke å snakke om applets etc. Som et språk for større applikasjonsutvikling, eller for å skrive små enkle rutiner, er det ikke fullt så godt egnet.

"..........................."

Jeg er en annen
Skrevet

"For meg ser det ut som du vil krangle, selv om du ikke helt vil innrømme det ;) Man blir vel sjelden enig i en duskusjon om programmeringsspråk, men det kan være interessant allikevel."

De må du gjerne "se" hvis det er det du vil. Som sagt - å diskutere smak og behag er bare tull. Men du kom med en del påstander som var direkte feil, og da dreier seg seg lite om krangling. F.eks definisjonen på høy/lav-nivå. Din definisjon på "enkel" syntaks er jeg heller ikke enig i. Dette dreier seg ikke utelukkende om å gjøre mest mulig på minst mulig plass. Da ville man kunne si at Perl har en enkel syntax - det er et av de aller kraftigste scrit-språkene, og man kan gjøre utrolig mye rart med lite kode. Men enkelt syntax? Godt nybegynnerspråk? No way.

At LIST er et av de kraftigste språkene vi har er det liten tvil om. Men det er ikke høyere nivå enn java av den grunn. Og det er heller ikke noe vanlig brukt nybegynnerspråk.

Du virker som om du har lagt java for hat, og det er helt greit mht. smak etc. Men argumentene dine for at det er "dårlig" og "dumt å lære programmering i" er helt på jordet (mener jeg :-)

Selv synes jeg java er et glimrende språk - til sitt bruk. D.v.s internett/nett-relaterte ting, små applikasjoner, servlets, for ikke å snakke om applets etc. Som et språk for større applikasjonsutvikling, eller for å skrive små enkle rutiner, er det ikke fullt så godt egnet.

"..........................."

Jeg kan ikke være med på at dine innvendinger er motivert av en slags opplysningsiver fordi jeg kommer med feilopplysninger. Men du har tydeligvis misforstått meg på en del punkter:

"Din definisjon på "enkel" syntaks er jeg heller ikke enig i. Dette dreier seg ikke utelukkende om å gjøre mest mulig på minst mulig plass."

Du misforstår min definisjon på enkel syntaks: jeg sier at det handler om å kunne gjøre mye ved hjelp av en liten grammatikk (reglene som definerer språket).

"At LIST er et av de kraftigste språkene vi har er det liten tvil om. Men det er ikke høyere nivå enn java av den grunn. Og det er heller ikke noe vanlig brukt nybegynnerspråk."

Uttrykkskraft henger sammen med grad av "høynivå". Som jeg påpekte er det en misforståelse at plattformuavhegighet har så mye med høynivå å gjøre. Konkret: I Lisp trenger man ikke å bry seg om variabeltyper, fordi alt er pekere (til verdier eller funksjoner). Dette er mer høynivå, fjernere fra maskinimplementeringen, enn i Java, hvor funksjoner ikke kan behandles på samme måte som variabler, og hvor variabler må ha en type. Lisp er mye nærmere et abstrakt matematisk språk (og er da også basert på lambda-kalkyle) enn f.eks. Java.

Det er dessverre ikke et veldig vanlig brukt nybegynnerspråk, i hvert fall ikke i Norge. På NTNU gis kurs i Lisp/funksjonell programmering på mellomfagsnivå. Men Lisp/Scheme er et vanlig brukt nybegynnerspråk på noen av verdens beste universiteter: MIT, Harvard, Berkeley og Princeton bruker f.eks. alle Scheme (se http://www.schemers.com/schools.html). Dette i seg selv sier ganske mye.

Ellers er det riktig at jeg ikke liker Java. Men dette er som du sier mest en vanesak, jeg kunne sikkert ha lagt Delphi like mye for hat hvis jeg ikke hadde vært vant til det. Problemet er at Java er "over alt" og at man derfor ofte tvinges til å bruke det. Det syns jeg er et problem.

Skrevet

Jeg kan ikke være med på at dine innvendinger er motivert av en slags opplysningsiver fordi jeg kommer med feilopplysninger. Men du har tydeligvis misforstått meg på en del punkter:

"Din definisjon på "enkel" syntaks er jeg heller ikke enig i. Dette dreier seg ikke utelukkende om å gjøre mest mulig på minst mulig plass."

Du misforstår min definisjon på enkel syntaks: jeg sier at det handler om å kunne gjøre mye ved hjelp av en liten grammatikk (reglene som definerer språket).

"At LIST er et av de kraftigste språkene vi har er det liten tvil om. Men det er ikke høyere nivå enn java av den grunn. Og det er heller ikke noe vanlig brukt nybegynnerspråk."

Uttrykkskraft henger sammen med grad av "høynivå". Som jeg påpekte er det en misforståelse at plattformuavhegighet har så mye med høynivå å gjøre. Konkret: I Lisp trenger man ikke å bry seg om variabeltyper, fordi alt er pekere (til verdier eller funksjoner). Dette er mer høynivå, fjernere fra maskinimplementeringen, enn i Java, hvor funksjoner ikke kan behandles på samme måte som variabler, og hvor variabler må ha en type. Lisp er mye nærmere et abstrakt matematisk språk (og er da også basert på lambda-kalkyle) enn f.eks. Java.

Det er dessverre ikke et veldig vanlig brukt nybegynnerspråk, i hvert fall ikke i Norge. På NTNU gis kurs i Lisp/funksjonell programmering på mellomfagsnivå. Men Lisp/Scheme er et vanlig brukt nybegynnerspråk på noen av verdens beste universiteter: MIT, Harvard, Berkeley og Princeton bruker f.eks. alle Scheme (se http://www.schemers.com/schools.html). Dette i seg selv sier ganske mye.

Ellers er det riktig at jeg ikke liker Java. Men dette er som du sier mest en vanesak, jeg kunne sikkert ha lagt Delphi like mye for hat hvis jeg ikke hadde vært vant til det. Problemet er at Java er "over alt" og at man derfor ofte tvinges til å bruke det. Det syns jeg er et problem.

Det gis undervisning i LISP på grunnfagsnivå på Datalingvistikk ved UiB. Sånn apropos :)

Jeg er en annen
Skrevet

Det gis undervisning i LISP på grunnfagsnivå på Datalingvistikk ved UiB. Sånn apropos :)

I så fall er det veldig fint for alle som tar det faget :)

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Innholdet ditt inneholder uttrykk som vi ikke tillater. Vennligst endre innholdet ditt slik at det ikke lenger inneholder de markerte ordene nedenfor.
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
×
×
  • Opprett ny...