NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:18.11.2014 15:40

Ahoj, jak jsem psal dříve, vytvářím programovací jazyk, základy mám hotové, ale nemám pro něj jméno. Všechna, která jsem vymyslel, buď už existují, nebo jsou existujícím hodně podobná.. Nějaké nápady na jméno? :)

Odpovědět
18.11.2014 15:40
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
Odpovídá na Neaktivní uživatel
vitamin:18.11.2014 15:48

C@ (jazyov zacinajucich na C nie je nikdy dost:) )

Editováno 18.11.2014 15:48
 
Nahoru Odpovědět
18.11.2014 15:48
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:18.11.2014 16:12

Detaily? Interpretovaný, kompilovaný nebo Virt. Stroj? Z jakého jazyka vychází? Pokud kompilovaný, do kterého jazyka se kompiluje?

Nahoru Odpovědět
18.11.2014 16:12
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:18.11.2014 18:05

Kompilovaný, vychází z Javy a Ruby, kompiluje se do Javy, kolekce, objektový, lambda výrazy..

Nahoru Odpovědět
18.11.2014 18:05
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
Odpovídá na Neaktivní uživatel
vitamin:18.11.2014 18:48

Kompilujes to do java bytecodu alebo do javy ktoru nasledne kompiluje java kompilatorom?

 
Nahoru Odpovědět
18.11.2014 18:48
Avatar
Nahoru Odpovědět
18.11.2014 18:56
Neaktivní uživatelský účet
Avatar
Odpovídá na vitamin
Neaktivní uživatel:18.11.2014 19:07

Zatím se kompiluje do zdroje Javy, ale chci to udělat později přímo do bytecodu.

Nahoru Odpovědět
18.11.2014 19:07
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:18.11.2014 19:12

Mimochodem, nechtěl by jsi pomoc při vývoji?

Nahoru Odpovědět
18.11.2014 19:12
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
Odpovídá na Neaktivní uživatel
vitamin:18.11.2014 19:13

Vystup tvojho prekladaca je korektny java kod alebo nehavas osetrovanie chyb na java kompilatore?

 
Nahoru Odpovědět
18.11.2014 19:13
Avatar
Odpovídá na vitamin
Neaktivní uživatel:18.11.2014 19:27

Chyby nechávám na Javě

Nahoru Odpovědět
18.11.2014 19:27
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:18.11.2014 19:28

Dík, zvládnu to sám, ale pokud s něčím budu potřebovat pomoct, zeptám se tě ;)

Nahoru Odpovědět
18.11.2014 19:28
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
Odpovídá na Neaktivní uživatel
vitamin:18.11.2014 19:32

Nespravyl si nahodou len preprocessor?

Editováno 18.11.2014 19:32
 
Nahoru Odpovědět
18.11.2014 19:32
Avatar
Odpovídá na vitamin
Neaktivní uživatel:18.11.2014 19:43

No... , když se nad tím teď zamyslím, tak asi jo :) Ale mám tam i runtime interpretaci a vlastnosti, které do Javy nejdou převést..

Nahoru Odpovědět
18.11.2014 19:43
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
Odpovídá na Neaktivní uživatel
vitamin:18.11.2014 19:46

Ako tam mozes mat interpreter ked testovanie chyb nehavas na jave? Ako tam mozes mat vlastnosti ktore nejdu do javy previest ked to kompilujes do javy? :)

 
Nahoru Odpovědět
18.11.2014 19:46
Avatar
Odpovídá na vitamin
Neaktivní uživatel:18.11.2014 19:51

Mám tam dva režimy:

  1. Kompilace - Uživatel nadefinuje vstupní soubor, a ten se přeloží.
  2. Typing mode - Uživatel zadává příkazy (jako v shellu) a program je vykonává (potom jdou uložit do souboru)

Je to složité, ale funguje to :D

Nahoru Odpovědět
18.11.2014 19:51
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:18.11.2014 19:52

A myslím, že tu jde o jméno :) ne princip překladu, kompilaci, interpretace...

Nahoru Odpovědět
18.11.2014 19:52
Neaktivní uživatelský účet
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:17.7.2015 9:08

Jakou má syntaxi podle toho by se dal vymyslet název...

Nahoru Odpovědět
17.7.2015 9:08
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na Richard H.
Neaktivní uživatel:17.7.2015 14:32

Jméno už jsem vymyslel, syntaxi má "plochou" (co nejméně závorek) -> Flat.

Nahoru Odpovědět
17.7.2015 14:32
Neaktivní uživatelský účet
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:18.7.2015 8:36

takze příkaz if se tam (podle mého odhadu) dělá

 if a == "ahoj" then

end

narozníl od javy kde je to

if(a.equals("ahoj)){

}

chapu to dobře

Nahoru Odpovědět
18.7.2015 8:36
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Odpovídá na Richard H.
Richard H.:18.7.2015 8:39

takze tvuj jazyk se může jmenovat Flat
Docela mě zajímá jaké má další vlastnosti.
Protoze kdyby byl objektový tak by se mohl jmenovat fol(flat objectiv language)

Nahoru Odpovědět
18.7.2015 8:39
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Honza Bittner:18.7.2015 8:51

A proč né třeba rose, vycházející z tvého příjmení? :P

Pak to prezentovat na doméně např. rose-lang.com ... :)

Nahoru Odpovědět
18.7.2015 8:51
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Richard H.
Neaktivní uživatel:18.7.2015 9:42

Jo, jazyk se může jmenovat Flat. Jeho hlavní odlišností bude hlavně volání (a definování) funkcí:

# Definice
say: what as: who; do
    print: who +  ' says ' + what
end

# Zavolání
say: 'Hello!' as: 'World'
Nahoru Odpovědět
18.7.2015 9:42
Neaktivní uživatelský účet
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:18.7.2015 9:50

Přemýšlím také o tvorbě vlastního jazyka a napadla mě podobná syntaxe

Nahoru Odpovědět
18.7.2015 9:50
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na Honza Bittner
Neaktivní uživatel:18.7.2015 9:51

Jo, to by mohl, vlastně jsem o tom moc nepřemýšlel... Ony obě jména mají své výhody a nevýhody ohledně konfliktů ve vyhledávači: Flat se často zamění s Cb (c-flat, sice neznámý, ale vyhledávač ho hází na první místa). Rose se zase zamění s frameworkem ROSE... Každopádně o tom popřemýšlím ;-)

Nahoru Odpovědět
18.7.2015 9:51
Neaktivní uživatelský účet
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:18.7.2015 9:51

Přesněji že by se jednotlivé příkazy dali oddělit :

Nahoru Odpovědět
18.7.2015 9:51
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Odpovídá na Richard H.
Richard H.:18.7.2015 9:53

No objektový jazyk to není to je jasné fungováním my trochu připomíná lua

Nahoru Odpovědět
18.7.2015 9:53
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:18.7.2015 9:54

Jaký je to typ jazyka.

Nahoru Odpovědět
18.7.2015 9:54
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:18.7.2015 9:55

Hádám to na funkcionální takže by se mohl jmenovat ffl (flat funkcional language)

Nahoru Odpovědět
18.7.2015 9:55
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na Richard H.
Neaktivní uživatel:18.7.2015 9:55

Je to hodně podobné Objective-C. K tomu jazyků, v jakém jazyce ho hodláš programovat? Já ho programuju v Pythonu a vytváří k němu vlastní parkovací knihovnu. Jestli chceš pošlu ti její poslední, ještě nezveřejněnou verzi. ;-) Ale asi ji ještě budu mnohokrát měnit a optimalizovat...

Nahoru Odpovědět
18.7.2015 9:55
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:18.7.2015 10:07

Objekty zde budou, ale nebude to čistě objektový jazyk, bude možná trochu funkcionální, chtěl bych tam mít prototypy nebo něco na ten způsob, přemýšlel jsem, že by se atributy objektů ukládaly do hashe (dictionary) -> dají se snadno přidávat/mazat/mě­nit. Bude to jazyk dynamický -> proměnné jsou jména ukazující na hodnotu -> hodnota se nemění, mění se pouze informace, kam ukazuje "jméno". Taky jsem tam chtěl zakomponovat něco jako "odhadovač" výpočtů a ten, když výpočet selže (ComputeError, například při výpočtu Googolplexu), dosadí svou "odhadnutou" hodnotu místo výsledků.

Nahoru Odpovědět
18.7.2015 10:07
Neaktivní uživatelský účet
Avatar
Nahoru Odpovědět
18.7.2015 10:08
Neaktivní uživatelský účet
Avatar
Richard H.
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Richard H.:18.7.2015 10:46

No umím programovat v Javě a v C#
Zatím ho plánuju programovat v C#

Nahoru Odpovědět
18.7.2015 10:46
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:18.7.2015 10:47

A bude objektový mám rád OOP.

Nahoru Odpovědět
18.7.2015 10:47
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Richard H.:18.7.2015 10:57

Zajímavý typ Jazyka.

Nahoru Odpovědět
18.7.2015 10:57
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:18.7.2015 12:58

Jak rozpoznáš konstrukce?

# Definice
say: what as: who; do
    print: who +  ' says ' + what
end

# Zavolání
say: what as: who
 
Nahoru Odpovědět
18.7.2015 12:58
Avatar
Neaktivní uživatel:19.7.2015 9:22

Trochu nechápu jak to myslíš. Mám tu tyto konstrukce:

# Try-Catch-Else(pokud Try "vyjde")
try
    ...
  [fail [TypChyby do]
    ...
  [else
    ...]]
  end

# If: pokud platí, Unless: pokud neplatí
[if | unless] ... do
    ...
 [ elif ... do
    ...
  [else
    ...]]
  end

# Switch
match ... do
    case ... {
        ...
    }

    [else
        ...
    [end]]
  end

# While: dokud podmínka platí, Until: dokud podmínka neplatí
[while | until] ... do
    ...
[elif ... do
    ...
[else
    ...]]
end

# While s pozdní podmínkou
do
    ...
while ... [elif ... do
    ...
[else
    ...]]
end

# Iterátor
for ... in ... do
    ...
[elif ... do
    ...
[else
    ...]]
end

# Přiřazení proměnné
a = 1 + 2 - 3 * 4 / 5 ** 6 // 7

# "Hození" chyby
raise Exception

# Spuštění kódu v textu
do 'print: \'Hello world!\''
Nahoru Odpovědět
19.7.2015 9:22
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:19.7.2015 12:31

Zajímalo mě, jak rozpoznáš volání a definici funkce.

 
Nahoru Odpovědět
19.7.2015 12:31
Avatar
Neaktivní uživatel:19.7.2015 12:37

Volání funkce je několikrát se opakující symbol, za kterým následuje dvojtečka a výraz. Pokud se ve výrazu vyskytuje (na konci výrazu) volání funkce, musí být ukončet středníkem (aby se argumenty jednotlivých funkcí rozlišily). Definice funkce má hlavičku s již zmíněnou gramatikou s tím rozdílem, že místo výrazů (sčítání, volání funkcí, podmínky), jsou zde POUZE identifikátory (vnitřní jména argumentů), a celá hlavička je zakončena středníkem. Poté následuje blok "údajů" (statements), který zase může obsahovat definice funkcí, a je uvozen klíčovým slovem "do" a ukončen slovem "end".

Nahoru Odpovědět
19.7.2015 12:37
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:19.7.2015 14:21

Co se vytiskne v tomhle případě?

say: word to: receiver; do
  return '->say_to:' + receiver + word
end

say: word; do
  return '->say:' + word
end

to: receiver; do
  return '->to:' + receiver
end

# volani
print: say: say: say: 'a'; to: to: 'b'; + '4'
 
Nahoru Odpovědět
19.7.2015 14:21
Avatar
Neaktivní uživatel:19.7.2015 14:42

Vyskytne se syntaktická chyba, protože za jménem argumentu musí následovat hodnota:

print: say: say: say: 'a'; to: to: 'b'; + '4'
                              ^
Nahoru Odpovědět
19.7.2015 14:42
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:19.7.2015 14:48

To je přece volání funkce: [to: 'b']

EDIT:
A nebo je to možná volání funkce [to: 'b'; + '4'], nejsem si jistý, že jsem úplně pochopil tvoji definici.

Editováno 19.7.2015 14:49
 
Nahoru Odpovědět
19.7.2015 14:48
Avatar
Neaktivní uživatel:19.7.2015 14:55

Dobře, v tom případě se vyskytne syntaktická chyba na konci řádku, poněvadž všechny funkce volané uvnitř argumentů musí končit středníkem a dva zde schází. Pokud by zde byl:

print(say(say(say('a'), to=(to('b')+'4'))))

V mém AST je to reprezentováno takto:

([{'call': {'args': ({'name': 'print'}, {'value': {'call': {'args': ({'name': 'say'}, {'value': {'call': {'args': [({'name': 'say'}, {'value': {'call': {'args': ({'name': 'say'}, {'value': {'string': 'a'}})}}}), ({'name': 'to'}, {'value': ({'call': {'args': ({'name': 'to'}, {'value': {'string': 'b'}})}}, '+', {'string': '4'})})]}}})}}})}}], '')
Nahoru Odpovědět
19.7.2015 14:55
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
vitamin:19.7.2015 14:55

Programovanie v tomto jazyku je dostatocny trest za jeho vymyslenie. :)

 
Nahoru Odpovědět
19.7.2015 14:55
Avatar
Neaktivní uživatel:19.7.2015 15:12

Nikdo tě nenutí v něm programovat. ;-) Tato syntaxe má uživatele donuti, aby nevolali brutálně vnořené funkce, a raději si jejich hodnoty ukládali do proměnných. Ještě není dodělaný, ale třeba desktopovou aplikaci si představuju takto:

require: 'app'

# Dědění, třídu od funkce rozpoznám tak, že na prvním místě je metoda @init
App(Application) do
    @init: @window, @ui

    @load; do
        @super.load # Funkce a metody bez argumentů se chovají jako atributy -> při vyhodnocování atribut/metoda mají metody přednost
    end

    @render; do
        @super.render

        @ui.add: Label: 'Hello world!'; id: 'helloLabel'
        @ui.add: Button: 'Click me!'; id: 'clickButton'
    end

    @frame; do
        @super.frame
    end

    @event: e; do
        if e == 'clickButtonClicked' do
            @ui.get: 'helloLabel';.text: 'Clicked!'
        end
    end
end
Nahoru Odpovědět
19.7.2015 15:12
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
mkub:19.7.2015 15:22

poriadne nezrozumitelny jazyk... uz ciste Cecko je ovela zrozumitelnejsie na pochopenie, ba aj assembler sa da skor naucit, nez tento gulas...

 
Nahoru Odpovědět
19.7.2015 15:22
Avatar
Richard H.
Tvůrce
Avatar
Odpovídá na mkub
Richard H.:20.7.2015 16:45

souhlas

Nahoru Odpovědět
20.7.2015 16:45
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Richard H.
Tvůrce
Avatar
Richard H.:20.7.2015 16:53

já bych si to představoval spíš takhle.

window my = new window(true); #visible
 my.add(label:text:"ahoj",variable:myLabel)
  function myLabelAction() ;#nevim jak ve tvém jazyce fungují funkce
   print("hello world");
end function
Nahoru Odpovědět
20.7.2015 16:53
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Neaktivní uživatel:20.7.2015 17:57

Trošku jsem to upravil:

print: (say: (say: (say: 'a') to: (to: 'b' + '4')))

Vnořené funkce jsou uzavřené v závorkách a jména argumentů nejsou oddělena čárkami. Dá se zde také použít nový C-like zápis, v němž už čárky být musí.

Nahoru Odpovědět
20.7.2015 17:57
Neaktivní uživatelský účet
Avatar
vitamin
Člen
Avatar
Odpovídá na Neaktivní uživatel
vitamin:20.7.2015 17:59

Tato syntaxe má uživatele donuti, aby nevolali brutálně vnořené funkce

Mozes dat priklad comu chces zabranit (a ako a preco)?

 
Nahoru Odpovědět
20.7.2015 17:59
Avatar
Odpovídá na vitamin
Neaktivní uživatel:20.7.2015 18:06
print(input("Answer this question: '" + input("Enter a question: ") + "'."))

Jak? Vysvětleno výše.
Proč? Protože s jakoukoli syntaxí je to guláš.

Nahoru Odpovědět
20.7.2015 18:06
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 50 zpráv z 61.