Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Oma ohjelmointikieli (suunnitelutasolla)

Sivun loppuun

koodaaja [22.07.2022 22:41:02]

#

Olen tässä muutaman päivän aikana suunnitellut omaa ohjelmointikieltä (varsin suurella todennäköisyydellä suunnitelmaksi jääkin).

En tarkemmin ala kertomaan kyseisen kielen ominaisuuksia, mutta neljä merkittävää piirrettä ovat hakasulkeiden käyttö kaikkialla myös muuttujissa, kuten esim.

var [ arvo ] tyyppi muuttujan_nimi

Tai toinen erikoispiirre on esimerkiksi ehtolauseissa ehto tulee loppuun eikä tunneta else if-rakennetta

if [ lohko ] then ehto

Kolmantena vielä, että silmukasta poistutaan tavallisesti ehtolauseen kautta (vrt. ikuinen silmukka).

Neljäntenä taulukkoja on kaksi kappaletta vakiomittaisia ja taulukoita, joiden kokoa voidaan muuttaa lisäämällä ja poistamalla alkioita. Taulukot voivat sisältää monentyyppisiä arvoja samanaikaisesti.

Kuvitteellisen kielen nimi on Cogram (Code + program) tai parempi versio Cogus (Cogram + Plus) Kielen standardit ovat vielä kehitteillä ja nimenkin olen vaihtanut muutamaan otteeseen.

vesikuusi [22.07.2022 23:30:01]

#

Onnea. Salaperäisyys sekä hakasulkeiden käyttö kaikkialla ovat ehdottomasti kehittyneen kielen tunnusmerkkejä.

Olisi kyllä hauska kuulla syntaksin lisäksi muista kielen ominaisuuksista.

Esim. itse olen kehittänyt C++ korvaajaksi kielen, joka korjaa kaikki C++ -kielen ongelmat. Erikoispiirteenä avainsana 'fn' funktioiden edessä, ja paluuarvo kirjoitetaan nimittäin funktion signatuurin perään, ja koodin kohdat jotka voivat hajota, merkitään [hurja] merkinnällä.

fn QuarkSpinLock() : Owner<Reference<Vecculi<BigInteger>>>
{
    [hurja] [[ 0xcaccababba ]] |= ( 1<<3 )
    return { 0x71551 };
}

koodaaja [23.07.2022 15:42:35]

#

No esimerkiksi funktio luodaan siten, että hakasulkeiden loppuun laitetaan tieto palautetaanko tietoa, jos ei niin kirjoitetaan no return. Mikäli taas halutaan palauttaa yksi kerrallaan kirjoitetaan return part (vrt. yield)

func at x [
  io [
    "Tulostetaan tämä rivi", type=no_newline
  ] print


  io [
    "Ei rivinvaihtoa"
  ] print

] no return
func at x [
 var [
   x + 10
 ] int x

 var [
   x * 2
 ] int x

] return x

Taulukko järjestetään näin (tässä luvun itseisarvon mukaan)

array [
type=abs
] sort taulukko

Ja sanakirjassa

dict [
[avain;arvo]; [avain;arvo]
] sanakirja


Lisäksi cogus-kirjaston kautta voi esimerkiksi

iter [
taulukko
] x

chararray [
merkkijono
] x

Täytyy tosin varmaan löytää parempi kanava tämän suunnittelemiseen. Ohjelmointiputka tuskin on paras vaihtoehto juuri tähän tarkoitukseen.

Metabolix [23.07.2022 16:11:38]

#

Hienoa, että intoa riittää. Ehkä kannattaisi silti ensin miettiä, mihin tarpeeseen uusi kieli vastaa eli millä tavalla siitä tulisi parempi kuin jokin toinen kieli. Esimerkiksi missä tilanteessa tämä hakasulkujen käyttö tuottaa jotain hyötyä verrattuna jo olemassaoleviin kieliin? Nämä keksimäsi ”ominaisuudet” vaikuttavat olevan aika mielivaltaisia ja viime kädessä merkityksettömiä merkintätapoihin liittyviä eroja.

Voisit purkaa energiaasi paljon kehittävämmin vaikka niin, että kävisit läpi jonkin jo keksityn kielen (kääntäjän tai tulkin) bugilistaa ja koettaisit korjata kyseisiä bugeja. Tai yksinkertaisena harjoitusprojektina voisit toteuttaa kääntäjän tai tulkin jollekin tutulle kielelle tai kielen osalle.

PetriKeckman [24.07.2022 16:51:23]

#

koodaaja kirjoitti:

Olen tässä muutaman päivän aikana suunnitellut omaa ohjelmointikieltä

Miksi kehittää syntaksiltaan erilaisia kieliä, kun niiden semantiikka on sama kuin muiden kielten? Esimerkiksi ehtolause kerrotaan vain eri tavalla kuin muissa kielissä jne...

Ei "eri kieli" ole kielen ulkoasu. Eri kieli merkitsee enemmän kääntäjän tai tulkin tehokkuutta ja enemmän semantiikkaa kuin syntaksia. Ohjelmointikieliinkin saisi tulla pyrkimys ohjelmointikielien Esperantoon ts. yleiskieleen. Kaikissa eri ohjelmointikieleissä ovat kuitenkin lähestulkoon samanlaiset kontrollirakenteet. Miksi ne ilmaistaan joka himputin kielessä eri tavoin? Se vain haittaa uuden kielen oppimista.

jalski [24.07.2022 17:27:41]

#

PetriKeckman kirjoitti:

(24.07.2022 16:51:23): ”– –” Miksi kehittää syntak­siltaan erilaisia kieliä...

Toisaalta useimpien ohjelmointikielien perusteet oppii muutamassa päivässä sille tasolle, että pystyy koodia tuottamaan. Tästä tosin itselläni ehkä ainakin poikkeuksena Rust ja Perl, joiden näkeminenkin saa pään särkemään.

Luettavuuden kannalta PL/I teki aikanaan homman oikein, ei varattuja sanoja ja esimerkiksi operaattoreita tarvittiin yli puolet vähemmän kuin C-kielessä. Ohjelman virhetilanteessakaan ei yleensä debuggeriin tarvitse turvautua kun voi suoraan dumpata ohjelmasta kaiken datan ja debuggaus infon pihalle.

noutti [26.07.2022 15:43:15]

#

lainaus:

Eli tässä topicissa olisi tarkoitus "koodailla" eli tehdä Aku Ankka koodia. Teen nyt selityksen miten systeemi toimii mutta sitä ennen tiedotus HUOM. AA coodaus voi olla hankalaa suosittelen sitä 12 vuotiaille ja ylöspäin. Jos kuitenkin osaat mielestäsi sitä niin mikäs siinä sitten. Tiedoksi vain että AA coodaus on omakeksimäni coodikieli.

Mod. huom: jatkuu muualla netissä.

TapaniS [28.07.2022 17:43:54]

#

Ohkohan oman kielen tekeminen kauhean vaikeaa? Olisihan se hienoa, jos esim. Java korvaantuisi vaikka TaSman-kielellä. Siinä voisi olla /|\ -merkeillä omat erityispiirteensä.

jalski [28.07.2022 18:30:49]

#

TapaniS kirjoitti:

Ohkohan oman kielen tekeminen kauhean vaikeaa? Olisihan se hienoa, jos esim. Java korvaantuisi vaikka TaSman-kielellä. Siinä voisi olla /|\ -merkeillä omat erityispiirteensä.

Yksinkertaisen tulkin kirjoittaminen ei ole kovin vaikeaa. Joskus vuosia sitten kirjoittelin Ed Davis:in tutoriaalin pohjalta Pascal tulkin Component Pascalilla. Löytyypi täältä. Ei kauhean hienoa koodia, koska olin vain pari tuntia ehtinyt käyttää Component Pascalin opetteluun.

TapaniS [29.07.2022 12:40:10]

#

Ed Davis tutorials -haulla löytyi vain kitaratunteja. Miten pääsen alkuun?

jalski [29.07.2022 17:24:45]

#

TapaniS kirjoitti:

Ed Davis tutorials -haulla löytyi vain kitaratunteja. Miten pääsen alkuun?

Kokeile tätä alkuun pääsemiseen.

muuskanuikku [30.07.2022 07:23:53]

#

noutti kirjoitti:

Eli tässä topicissa olisi tarkoitus "koodailla" eli tehdä Aku Ankka koodia. Teen nyt selityksen miten systeemi toimii mutta sitä ennen tiedotus HUOM. AA coodaus voi olla hankalaa suosittelen sitä 12 vuotiaille ja ylöspäin. Jos kuitenkin osaat mielestäsi sitä niin mikäs siinä sitten. Tiedoksi vain että AA coodaus on omakeksimäni coodikieli.

Olin melkein 20 vuotta nuorempi, kun näin tämän viestin jossain teinifoorumilla. Oliko se muka Aku Ankan tilaajapalstalla, Artic.netissä vai Tiltin foorumilla?????

Metabolix [31.07.2022 11:24:21]

#

muuskanuikku kirjoitti:

Olin melkein 20 vuotta nuorempi, kun näin tämän viestin jossain teinifoorumilla. Oliko se muka Aku Ankan tilaajapalstalla, Artic.netissä vai Tiltin foorumilla?????

Ainakin vuodelta 2010 löytyy Aku Ankan keskustelusta: https://www.akuankka.fi/keskustelu/21872/ketju/aa_coodaus_aku_ankka_coodaus_

TapaniS kirjoitti:

Siinä voisi olla /|\ -merkeillä omat erityispiirteensä.

Taitaa olla autoilijan ohjelmointikieli. /|\ voisi olla nopean ajamisen merkki.

koodaaja kirjoitti:

Taulukko järjestetään näin (tässä luvun itseisarvon mukaan)

Tuosta ei käy ilmi, mitä oikeastaan tapahtuu, eli onko kyseessä kielen komento juuri taulukon järjestämiseen (aika rajoittunut idea) vai mahdollisesti esimerkki nimetystä argumentista ja callback-funktiosta (geneerinen ominaisuus)?

Tämä kuvastaa yleisemmin sitä, miten olet käyttänyt kieliä omissa koodeissasi täällä: et käytä juuri mitään järkeviä ohjausrakenteita vaan kopioit peruspalikoita melko lineaariseen muotoon, mahdatko edes kokonaan ymmärtää niissä esiintyviä rakenteita kielen tasolla. Ennen oman kielen kehittämistä olisi syytä osata ainakin paria kieltä erittäin hyvin.

koodaaja [12.09.2022 03:37:48]

#

Palaan Ohjelmointiputkaan aikaisintaan parin kuukauden päästä. Ajattelin harjoitella Pythonin kunnolla siihen mennessä, vaikka pari kuukautta on melko lyhyt aika. Katsotaan, onko siihen mennessä tapahtunut yhtään kehitystä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta