Komentowana treść: Prace nad API2 - nowy język programowania
[#1] Re: Prace nad API2 - nowy język programowania
Fajnie.. tylko po co ?
Cały system leży i czeka (na dobicie ?) a tu jeszcze "nowy język" ?
[#2] Re: Prace nad API2 - nowy język programowania
kurde tak se mysle ze jakby ktos AMOS'a 2 na pincetke chcial napisac, to by dostal z 20 razy wieksze wsparcie.
A tak ledwo 2 Patriotow uzbieralo... szkoda nawet gadac
[#3] Re: Prace nad API2 - nowy język programowania

@MaaG^dA, post #1

Powodów jest kilka, ale wszystkie mają związek z kwestią braku nowego oprogramowania. Po pierwsze C jest trudne dla kogoś, kto zaczyna naukę programowania i chce to robić na Amidze. Mój język jest o wiele prostszy. Nie ma wskaźników i skomplikowanego zapisu typów. Nie potrzeba nawet funkcji main, wystarczy napisać komendę, skompilować i zadziała. Tak jak to widać w przykładzie "Hello, world!". Poza tym, i tu przechodzimy do "po drugie", wszyscy wiemy jak to jest gdy się na Amidze zrobi błąd w programie, cały komputer się zawiesza/restartuje, a my zastanawiamy się gdzie może być problem. W moim języku, poza jednym wyjątkiem, o którym za chwilę, program nie zawiesi komputera, zamiast tego zgłosi błąd i do tego powie, w którym miejscu on jest. Wyjątkiem jest przepełnienie stosu, ale tu też mam pewien pomysł. A po trzecie, i tu bezpośrednio nawiązuję do tego co napisałeś, tak nie ma systemu porządnego, ale gdy się pojawi to nie zaszkodzi mieć na niego gotowe programy.
[#4] Re: Prace nad API2 - nowy język programowania

@selur, post #2

A co rozumiesz przez AMOS2?
[#5] Re: Prace nad API2 - nowy język programowania
W wiadomości o newsie zabrakło informacji, że jest to język przeznaczony dla systemów z rodziny AmigaOS - warto poprawić bo w przeciwnym razie, nie wynika to z tekstu tego newsa ani trochę...
[#6] Re: Prace nad API2 - nowy język programowania
Jak ktoś nie ogarnia pisania w C i nie jest jest się jego nauczyć to ja raczej nie widzę możliwości, żeby tworzył skomplikowane aplikacje w dowolnym innym języku.
[#7] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #6

Bez przesady.

Znam wiele osób co nie studiowało informatyki (ani niczego innego "technicznego" / "inżynierskiego") nauczyło się w miarę Pythona.

Nie przesadzajmy; składnia C czy C++ to momentami instrukcje nisko poziomowe. Ponadto sam kod jest mało czytelny. A na dodatek, nie jest to język do końca przenośny - przenosząc pomiędzy platformami (czy różnymi kompilatorami) zawsze praktycznie, się trzeba babrać w kodzie i ręcznie coś poprawiać, żeby ostatecznie zadziałało.
[#8] Re: Prace nad API2 - nowy język programowania
Piękny przykład radosnej i niczym nieskrępowanej twórczości programisty. Projekt zamiast posuwać się w kierunku osi X, rozlewa się coraz szerzej w osi Y...
[#9] Re: Prace nad API2 - nowy język programowania

@Krashan, post #8

Projekt zamiast posuwać się w kierunku osi X, rozlewa się coraz szerzej w osi Y...

<troll_mode_on>
To i tak dobrze ze nie w osi I.

<troll_mode_off>
[#10] Re: Prace nad API2 - nowy język programowania

@Krashan, post #8

Nie, wszystko idzie zgodnie z planem
Czyli:
* mechanizm tworzenia klas i obiektów binarnych,
* wparcie dla użycia go w C aby móc napisać klasy korzystające z funkcji systemu,
* trochę podstawowych klas aby na nich budować kolejne,
* język wykorzystujący te same mechanizmy klas i obiektów, a upraszczający programowanie,
* reszta klas.
[#11] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #6

Są ludzie, którzy chcą programować, ale nie koniecznie mają wolę/czas/umiejętność opanowania wskaźników i jak im powiesz funkcja zwracająca tablicę wskaźników na funkcje zwracające wskaźniki na struktury o polach ... to odpadną, i dla nich język bez takich konstrukcji to niewątpliwe ułatwienie. Zresztą popatrz na wysyp twórczości w Hollywood.
[#12] Re: Prace nad API2 - nowy język programowania

@smith, post #11

Język C jest prosty.
"W C można pisać bez wskażników ale po co" - ktoś kiedyś powiedział.
Zauważ, że wiele obecnych języków ma strukturę mniej lub bardziej podobną do C, więc nauczenie się podstaw tego języka nie jest niczym złym - a prędzej czy później (a raczej prędzej) się przyda.
Choćby do zabawy z arduino ;)
[#13] Re: Prace nad API2 - nowy język programowania

@smith, post #11

To nie lepiej wziąć język który już powstał, ale niekoniecznie jest dostępny na Amidze? Żeby nie wymyślać kolejnej składni i tworzyć kolejnej bazy wiedzy na kolejne problemy. Nie chcesz wskaźników, to weź język z referencjami. Może Rust? JS? Python? Nikt Ci nie każe wszystkich paczek Pythona portować, samą składnię wziąć. Ba, biorąc np. JS, zanim zrobisz kompilator z prawdziwego zdarzenia to możesz po prostu zbudować runtime na bazie duktape.

Ja wiem że teraz w modzie są te wszystkie wymysły typu Swift, Kotlin, Zig, ale to prowadzi do bardzo dużej fragmentacji wśród programistów i nawet jak ktoś w czymś utknie to ci z innych języków niezbyt jak mają takiemu pomóc. A zakładając najlepszy scenariusz że swój język skończysz i udostępnisz, to będziesz tu przez dość długi czas jedyną osobą robiącą za support/helpdesk. ;)

Jak nie lubisz wskaźników to zastanów się nad nowożytnym C++. Ostatnio w nim sporo bajerów, które pozwalają bardzo mocno ukryć/zastąpić wskaźniki referencjami.

Ostatnia aktualizacja: 13.11.2019 19:45:14 przez teh_KaiN
[#14] Re: Prace nad API2 - nowy język programowania

@smith, post #11

Oj już nie rób takiego fetysza ze wskaźników. Idea jest prosta, tylko bardzo często ludzie uczący programowania nie potrafią tego skutecznie wyjaśnić. I potem się to ciągnie.
[#15] Re: Prace nad API2 - nowy język programowania

@Krashan, post #14

Bo kiedyś na C64 się robiło PEEK i POKE więc wszyscy musieli rozumiec co to są wkaźniki. Dalej uważam, że bez znajomości języka C, na Amidze nie da się zrobić większego programu. Wystarczy, że framework czegoś nie będzie miał i trzeba będzie z czegoś systemowego skorzystać.

Chociaż teraz, jak mówię ludziom że programuje w C to wszyscy myślą że jakieś sterowniki czy inny niski poziom. Napisanie większej aplikacji w C to dla większości ludzi czarna magia.

Ostatnia aktualizacja: 13.11.2019 20:15:12 przez michal_zukowski
[#16] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #15

Wiesz, sam wskaźnik to łatwo ogarnąć, ale co innego zrozumieć co to wskaźnik, a co innego nauczyć się cóż też za jego pomocą można w tym C zrobić, co ma specyficzne zastosowanie (np. wskaźnik na funkcję mogący dawać namiastkę obiektowości, ale po co gdy jest C++).
Teraz czy Amidze jest potrzebny kolejny język programowania? Czy nie wystarczy po prostu dobry framework w C? Nie wiem czy ewentualne oszczędności cykli maszynowych i bajtów pamięci będą warte włożonej pracy.
[#17] Re: Prace nad API2 - nowy język programowania

@Krashan, post #14

Może problem polega na zaczynaniu z kiepskim podręcznikiem. Ja uczyłem się C z "ANSI C" Kernighana i Ritchiego... moim zdaniem jest to najlepszy i najłatwiejszy do opanowania podręcznik programowania ever. Wszystko jest wyjaśnione rewelacyjnie jasno.
A sam C jest super, zawsze byłem pod wrażeniem prostoty tego języka. Do tego, jak pisał Marian - na składni C bazuje olbrzymia większość współczesnych języków, więc opanowanie jej jest wstępem do poważniejszego programowania. No i można się pobawić Arduino OK

Ostatnia aktualizacja: 13.11.2019 21:59:05 przez wali7
[#18] Re: Prace nad API2 - nowy język programowania
Pozwolę sobie odpowiedzieć zbiorczo na Wasze posty.
Tak, wskaźniki są proste, żeby je wytłumaczyć wystarczy kartka papieru, długopis i 0.5h, ale problem ze wskaźnikami na Amidze jest taki, że jak się coś namiesza to komputer się resetuje i w wypadku większego programu nawet nie wiadomo gdzie zacząć szukać. Bo nie w samych wskaźnikach tkwi kwestia ale w ich arytmetyce. Łatwo wyjechać poza pamięć danej struktury/tablicy i nadpisać inną, a błąd się ujawni w innym miejscu i chwilę później.
Teraz co do samego języka. Jeżeli ktoś okazjonalnie potrzebuje sobie coś napisać bo np. musi przerobić jakieś pliki z danymi czy coś tego typu, to język w który może to w łatwy sposób zrobić bez potrzeby użycia tych że wskaźników i ręcznego alokowania pamięci, będzie dla niego dużo wygodniejszy niż wspomniane C. Jeżeli ktoś umie programować i chce napisać coś większego, to choćby nie wiem jak był biegły, nadal popełni błędy, które będą skutkować wyżej opisaną sytuacją. Ale nie tylko o to chodzi. C jest bardzo proste ale i zarazem bardzo prymitywne. Owszem można w nim wszystko zrobić, ale czasem trzeba dużo kodu napisać, a dużo kodu, to dużo testowania, debugowania i utrzymywania. Dlatego w nowych języka dodano wiele konstrukcji i komponentów z nich korzystających i dzięki temu programuje się wygodniej i szybciej. Ja na przykład jestem fanem lambd i LINQ, brakuje mi tego w C i dlatego te elementy znajdą się w nowym języku i komponentach API2.
Co do popularności składni C, jeżeli spojrzymy na przykłady to mój język nie jest od niej aż tak daleki. Ktoś kto programuje w Swiftcie, C#, Kotlinie, Javascriptcie, Typesciptcie czy nawet w C się bez problemu w nim odnajdzie i myślę że sam język obecnie nie jest problemem do nauczenia bo to zawsze jest mała rzecz, trudniej jest opanować jego komponenty bo one są duże, a głównym celem API2 są właśnie nowe komponenty i tutaj czy się ich użyje w C czy w innym języku trzeba je i tak opanować.
Dlaczego nowy język? Jak widać jest taka potrzeba. Microsoft unowocześnia C#, Apple ma Swifta, dla JVM pojawił się Kotlin. Jest jakiś powód ku temu. Poprzednie rozwiązania nie do końca się sprawdzały. Przenoszenie Kotlina nie ma sensu bo jest on ograniczony JVM. Swift ma wiele fajnych rzeczy ale i trochę braków. Stąd taka decyzja.
Na koniec może jeszcze napiszę, że nie kompiluję do asemblera tylko do C, więc pracy nad takim kompilatorem jest o wiele mniej i jest możliwość ukończenia go w krótkim czasie.
[#19] Re: Prace nad API2 - nowy język programowania
Ja jeszcze dodam, że zarówno na AmigaOS jak i pod MorphOSem, jakiś dawny czas temu, rozwijany był port Pythona (jakoś wersja 2.2.)

Więc taki projekt uznałbym za kierunek do przodu - cała masa gotowych bibliotek dałaby się w miarę łatwo przeportować.

A to...
[#20] Re: Prace nad API2 - nowy język programowania

@David, post #19

Python ma swoje zalety, ale po pierwsze ja osobiście uważam, że języki silnie typowane są lepsze, a po drugie Amigi nie mają nadmiaru mocy obliczeniowej więc jednak korzystniej jest używać czegoś co się kompiluje do plików wykonywalnych, a nie jest interpretowane.
[#21] Re: Prace nad API2 - nowy język programowania

@smith, post #20

Popieram autora. Python ma sens jak masz gigaherce i gigabajty pamięci a nie A1200 z 8MB FAST.
[#22] Re: Prace nad API2 - nowy język programowania

@smith, post #20

@Smith
że języki silnie typowane są lepsze

Zgadza się ale ja bym to bardziej rozwiną, że języki silnie typowane są przyjaźniejsze w debugu czego nie można powiedzieć o takie pythonie czy JS. Mnie by się marzył na systemach NG .Net z całym dobrodziejstwem.
[#23] Re: Prace nad API2 - nowy język programowania

@RadziN, post #22

Oj tam.

Zamiast debugować, należy po prostu poprawnie programować.
[#24] Re: Prace nad API2 - nowy język programowania

@smith, post #3

Przecież obiektowość nie zapewnia czytelności programu ani łatwości/prostoty programowania, a w/g mnie obiektowość bardziej zaciemnia program niż wskaźniki (ale to mogą być moje osobiste doświadczenia).
W C (jak i w innych językach) można pisać bardzo czytelnie, ale można też tak, że faktycznie nie wiadomo o co chodzi bez dłuższego posiedzenia.
A to że progrma nie zawiesi komputera to trudno mi uwierzyć, chyba że wprowadzasz jakąś warstwę abstracji, co z kolei z wydajnością ma mało wspólnego...
Poza tym, jakoś nie wyobrażam sobie wysypu nowych programów na Amigę, bo powstał na nią jakiś super-hiper język programowania, niestety...
[#25] Re: Prace nad API2 - nowy język programowania

@smith, post #18

Microsoft unowocześnia C#, Apple ma Swifta, dla JVM pojawił się Kotlin. Jest jakiś powód ku temu.


Microsoft nie chciał uzależniać działania aplikacji na swoim systemie od języka/wirtualnej maszyny utrzymywanej przez inną firmę, zwłaszcza że Java miała/ma etykietkę powolnego języka programowania. Choćby na wiki znajdziesz informacje, że pierwsze wersje były łudząco podobne do Javy. Swift jest próbą ucieczki od koślawego ObjC, ale tu nie znam genezy decyzji czemu taki język dla siebie wybrali. Co do kotlina, to:

Google has been in a nasty legal battle with Oracle over "unauthorized use of Java APIs"


Miało to miejsce całkiem niedawno i jeszcze powinieneś o tym pamiętać żeby wiedzieć że to nie jest taki po prostu wynalazek z potrzeb czysto praktycznych, ale w dużej mierze też legalnych.

Prawdziwą rewolucją nowożytnego programowania jest niestety/stety Electron, bo jedną bazą kodu firmy są w stanie załatwić kompatybilność na obu systemach komórkowych, na desktopie i z poziomu przeglądarki, bez pisania oddzielnej wersji na każdą platformę, ewentualnie tylko drobne tweaki. Niszowy język uwiązuje Cię z daną platformą i w momencie gdy przestanie on być wspierany (a każdy nie będący ISO w przestanie być wspierany szybciej niż później) to Twój kod jest do wyrzucenia, bo go nie przeportujesz na nic bez przepisywania na nowo.

Jeśli boisz się o bezpieczeństwo pointerów to przypatrz się nowożytnemu C/C++. Unique/shared ptr załatwia Ci zwalnianie zasobów jak skończysz ich używać ze względu na technikę RAII. Dodatkowo te smart pointery nie pozwalają na arytmetykę wskaźnikową (i dobrze!), za to możesz bardzo dużo rzeczy zrealizować na przeładowaniu operatorów (byle w logiczny intuicyjny sposób a nie jak te niesławne shifty do strumieni w iostream).

Pół biedy że kompilujesz do C. Bo to oznacza że będzie można mniej lub bardziej czytelnie programować z pominięciem tego ustrojstwa a z użyciem samej libki. ;)

@David: Haha, dobre. Może jak piszesz kółko i krzyżyk, a nie coś na przestrzeni lat i/lub w parę osób które przychodzą i odchodzą z projektu. ;)

Ostatnia aktualizacja: 15.11.2019 18:12:47 przez teh_KaiN
[#26] Re: Prace nad API2 - nowy język programowania

@BigBang, post #24

Przecież obiektowość nie zapewnia czytelności programu ani łatwości/prostoty programowan


Nie chodzi o obiektowość. Spójrz na przykład "Hello, World!", nie potrzeba klasy i metody jak w C# czy Javie, nie potrzeba nawet funkcji main jak w C. Po prostu można napisać polecenie i to zadziała.

A to że progrma nie zawiesi komputera to trudno mi uwierzyć


Program nie będzie się wieszał dlatego, że nie można wygenerować referencji na obszar pamięci w inny sposób niż przez alokację obiektu, nie ma też arytmetyki referencji, więc nie można odczytać/zapisać przypadkowego obszaru pamięci, nie można też do niego skoczyć.

Poza tym, jakoś nie wyobrażam sobie wysypu nowych programów na Amigę, bo powstał na nią jakiś super-hiper język programowania, niestety...


Moja motywacja jest taka, że jeżeli już ktoś chce coś napisać to chcę mu dać narzędzia dzięki którym będzie mógł to zrobić na tyle wygodnie, że nie zniechęci się po drodze, a przy okazji zrobi to tak szybko jak na innych platformach. Myślę więc, że zwiększy to ilość oprogramowania na Amigę.
[#27] Re: Prace nad API2 - nowy język programowania

@teh_KaiN, post #25

Nie mówię o genezie .Net i C# tylko o tym co się dzieje teraz. Powstają kolejne wersje C#, do ostatniej np. dodano optionale, mimo że zerwało to z kompatybilnością źródeł. Wniosek jest taki, że nowe pomysły są warte wykorzystania.

Kotlin używa tego samego API co Java i nie został stworzony przez Google tylko przez JetBrains a powodem była rozwlekłość Javy i nowe pomysły jak można zbudować język programowania. Efekt jest taki, że kod który robi to samo w Kotlinie jest konkretnie krótszy niż w Javie.

Problem z C++ jest taki, że nie ma nowoczesnego kompilatora na Amigę i nie można zrobić bibliotek dynamicznych udostępniających klasy C++. Ponadto C++ nie ma klas binarnych więc bez wrapperów nie da się ich użyć w innym języku. Co do samych smart pointerów to izolują od wskaźników ale też mają swoje wady i komplikują kod.

Będzie można używać komponentów i w C i w moim języku, od początku było to tak pomyślane. Klasa napisana w C może być użyta w nowym języku i na odwrót. Jeśli spojrzysz na to co pokazałem gdy był pierwszy news o API2 to było tam tylko C.

I jeszcze aby nie było wątpliwości. Nie chodzi o wskaźniki a o ogólną przyjazność i prostotę użycia języka.

Ostatnia aktualizacja: 15.11.2019 22:41:02 przez smith
[#28] Re: Prace nad API2 - nowy język programowania

@smith, post #27

Kotlin używa tego samego API co Java i nie został stworzony przez Google tylko przez JetBrains a powodem była rozwlekłość Javy i nowe pomysły jak można zbudować język programowania. Efekt jest taki, że kod który robi to samo w Kotlinie jest konkretnie krótszy niż w Javie.


Ciagnac offtopa mozna tez stwierdzic ze Kotlin bardzo bardzo mocno wzorowal sie na Swift ;) Jest kilka roznic ale znacznie wiecej jest podobienstw ;) Kurde, musze sie za Swift-a w koncu zabrac ;)

Smith, nie przejmuj sie maruderami i rob swoje. Zaden z nich nie jest chyba sponsorem na Patreonie a wielu chetnie bedzie Ci wskazywac jak masz wykorzystac swoj wlasny czas wolny ;)
[#29] Re: Prace nad API2 - nowy język programowania
Popieram nowe łatwiejsze narzędzie OK Będzie wybór

Z założenia nie jest przenośne, bo nie temu ma służyć.

Zawsze można sobie pobrudzić ręce wskaźnikami, jak ktoś chce.
[#30] Re: Prace nad API2 - nowy język programowania

@smith, post #27

OK, te Twoje przykłady można równie dobrze zmienić tak, że powrzucać kupę rzeczy do inkluda, a w main() wywołać tylko jakąś jedną funkcję i też będzie działało i łał! jaki krótki program!
Dla mnie Amiga to "blisko sprzętu". Czy Twój język da radę w sytuacji: polutuje coś sobie, podłączam do expansion portu i chcę aby system z tym "gadał" - czyli trzeba jakiś sterownik napisać? Czy raczej celujesz w poziom powyżej systemu - czyli aplikacje typowo użytkowe?
A Java ma inne zalety ukryte w jvm - np. optymalizacja "na bieżąco", podczas działania programu. Dlatego ten sam algorytm uruchomiony na jvm może być w pewnych warunkach wykonany szybciej niż skompilowany w C i uruchomiony na tej samej maszynie fizycznej. Pewnie dotyczy to też innych języków bazujących na jvm, kompilowanych do javowego bytecode. No i do tego potrzeba mocnego cpu i dużo RAM.
Ja tam fanem obiektowości nie jestem, uważam wręcz że przy ograniczonych możliwościach sprzetowych Amigi (tj. klasyk) programowanie obiektowe nie ma większego sensu.
Poza tym - tzw. prostota, przyjazność, to tak naprawdę kwestia przyzwyczajenia. Chyba że chodzi o to, aby od samego początku było łatwo, ale nie do końca jestem pewien czy to dobre podejście.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem