-
1. Data: 2011-05-13 07:52:39
Temat: Szukam jezyka
Od: "Ireneusz Szpilewski" <i...@s...opole.pl>
Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie zwyklymi
zdaniami co sie dzieje w programie z przedmiotami?
np. majac deklaracje
thing kamien
{
// zbiór cech kamienia
}
thing pilka
{
// zbior cech pilki
}
thing powietrze
{
// zbior cech powietrza
}
event (kamien K) zderza sie w (powietrze Po) z (Pilka Pi)
{
// zmien cechy kamienia K
// zmien cechy pilki Pi
// zmien cechy powietrza Po (fala dzwiekowa)
}
mozemy sobie potem spokojnie napisac
kamien Kamyczek
pilka Moja_pilka
powietrze Powietrze
Kamyczek zderza sie w Powietrze z Moja_pilka
Taki kompilator bylby chyba bardzo prosty (analizator makr w sumie), bo
zdarzeniami elementarnymi mogły by byc po prostu rozkazy procesora, a
przedmiotami elementarnymi komorki pamieci i rejestry procesora (copy byte
at Address to register a), ale to tylko taka dygresja.
Irek
-
2. Data: 2011-05-13 08:03:41
Temat: Re: Szukam jezyka
Od: Sławomir Szczyrba <c...@o...the.night>
Ireneusz Szpilewski! Cssy... Cssy ja moge s tobą pogadać?
> Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie zwyklymi
> zdaniami co sie dzieje w programie z przedmiotami?
>
Trochę pasuje tu Prolog :)
Sławek
--
________ Chowam kielich do plecaka i szybkim krokiem wychodzę ze świątyni.
_/ __/ __/ (ostatnie słowa gracza RPG)
\__ \__ \___________________________________________________
____________
/___/___/ Sławomir Szczyrba steev/AT/hot\dot\pl
-
3. Data: 2011-05-13 08:24:17
Temat: Re: Szukam jezyka
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-05-13 09:52, Ireneusz Szpilewski pisze:
> Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie zwyklymi
> zdaniami co sie dzieje w programie z przedmiotami?
1.
Mi idea kojarzy się z DSL (Domain Specyfic Languages). Pewna ilość
takich języków jest budowana na Groovy'm (a Groovy jest na JVM)
Szukaj -> groovy dsl
Np są przykłady:
time = 16.h + 32.min
na gruncie kompilowanych, od strony formalnej C++ jest przygotowany do
takiej zabawy, w sensie forsowanie operatorów, operator () * -> itd
Teoretycznie BY TO BYŁO #include jakiejś rodziny klas i kompilowanie
kompilatorem C++. To ma szanse chodzić, ale w razie błędu mam pewność,
komunikaty nieczytelne dla kogokolwiek poniżej dobrego C++ programersa.
2.
Ja źle patrzę (jako jednak zawodowy programista) na naginanie syntaxu w
skrajny sposób, pod użytkownika. Komplikuje to parser, zwiększa ryzyko
błędów w parserze i u użytkownika. Przykład z SQL:
select * from Tab as t
select * Form Tab t
są obie dopuszczalne z 'as' i bez.
Ocenę o ryzyku potwierdza mi np highlighter z MS-SQL Management, który
czasem wykłada się na legalnych kwerendach.
To "już było" w Cocolach, PL/1 itp, i ostatecznie nic dobrego tym
językom nie przyniosło. Uważam, że dla jego dobra, użytkownika języka
trzeba przyzwyczaić do minimum wymogów formalnych
-
4. Data: 2011-05-13 09:39:05
Temat: Re: Szukam jezyka
Od: Andrzej Jarzabek <a...@g...com>
On May 13, 9:03 am, Sławomir Szczyrba <c...@o...the.night> wrote:
> Ireneusz Szpilewski! Cssy... Cssy ja moge s tobą pogadać?> Czy jest taki jezyk
programowania, w ktorym po prostu opisuje sie zwyklymi
> > zdaniami co sie dzieje w programie z przedmiotami?
>
> Trochę pasuje tu Prolog :)
racja(ty).
używa(X,Y) :- każdy(x), słowo(Y), takie_jak(Y, ':-').
-
5. Data: 2011-05-13 10:14:55
Temat: Re: Szukam jezyka
Od: "Ireneusz Szpilewski" <i...@s...opole.pl>
Użytkownik "Jacek Czerwinski" <...@...z.pl> napisał w wiadomości
news:iqipri$efe$1@news.onet.pl...
>W dniu 2011-05-13 09:52, Ireneusz Szpilewski pisze:
>> Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie
>> zwyklymi
>> zdaniami co sie dzieje w programie z przedmiotami?
>
> Ja źle patrzę (jako jednak zawodowy programista) na naginanie syntaxu w
> skrajny sposób, pod użytkownika. Komplikuje to parser, zwiększa ryzyko
> błędów w parserze i u użytkownika. Przykład z SQL:
Mnie chodzi w sumie o banalny jezyk typu C czy Pascal + przeciazenie funkcji
wzgledem typow argumentow. Postulowane przeze mnie
event (kamien K) zderza sie w (powietrze Po) z (pilka Pi)
{
}
to po prostu odchudzone i przeciazone typami argumentow
void T_zderza_sie_w_T_z_T(struct kamien* K, struct powietrze* Po, struct
pilka* Pi)
{
}
Ja po prostu zamiast pisac
T_zderza_sie_w_T_z_T(&kamyczek, &powietrze, &pilka)
wolałbym jednak:
Kamyczek zderza sie w Powietrze z Pilka
przy czym "przedmioty" T odróżniam tym, że zaczynają się zawsze z dużej
litery.
To jakby uogólnienie sztuczki z C++:
obiekt.metoda(argument) == metoda(&obiekt, argument)
> select * from Tab as t
> select * Form Tab t
>
> są obie dopuszczalne z 'as' i bez.
Ale to programista sam definiuje skladnie zdania, tak jak sam wymysla nazwe
funkcji w C czy C++.
> Ocenę o ryzyku potwierdza mi np highlighter z MS-SQL Management, który
> czasem wykłada się na legalnych kwerendach.
Ale ja tu nie widze ryzyka. Przedmioty wykrywane sa przez duza litere,
reszta slow i znakow tworzy przeciazona ze wzgledu na typy "przedmiotow"
nazwe funkcji/eventu, ktory po prostu sie wywoluje.
Irek
-
6. Data: 2011-05-13 11:06:55
Temat: Re: Szukam jezyka
Od: Andrzej Jarzabek <a...@g...com>
On May 13, 9:24 am, Jacek Czerwinski <x...@...z.pl> wrote:
>
> na gruncie kompilowanych, od strony formalnej C++ jest przygotowany do
> takiej zabawy, w sensie forsowanie operatorów, operator () * -> itd
Jednak składnia nie pozwala na przedefiniowanie senamtyki sekwencji
oddzielonych spacjami. Trzebaby co najmniej używac jakiegoś operatora,
więc mogłoby to ewentualnie wyglądać tak:
Kamyczek + zderza + sie + w + Powietrze + z + Moja_pilka;
NIe ma też żadnego sensownego pattern matchingu, więc definicje takiej
operacji byłyby dosyć rzeźnickie.
> 2.
> Ja źle patrzę (jako jednak zawodowy programista) na naginanie syntaxu w
> skrajny sposób, pod użytkownika. Komplikuje to parser, zwiększa ryzyko
> błędów w parserze i u użytkownika. Przykład z SQL:
> select * from Tab as t
> select * Form Tab t
>
> są obie dopuszczalne z 'as' i bez.
> Ocenę o ryzyku potwierdza mi np highlighter z MS-SQL Management, który
> czasem wykłada się na legalnych kwerendach.
>
> To "już było" w Cocolach, PL/1 itp, i ostatecznie nic dobrego tym
> językom nie przyniosło. Uważam, że dla jego dobra, użytkownika języka
> trzeba przyzwyczaić do minimum wymogów formalnych
Z drugiej strony wydaje mi się, że składnia c++ z konstrukcjami typu a
b (*c) (d)->e jest też mocno problematyczna.
Do języka z dużą (i rosnącą) ilością features jak C++ powinna być
jednak bardziej czytelna składnia, typu właśnie
define variable x of type int;
define function foo (p1 of type int, p2 of type string) of type float
...
end define
itd.
Co do tego, o czym pisze OP to jest jakby osobna sprawa (możliwość
rozszerzania składni języka), ale powinno się dać zrobić przy pomocy
jakiegoś sensownego macro engine z pattern matchingiem, nawet bez
restrykcji na duże/małe litery w identyfikatorach, jakąś konstrukcją
typu
define macro (variable K of type kamien) zderza sie w (varbaible Po
of type powietrze) z (variable Pi of type pilka)
...
end macro
Nie widzę tutaj jakiejś zasadniczej trudności (być może z wyjątkiem
czasu kompilacji/parsowania programu z dużą ilością makr).
Ale osobiście nie znam chyba języków, które by takie możliwości miały
(z wyjątkiem powiedzmy pseudo-języków do generacji parserów).
-
7. Data: 2011-05-13 11:11:38
Temat: Re: Szukam jezyka
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-05-13 12:14, Ireneusz Szpilewski pisze:
> Użytkownik "Jacek Czerwinski"<...@...z.pl> napisał w wiadomości
> news:iqipri$efe$1@news.onet.pl...
>> W dniu 2011-05-13 09:52, Ireneusz Szpilewski pisze:
>>> Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie
>>> zwyklymi
>>> zdaniami co sie dzieje w programie z przedmiotami?
>>
>> Ja źle patrzę (jako jednak zawodowy programista) na naginanie syntaxu w
>> skrajny sposób, pod użytkownika. Komplikuje to parser, zwiększa ryzyko
>> błędów w parserze i u użytkownika. Przykład z SQL:
>
> Mnie chodzi w sumie o banalny jezyk typu C czy Pascal + przeciazenie funkcji
> wzgledem typow argumentow. Postulowane przeze mnie
Tu i ówdzie pojawiają się buildery do kwerend SQL (zwykle java)
Sztuczny przykład z fragmentów z głowy:
Engine.selectFrom(t).column(a,b,c,d).where(equal(a,1
))
Na gruncie C++ chyba soci jest dość bliskie tej filozofii. Możesz
popatzreć jak 'pod maską' ma to zrobione.
-
8. Data: 2011-05-13 14:14:37
Temat: Re: Szukam jezyka
Od: A.L. <l...@a...com>
On Fri, 13 May 2011 12:14:55 +0200, "Ireneusz Szpilewski"
<i...@s...opole.pl> wrote:
>
>Użytkownik "Jacek Czerwinski" <...@...z.pl> napisał w wiadomości
>news:iqipri$efe$1@news.onet.pl...
>>W dniu 2011-05-13 09:52, Ireneusz Szpilewski pisze:
>>> Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie
>>> zwyklymi
>>> zdaniami co sie dzieje w programie z przedmiotami?
>>
>> Ja źle patrzę (jako jednak zawodowy programista) na naginanie syntaxu w
>> skrajny sposób, pod użytkownika. Komplikuje to parser, zwiększa ryzyko
>> błędów w parserze i u użytkownika. Przykład z SQL:
>
>Mnie chodzi w sumie o banalny jezyk typu C czy Pascal + przeciazenie funkcji
>wzgledem typow argumentow. Postulowane przeze mnie
>
>event (kamien K) zderza sie w (powietrze Po) z (pilka Pi)
>{
>}
>
>to po prostu odchudzone i przeciazone typami argumentow
>
>void T_zderza_sie_w_T_z_T(struct kamien* K, struct powietrze* Po, struct
>pilka* Pi)
>{
>}
>
>Ja po prostu zamiast pisac
>
>T_zderza_sie_w_T_z_T(&kamyczek, &powietrze, &pilka)
>
>wolałbym jednak:
>
>Kamyczek zderza sie w Powietrze z Pilka
W Prologu to jest dosyc trywialne
A.L.
-
9. Data: 2011-05-13 15:20:24
Temat: Re: Szukam jezyka
Od: " " <f...@g...pl>
Ireneusz Szpilewski <i...@s...opole.pl> napisał
cos takiego jest przeze mnie obmyslane jako
syntaktyczna nakladka nad c czy c2 (o nazwie nctx)
wspominalem miesiac temu
http://niusy.onet.pl/niusy.html?t=artykul&group=pl.c
omp.programming&aid=89702757
nie do konca to obmyslalem jeszcze i tak wogole
to ogarnal mnie nielekki paraliz dolnej czesci
mozgu (tylko osrodek filtrowania spolecznej
brzydoty ciagle mocno mi przetwarza)
> Czy jest taki jezyk programowania, w ktorym po prostu opisuje sie zwyklymi
> zdaniami co sie dzieje w programie z przedmiotami?
>
> np. majac deklaracje
>
> thing kamien
> {
> // zbiór cech kamienia
> }
>
> thing pilka
> {
> // zbior cech pilki
> }
>
> thing powietrze
> {
> // zbior cech powietrza
> }
>
> event (kamien K) zderza sie w (powietrze Po) z (Pilka Pi)
> {
> // zmien cechy kamienia K
> // zmien cechy pilki Pi
> // zmien cechy powietrza Po (fala dzwiekowa)
> }
>
> mozemy sobie potem spokojnie napisac
>
> kamien Kamyczek
> pilka Moja_pilka
> powietrze Powietrze
>
> Kamyczek zderza sie w Powietrze z Moja_pilka
>
> Taki kompilator bylby chyba bardzo prosty (analizator makr w sumie), bo
> zdarzeniami elementarnymi mogły by byc po prostu rozkazy procesora, a
> przedmiotami elementarnymi komorki pamieci i rejestry procesora (copy byte
> at Address to register a), ale to tylko taka dygresja.
>
> Irek
>
>
>
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
10. Data: 2011-05-13 16:03:24
Temat: Re: Szukam jezyka
Od: "Ireneusz Szpilewski" <i...@s...opole.pl>
Użytkownik "A.L." <l...@a...com> napisał w wiadomości
news:h5fqs69ocm48mv25ng55b0vsl1oa726c0h@4ax.com...
>>Ja po prostu zamiast pisac
>>
>>T_zderza_sie_w_T_z_T(&kamyczek, &powietrze, &pilka)
>>
>>wolałbym jednak:
>>
>>Kamyczek zderza sie w Powietrze z Pilka
>
>
> W Prologu to jest dosyc trywialne
Ale w Prologu chyba nie napisze czegoś takiego:
int Liczba
stos_int Moj_stos
bool Pelny
Liczba := 15
wloz Liczba na Moj_stos o ile nie Pelny
if Pelny
{
wyslij "Stos jest pelny" do Moj_adres_email
}
else
{
wyslij 1 do Port_lampki
czekaj 5 sekund
wyslij 0 do Port_lampki
}
Chcialbym miec po prostu taki prosty C, Pascal albo asembler
bez tej sztywnej skladni wywolywania procedur:
nazwa_procedury(argument, argument,...)
i z przeciazaniem wzgledem typu "rzeczownikow"
jak powyzej (wyslij email / wyslij liczbe do portu)
Irek