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.
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 }; }
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.
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.
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.
PetriKeckman kirjoitti:
(24.07.2022 16:51:23): ”– –” Miksi kehittää syntaksiltaan 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.
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ä.
Ohkohan oman kielen tekeminen kauhean vaikeaa? Olisihan se hienoa, jos esim. Java korvaantuisi vaikka TaSman-kielellä. Siinä voisi olla /|\ -merkeillä omat erityispiirteensä.
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.
Ed Davis tutorials -haulla löytyi vain kitaratunteja. Miten pääsen alkuun?
TapaniS kirjoitti:
Ed Davis tutorials -haulla löytyi vain kitaratunteja. Miten pääsen alkuun?
Kokeile tätä alkuun pääsemiseen.
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?????
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/
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.
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.