Hvordan ville du designet fremtidens programmeringsspråk?

Hvis du skulle lagd et nytt og fenomenalt smart multi purpose programmeringsspråk for fremtiden : Åssen hadde du gått frem?

Hvor mye innovasjons potensiale kan det ligge i utviklingen av totalt nye og enormt mye mere velfungerende paradigmer og operativsystemer og arbeidsprosesser og algoritmer for programmering og designing og de kontinuerlige forbedringene av stadig mer raffinerte former for software?

Hva kan bli fremtidens softwareutvikling?
 

adeneo

Medlem
Brainfuck er fremtiden.

Forøvrig så utvikles det stadig nye språk, Google har de siste årene utviklet Dart, som de håpet skulle ta over etter JavaScript. Fail!

Google har også Go, som er et veldig greit språk, som man håpet skulle ta over mer for Python / C++ osv. Fail!

Til syvende og sist så kompileres alt ned til maskinkode, altså nuller og ettall.
Det trengs egentlig ikke bedre språk og paradigmer for å lage mer kompliserte programmer, grunnen til at språk endres eller at nye lages, er for det meste for å flytte ting vekk fra metallet, og gjøre det enklere og mer naturlig for utvikleren å skrive kode.
Datamaskinen vil fremdeles bare ha nullene og ettallene sine, den bryr seg lite.
 
Brainfuck er fremtiden.

Forøvrig så utvikles det stadig nye språk, Google har de siste årene utviklet Dart, som de håpet skulle ta over etter JavaScript. Fail!

Google har også Go, som er et veldig greit språk, som man håpet skulle ta over mer for Python / C++ osv. Fail!

Til syvende og sist så kompileres alt ned til maskinkode, altså nuller og ettall.
Det trengs egentlig ikke bedre språk og paradigmer for å lage mer kompliserte programmer, grunnen til at språk endres eller at nye lages, er for det meste for å flytte ting vekk fra metallet, og gjøre det enklere og mer naturlig for utvikleren å skrive kode.
Datamaskinen vil fremdeles bare ha nullene og ettallene sine, den bryr seg lite.

Du er inne på noe spennende her ja : Maskinkodenivået. Det selve maskinen trenger å få for å kunne tyde de instruksjonene den får fra oss mennesker og overføre disse instruksjonene til konkret handling. Men hvis jeg har skjønt det riktig så er bakgrunnen for at maskinen bare vil ha nuller og ettall noe sånt her :

Det finnes to kategorier som kalles "true" og "false" og avhengig av hvem av disse 2 kategoriene datamaskinen tolker inputen inn i , utløses ulike funksjoner fra maskinen. Men da lurer jeg på : Er det strengt tatt nødvendig å måtte bruke akkurat denne oppdelingen eller kunne også helt andre oppdelinger være mulige?

En annen måte å formulere spørsmålet er sånn her : Er denne tradisjonelle måten å strukturere maskinkoden gjennom nuller og ettall helt nødvendige for at noen som helst instruksjoner effektivt kan sendes til en maskin , eller er denne tradisjonelle oppdelingen mer å regne som en konvensjon?
 

adeneo

Medlem
Ja den er helt nødvendig, en datamaskin er bare en hel haug med brytere, og disse kan enten være av (0) eller på (1).
I gamle dager var det fysiske brytere, store brytere som man kunne slå av og på for hånd.
Så kom transistorer, og man hadde elektroniske brytere.
I dag inneholder prosessoren din trillioner på trillioner med små brytere.

Det finnes ikke bokstaver, tall, tegnsett eller noe annet i en prosessor, bokstaven "a" representeres av en rekke brytere som står på og av, også kalt bits, og i 8 bits så ser "a" slik ut 01100001.

Det samme med tall, tallet "1" er egentlig 00000001, og "2" er 00000010, det er derfor datamaskiner ikke klarer enkle ting som 0.1 * 0.2 (bevis), det finnes ingen tall, de er representert med bitwise instruksjoner som angir om bryterne står på eller av.

Nå er ikke moderne datamaskiner så enkle, dessverre, det er deler av prosessoren som inneholder enkle matematiske formler (ALU) som gjør det mulig å legge samme, trekke fra, dele også videre på bits, samt at bits kan flyttes til og fra forskjellige steder i minnet og en hel del annet.

Å lære seg assembly kan være nyttig, da får man et visst innblikk i hva som virkelig foregår, hva de forskjellige delene av prosessoren og minnet egentlig gjør osv. og assembly er generelt sett så nærme metallet vi kommer uten å skrive inn nuller og ettall direkte, og hvor man stort sett jobber med bytes.
 
Ja den er helt nødvendig, en datamaskin er bare en hel haug med brytere, og disse kan enten være av (0) eller på (1).
I gamle dager var det fysiske brytere, store brytere som man kunne slå av og på for hånd.
Så kom transistorer, og man hadde elektroniske brytere.
I dag inneholder prosessoren din trillioner på trillioner med små brytere.

Det finnes ikke bokstaver, tall, tegnsett eller noe annet i en prosessor, bokstaven "a" representeres av en rekke brytere som står på og av, også kalt bits, og i 8 bits så ser "a" slik ut 01100001.

Det samme med tall, tallet "1" er egentlig 00000001, og "2" er 00000010, det er derfor datamaskiner ikke klarer enkle ting som 0.1 * 0.2 (bevis), det finnes ingen tall, de er representert med bitwise instruksjoner som angir om bryterne står på eller av.

Nå er ikke moderne datamaskiner så enkle, dessverre, det er deler av prosessoren som inneholder enkle matematiske formler (ALU) som gjør det mulig å legge samme, trekke fra, dele også videre på bits, samt at bits kan flyttes til og fra forskjellige steder i minnet og en hel del annet.

Å lære seg assembly kan være nyttig, da får man et visst innblikk i hva som virkelig foregår, hva de forskjellige delene av prosessoren og minnet egentlig gjør osv. og assembly er generelt sett så nærme metallet vi kommer uten å skrive inn nuller og ettall direkte, og hvor man stort sett jobber med bytes.

Interessant. Må det ikke da være ett eller annet slags underliggende rammeverk for hvordan maskinen tolker "1" og "0" som meningsfull informasjon? Om en bryter skrur seg "på" så må det vel være noe som definerer denne tilstanden som vi kaller å være "på?" Jeg mener : Hvordan kan en maskin tyde "på" som noe annet enn for eksempel å ta imot input fra et annet nettverk?

Og er det ikke mulig at en helt annen oppdelingen enn denne to-delte kunne være mulig?

Jeg tenker for eksempel på følgende informasjon fra wikipedia :

I elektroniske systemer brukes ofte byte om en samling av biter, opprinnelig av varierende størrelse. I dag er den i praksis alltid åtte. Åtte-bit byte er også kjent som oktetter, mens fire-bit varianten er kjent som en nibble. I noen maskinvare-arkitekturer utgjør 16 biter et word, mens 32 biter et double word (dword).

Står det ikke her at man i praksis ikke har hatt annen erfaring enn med åtte og fire - bit? Da høres det jo litt random ut at det til nå alltid har vært gjort med akkurat denne oppdelingen , skjønner du hva jeg mener? Kunne man kanskje laget helt andre typer datamaskiner også , med andre basisgeometriske strukturer som operativsystemet er bygget på , og som kunne definert informasjon på andre måter enn den modellen som har blitt brukt i datamaskinene til nå?
 

adeneo

Medlem
Det kan man helt sikkert, men til syvende og sist så koker jo alt ned til enkle brytere som er enten av eller på, det er jo slik alle transistorer fungerer.

Prosessorer, uansett hvilke produkter de benyttes i, er bygget av mange "transistorer", eller brytere, trillioner av brytere inne i en brikke på størrelse med en femtiøring.

Det er i grunn ganske fantastisk når man ser på gamle datamaskiner helt tilbake til Alan Turing sin tid, som var bygget av elektromekaniske brytere i stedet, og var store som hus og tilsvarte ikke en gang en kalkulator til 19.90 i dag.

En byte, altså enkelt forklart de tegnene du ser på skjermen din, med noen unntak, "ø", "æ", "å" består for eksempel av to byte, er åtte bits fordi det normalt ikke trengs mer enn 8 "brytere" for å dekke alle kombinasjonene av bokstaver og tall. Det er derfor ikke noe behov for å utvide dette nevneverdig.

Dersom du tror du kan komme opp med en bedre ide, kjør på.
 
Topp