Gå til innhold

[Løst] Hvor burde jeg lære programmering og hvilket språk?


Anbefalte innlegg

 

Her er poenget mit at hvis man ikke får til noen program så lære man heller ikke språket

Det er også stor fare for at man rett og slett gir opp før man har begynt fordi man ser ikke nytten av det man driver med

 

 

Jeg er helt enig i at det ikke må være så komplisert at man gir opp før man kommer igang. Men man må nok rett og slett forholde seg til at det man lager når man er i begynnelsen av lærefasen ikke har noen annen nytte. Man må lære å krabbe før man lærer å gå, som det heter.

 

I forhold til å lære seg grunnleggende programmering er det helt irrelevant hvaslags nettdekning det er her i landet, og om klienter bør være tykke eller tynne, det flukturerer jo fram og tilbake, som med de fleste trender.

 

Men - det er jo unektelig litt slik at nytteverdi og tilgjengelighet går hånd i hånd, og en enkel nettside med enkel funksjonalitet, kan godt komme til nytte for ganske mange, mens et enkelt program med et enkelt "tykkt" gui vil ha en distribusjonsutfordring som gjør at det rett og slett aldri vil fly...

 

Nå ble de jo påstått at det var nett programmer som gjaldt , alt det andre kunne man bare glemme , da er det jo lit merkelig at du påstår at man ikke har bruk for nettforbindelsen hvis det er nettop det som gjør at man får eksperimentert

Lenke til kommentar
Videoannonse
Annonse

 

 

Og om du velger å programmere ikkeobjektorientert i Object Pascal eller i Java blir vel nøyaktig helt ekvivalent?

Nei.

 

Og forskjellen ligger i hva da?

 

Selve spørsmålet ditt bygger på feil forutsetninger for det går ikke an å programmere ikke-oo i Java. Dermed kan det heller ikke være ekvivalent med noe som helst. Objektfunksjonaliteten til object pascal er "usynlig" inntil man bruker den. Et object pascal-program uten objekter er et gyldig pascal-program. Mens i Java er man tvunget til å bruke oo selv til trivielle programmer som Hello World og strengmanipulering. Sammenlign noen snutter (forumet ødelegger dessverre formateringen):

 

begin
writeln('Hello World');
public static void main(String args[])
{
System.out.println("Hello World!");

 


var
string1, string2: string;
begin
string1 := "John Smith";
string2 := "John Doe";
if string1 = string2 then
{
String string1 = new String("John Smith");
String string2 = new String("John Doe");
if (string1.equals(string2)) {
Hvordan forklarer du "String string1 = new String("John Smith");" til en nybegynner? Du kan ikke.

 

Og hvordan forklarer du hvorfor man kan sammenligne int med == men må bruke equals på strenger, selv om man ikke får syntax error på ==? Du kan ikke. Ingen nybegynner i verden forstår det.

 

Om en nybegynner vet at det finnes et språk der programmet begynner ved begin, hvordan gir du en god forklaring på at programmet i Java må starte ved monstrumet "public static void main(String args[])"? Du kan bare ikke.

Lenke til kommentar

 

Hvordan forklarer du "String string1 = new String("John Smith");" til en nybegynner? Du kan ikke.

 

String navn = "Espen Askeladd";

... hvis du absolutt vil. Men ja, du slipper ikke 100% unna OO i Java. Det har vi jo fastslått for lenge siden.

String fornavn = "Espen";
String etternavn = "Askeladd";
String greeting = "Hei " + fornavn + " " + etternavn;
println(greeting);

Jeg tror dette funker finfint i en læresituasjon. Det er som sagt andre sider enn de som trekkes fram her som kan gjøre Java litt hårete. Men absolutt klinisk fravær av OO er ikke noe krav for at man skal kunne lære seg et språk. Java's String er enkel nok til at den kan brukes av nybegynnere, og etterhvert bør man vel vurdere å lære seg OO uansett. Hvis det mot formodning *ikke* skulle være planen, ja da er Java et dårlig utgangspunkt.

Lenke til kommentar

Du kan fint skrive ikke-OO-kode i Java.

 

Det står og faller litt på hva man mener med ikke-OO-kode virker det som. Det er intet påbud om å benytte seg av String, f.eks. Skal man benytte seg av runtime bibliotekene til Java blir man eksponert for OO.

 

Det er ikke noe mål i seg selv å unngå å lære OO. Men det kan være et mål å unngå det samtidig som man skal tilegne seg helt basale konstruksjoner som løkkeoperasjoner og lignende. Og det kan man i tilstrekkelig grad i Java.

Endret av quantum
Lenke til kommentar

Det er ikke noe mål i seg selv å unngå å lære OO. Men det kan være et mål å unngå det samtidig som man skal tilegne seg helt basale konstruksjoner som løkkeoperasjoner og lignende.

Riktig. Nå er jo pascal utdatert, så det er ikke et relevant alternativ på universiteter i den virkelige verden. Men object pascal var utmerket for å lære seg ting gradvis.

 

Objekt-orientert programmering:

- Lær først banale ting som variabler, skrive og lese tekst fra terminal.

- Lær løkker, arrays, etc.

- Lær record

- Lær unit (gjenbruk, abstrahering, enkapsulering)

- Lær OO (class).

Legg merke til at man kan lære record (=struct) og unit (=enkapsulering og gjenbruk) separat før man binder de to konseptene sammen til full OO med arv. Genialt. Ikke bare har man lært OO, men man har lært det på en sånn måte at man forstår prinsippene bak hvorfor det er smart.

 

Pekere:

- Lær bruk av pass-by-value (vanlige prosedyrer)

- Lær bruk av pass-by-reference (var og out)

- Lær procedural types (peker til prosedyre)

- Lær bruk av pekere (^)

Legg merke til at man kan lære forskjellen på pass-by-value og pass-by-reference før man lærer pekere. Ettersom var er lett og forstå og pekere er ganske lett å forstå ut i fra forståelsen av var har man plutselig lært det "vanskelige" temaet pekere på en gradvis måte.

Lenke til kommentar

 

Nå ble de jo påstått at det var nett programmer som gjaldt , alt det andre kunne man bare glemme , da er det jo lit merkelig at du påstår at man ikke har bruk for nettforbindelsen hvis det er nettop det som gjør at man får eksperimentert

 

 

Det virker som du blander kortene ekstra godt i dag?

 

Når man er helt, helt i startfasen og skal lære basale språkkonstuksjoner som løkker og så videre har man ingen nytte av nettforbindelse og det man er i stand til å lage har ingen nytteverdi utover egen læring.

 

Når man kommer litt lenger er man i stand til å lage små programmer som kan ha en viss nytteverdi. La oss bruke konvertering mellom ulike måleenheter som eksempel. Alle har bruk for slik konvertering fra tid til annen, og jeg løser mitt behov ved å finne første og beste nettapplikasjon som gjør dette via google, og vips har en eller annens hobby/læreprosjekt fått litt nytteverdi. Dersom en tilsvarende "tykk" enhetskalkulator i det heletatt hadde vært tilgjengelig for nedlasting, ville de færreste ta seg bryet med nedlasting og installasjon for en så enkel applikasjon. (Medmindre vi er på mobilplattform da, da er plutselig alt snudd på hodet og det som kunne vært løst som en enkel webapp skal for enhver pris være en app som lastes ned og installeres på telefonen isteden... :o)

 

Men når man er i stand til å lage en slik enhetskalkulator, uansett på hvilken plattform, er man vel over den første terskelen og litt forbi det nivået vi snakker om, hvor man (angivelig) kan bli forvirret av at det suser noen objekter rundt ørene mens man strever med å forstå if og while & co.

Endret av quantum
Lenke til kommentar

 

 

Nå ble de jo påstått at det var nett programmer som gjaldt , alt det andre kunne man bare glemme , da er det jo lit merkelig at du påstår at man ikke har bruk for nettforbindelsen hvis det er nettop det som gjør at man får eksperimentert

 

 

Det virker som du blander kortene ekstra godt i dag?

 

Når man er helt, helt i startfasen og skal lære basale språkkonstuksjoner som løkker og så videre har man ingen nytte av nettforbindelse og det man er i stand til å lage har ingen nytteverdi utover egen læring.

 

Når man kommer litt lenger er man i stand til å lage små programmer som kan ha en viss nytteverdi. La oss bruke konvertering mellom ulike måleenheter som eksempel. Alle har bruk for slik konvertering fra tid til annen, og jeg løser mitt behov ved å finne første og beste nettapplikasjon som gjør dette via google, og vips har en eller annens hobby/læreprosjekt fått litt nytteverdi. Dersom en tilsvarende "tykk" enhetskalkulator i det heletatt hadde vært tilgjengelig for nedlasting, ville de færreste ta seg bryet med nedlasting og installasjon for en så enkel applikasjon. (Medmindre vi er på mobilplattform da, da er plutselig alt snudd på hodet og det som kunne vært løst som en enkel webapp skal for enhver pris være en app som lastes ned og installeres på telefonen isteden... :o)

 

jeg har ikke blandet noe , du må følge lit bedre med,

 

klarer man seg helt alene når man skal programmere så trenger man selv sagt ikke nettforbindelsen .

derimot når man søker hjelp så er det nesten alfa omega å få hurtige svar på hvorfor dette ikke virker

 

eller hva med å søke opp elle eksamplene man finner på nettet som man bruker som utgangspunkt ?

hva med ekstra informasjon ut over det programgrines pakken gir ?

 

har man da ikke bruk for Internett i startfasen ?

Lenke til kommentar

@elgen

 

Selvfølgelig har du anledning til - og god bruk for - å dra nytte av nettressurser i læringsprosessen selv om du ikke lager en nettbasert applikasjon som læringsprosjekt. Litt på samme måte som du har nytte av å lese bøker selv om du ikke prøver å lære deg programmering ved å implementere et typesettingssystem.

 

Hvor tar du det fra, det hele?

Endret av quantum
Lenke til kommentar

Å delta i en tråd med elgen er som å skrive PHP. Det krever mye disiplin, er vanvittig frustrerende og det kommer aldri noe godt ut av det.

 

Er det ikke slik programgenereringen fungerer ? ,- at man må gjøre det strukturert

 

Nå ser jeg saken fra flere vinker , så det er nok derfor der hele tiden er i konflikt med meg

 

før i tiden var man ikke så avhengig av brukergrensesnitt som man er i dag .

Det er også derfor jeg menr at man bør ta det med når man lager programmer i dag

 

Skal man teste en funksjon så er det ikke verre an at man plaserer en knapp og et felt på en form

man klikker så på knappen for utføre noe og så kan man plaserer resultatet i feltet

 

skulle man gjøre det på den gamle måten så må man kjøre programmet som et konsol

noe som har en del begrensninger som gjør at dette kun funger for de aller aller enkleste programmene

 

Dette funger da bare den første uken

Lenke til kommentar

 

Skal man teste en funksjon så er det ikke verre an at man plaserer en knapp og et felt på en form

man klikker så på knappen for utføre noe og så kan man plaserer resultatet i feltet

 

 

Hm, hvordan blir dette når man skal teste tusenvis av funksjoner montro ...

Lenke til kommentar

 

 

Skal man teste en funksjon så er det ikke verre an at man plaserer en knapp og et felt på en form

man klikker så på knappen for utføre noe og så kan man plaserer resultatet i feltet

 

 

Hm, hvordan blir dette når man skal teste tusenvis av funksjoner montro ...

 

da lager man seg en liste med valg .

Så må programmet samkjøres med disse valgene

alternativ 1 i listen blir da selvsagt funksjon nr 1

alternativ 20 blir da den 20 ende funksjonen man tester

 

alternativt så kan man ha flere knapper som utfører hver sin funksjon

 

tusenvis av funksjoner blir uansett mye å holde styr på

Lenke til kommentar

Ja det er mye å holde styr på, mange knapper å trykke på, det ... Som oftest finner man seg da andre tilnærminger enn "knappe-metoden.".

 

Til testing benytter man seg ofte av testrammeverk, og man skriver testene som programmer som kan kjøres automatisk. Det er altfor omstendelig å holde styr på manuelt, som du skriver, og altfor viktig til å miste kontrollen over.

 

Brukergrensesnitt er - også som du skriver - viktig i dag, både muligheten og kompleksiteten er stor. Når man er helt i startfasen kan det være greit å bare konsentrere seg om å lære helt basale konstruksjoner, og vente med gui. Dog, hvis verktøyet er nybegynnervennlig nok kan det fungere fint å teste ut basale språkkonstruksjoner i event-handleren til en knapp, det trenger tross alt ikke være så vanskelig å sette opp. Men det er da fortsatt grunnleggende språkkonstruksjoner man konsentrerer seg om og ikke gui-programmering.

 

Problemet er som oftest at utviklingsverktøy som er tilstrekkelig nybegynnervennlig ofte har begrensninger som gjør dem uegnet i større og mer avanserte prosjekter.

Lenke til kommentar

når jeg sier det på den måten som jeg har gjort så er det fordi jeg menr at det er den beste måten man får teste ut funksjoner på med objtet orienterte visuelle verktøy

 

Den enste koden man faktisk legger inn er den funksjonen og de nødvendige parametrene den trenger

samt at man tilegner et en label elle felt dataresurs av testen

 

all annen kode tar editoren seg av som f.eks handlingen til knappen

 

nå kunne det virke som det vil være enklere å kjøre det direkte på en skjerm men den da må man aktivere konsollmodus .

noe som kan være ende mer kompliser å styre i mange tilfeller

 

 

mange av verktøyene er laget for at man skal kjøre alt i et vindu eller dialog boks

Lenke til kommentar

Men det er ikke sikkert objektorienterte visuelle verktøy er den beste måten å teste funksjoner på... Det kommer jo også an på hvaslags testing vi snakker om, har vi sett.

 

Det blir en personlig preferanse om man foretrekker shell eller gui. Det er vanskelig å komme noen vei med programmering om man ikke behersker shellet, men det er ikke noe absolutt krav for å komme igang, og om man prøver å få grep på både shell og basale språkkonstruksjoner på en gang gjør man det kanskje unødvendig vanskelig for seg selv.

Lenke til kommentar

Hva man foretrekker er nå en ting

En annen ting er hva man har muligheter til og hva som er eklest

 

Da kan man også sprøere seg om man foretrekker trykke på en tast eller knapp for å utføre en test kommando.

 

foretrekke man noe som raser nedover skjerm for så stoppe i iste liten slik det er med de fleste konsoll / shell medusene eller foretrekker man noe som i hovedsak står i ro på skjermen , da bare nødvendig informasjon endres ?

 

bruker man windows som os så er ihvertfall shellet lite egnet til særlig mye annet en de simpleste testene

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å
×
×
  • Opprett ny...