Żywa łacina? A mówi się, że to język martwy…
Świetne pytanie, najlepiej zacząć od tego. Łacina tak naprawdę nie jest ani językiem żywym, ani językiem martwym. Jest jakby językiem zamrożonym. Pierwszy raz łacinę martwą nazwano bodaj w XVI wieku – w czasach, gdy cały świat nią władał – czy to nie wydaje się absurdalne? W czasach, gdy każdy wykształcony człowiek świetnie znał ten język. Ba! aż do XVIII wieku wykształcenie można było zdobyć tylko po łacinie – był to język wykładowy wszystkich szkół – zaczynając od szkół parafialnych, poprzez szkoły przyklasztorne – np. jezuickie czy pijarskie, a na uniwersytetach skończywszy. Polscy królowie elekcyjni (wszak nie zawsze Polacy z urodzenia) porozumiewali się z poddanymi po łacinie, Kościół sprawował liturgię po łacinie, po łacinie powstawała poezja, spisywano kroniki (przecież legendy o smoku wawelskim, Wandzie, co Niemca nie chciała i wiele innych znamy właśnie wyłącznie z łacińskich przekazów), po łacinie powstawały najważniejsze prace naukowe – to w tym języku Galileusz i Kopernik opisywali swoje odkrycia, to w tym języku Newton sformułował swoje zasady dynamiki. Skąd więc pomysł, by łacinę nazwać martwą? Tej przenośni – bo tak ją należy rozumieć – użył Marc-Antoine de Muret wyliczając walory języków klasycznych: w przeciwieństwie do języków, których używamy na co dzień, które bezsprzecznie żyją (a cechą życia jest to, że coś umiera i coś rodzi się na nowo), łacina jest jakby zamrożona w swym najlepszym stadium. Języki żywe zmieniają się – dlatego mamy problem ze zrozumieniem słów Bogurodzicy, czy kazań świętokrzyskich, dzisiejszy Francuz nie jest w stanie czytać tekstów napisanych w tym języku w XVI wieku, tak bardzo zmienił się francuski, podobnie nauczywszy się standardowego języka angielskiego mamy problem z przeczytaniem Szekspira. A łacina od czasów Cycerona jest stała i niezmienna, nie zmienia się jej gramatyka, nie zmienia się jej brzmienie – dzięki temu nauczywszy się łaciny możemy bez trudu czytać dzieła Cezara i Cycerona, Wergiliusza, Horacego, ale i św. Tomasza z Akwinu, św. Augustyna, Petrarki, Newtona, metryki chrzcielne wystawione w XIX wieku, encykliki Jana Pawła II, Benedytka XVI czy Franciszka – a przecież te teksty dzielą całe stulecia. Dlatego właśnie łacinę Muret nazwał „jakby martwą”, niezmienną, raz na zawsze utrwaloną, a przez to nieśmiertelną. To, że łacina taka jest, nie wyklucza możliwości mówienia w tym języku – oczywiście, że się da. (http://www.interlinguistik-gil.de/wb/media/beihefte/08/beiheft8-fritsch.pdf)
Ale do tego potrzebne są nowe słowa – rzymianie nie znali przecież telefonów, telewizorów, komputerów.
Rzeczywiście nie znali, co nie zmienia faktu, że wszystkie wymienione tutaj nazwy pochodzą z łaciny i greki. Telewizja – proszę: tele (po grecku: daleko) i visio (łac. widziany obraz), telefon – tele (znów greckie daleko) i fone (co po grecku oznacza: głos, dźwęk), komputer też jest z łaciny – computare to po prostu liczyć, rachować, także i kursor, monitor, klawiatura to słowa łacińskie. Podobnie większość symboli stosowanych w matematyce, fizyce, chemii czy w ogóle w technice ma łacińskie pochodzenie. Sinus (zatoka, skraj – chodzi oczywiście o kąty leżące przy przyprostokątnych, a więc kąty skrajne; oznacza także fałd – można to odnieść do wykresu funkcji) i tangens (dotykający – chodzi o przyprostokątne, a więc dotykające kąta prostego) – nieprzypadkowo związany z tangiem – to przecież wyrazy łacińskie, matematyczne r to oczywiście radius (promień koła), radio to też od tego. Symbol matematycznego pierwiastka pochodzi od małej literki r, skrótu od wyrazu radix, którym w matematyce nazywano właśnie pierwiastek. Jeśli ktoś ma ambicję, by liczyć do nieskończoności, to i tu bez łaciny się nie obejdzie (https://pl.wikipedia.org/wiki/Liczebniki_główne_potęg_tysiąca#Nazwy_utrwalone_w_pi.C5.9Bmiennictwie) – przecież te wszystkie miliony, biliony, tryliony, kwintyliony, duodecyliony, czyli nazwy liczb „wielozerowych”, oparte są na łacińskich liczebnikach! W samochodzie też mamy łacinę – V na desce rozdzielczej to przecież velocitas (nieprzypadkowo po angielsku velocity), h to hora, a więc godzina, no i – skoro już tak przyczepiłem się do litery „r” – to R na drążku skrzyni biegów to też od łacińskiego retro – do tyłu.
Boże! Nigdy już nie spojrzę tak samo na drążek skrzyni biegów…
Kiedyś wymyślano nazwy nowych wynalazków czerpiąc z łaciny i greki. Natomiast dziś żyjemy w czasach, gdy zaczęto używać w tym celu języka angielskiego – mamy przecież smartfony, a te już są z angielskiego smart i (tele)phone jako pospolitego wyrazu angielskiego, nie rozpoznawanego już jako wyraz grecki. Mamy tablet (nooo… trochę od łacińskiego tabula…), czytniki Kindle – ale równie dobrze moglibyśmy je nazwać optonami, czyli użyć nazwy, którą tak zgrabnie ukuł w grece Stanisław Lem. Oczywiście nowe słowa powstają i zawsze powstawały – przecież Newton, Kopernik, czy Galileusz też musieli jakoś nazwać swoje nowe koncepcje – a więc i oni wymyślali nowe łacińskie i greckie słowa. Dziś istnieją nawet specjalne słowniki, które takie słownictwo zawierają (https://www.youtube.com/watch?v=j7WBolRmzQc, http://www.lateinlexikon.com, https://www.amazon.de/Visuelles-Wörterbuch-Latein-Deutsch-Coventgarden/dp/3831090912, nawet w języku polskim: https://www.ceneo.pl/30245761), ale nie jest to główny nurt nauczania łaciny – uczymy się jej po to, by mieć kontakt z przeszłością, mówienie o smartfonach i tabletach jest kwestią nawet nie drugiego czy trzeciego, ale któregoś tam rzędu. Poza tym – czy rozmawiając nawet na co dzień w języku polskim, naprawdę tak często używamy tych „nowoczesnych” wyrazów? Skądże! Najczęściej rozmawiamy o prostych zdarzeniach, o pogodzie, o zakupach, naszych planach, problemach, uczuciach – przecież to tematy ponadczasowe, starożytni również pisali i rozmawiali o tym samym! A więc słownictwo znane Cyceronowi niemal w zupełności wystarcza. Neologizmy nie są potrzebne do czytania i interpretacji tekstów z przeszłości – a tym się głównie zajmujemy, wcale nie są również aż tak potrzebne do prowadzenia zwyczajnych rozmów przy piwie. Łacina jest takim ponadczasowym łącznikiem z przeszłością i o to nam głównie chodzi. Jak mawiał Otto von Habsburg: wer nicht weiss woher er kommt, der weiss nicht wohin er geht und wo er steht (kto nie wie, skąd pochodzi, ten nie wie, dokąd idzie ani gdzie jest).
A czy z przyszłością również?
Z przyszłością również – jeśli napiszemy coś poprawną łaciną dziś, to za 100, 500 czy 1000 lat będzie to nadal zrozumiałe – oczywiście pod warunkiem, że będzie istniał nadal ktoś, kto będzie znał łacinę. By to zrozumieć nie będzie musiał uczyć się kilku wariantów języka funkcjonujących w różnych czasach, tak jak my musimy uczyć się innego wariantu angielskiego, by zrozumieć Szekspira, czy średniowiecznego niemieckiego, by czytać Pieśń Nibelungów.
Czyli łacina jest ponadczasowa?
Tak. Ukuto kiedyś nawet taki termin – res publica litterarum (rzeczpospolita literacka), obejmujący całą łacińskojęzyczną spuściznę literacką oraz tych, którzy ją czytają i tworzą. By stać się jej obywatelem, wystarczy nauczyć się łaciny i zasiąść do lektury. W ten sposób możemy jakby porozmawiać z autorami odległymi nie tylko w przestrzeni, ale i w czasie (coś jak messenger, tyle, że ponadczasowy) – wszak o książkach i bibliotekach pisano niegdyś: hic mortui vivunt, hic muti loquuntur (tutaj martwi żyją, tutaj rozmawiają niemi). Ale fenomen tej rzeczypospolitej rozumieją chyba tylko jej obywatele.
A nie masz zakus, żeby rzeczywiście ożywić łacinę? Jak niegdyś Eliezer Ben Jehuda ożywił język hebrajski?
Bynajmniej, to byłoby bez sensu! Kiedyś poważnie myślano nad tym, by łacinę uczynić językiem Unii Europejskiej – ale niestety, albo może nawet na szczęście nic z tego nie wyszło (https://pl.wikipedia.org/wiki/Żywa_łacina). Gdyby łacina znów weszła w użycie powszechne, znów zaczęłaby się zmieniać. Wtedy znów mówilibyśmy innym językiem na co dzień, niż tym, w którym pisał Cyceron – a to właśnie czytanie tekstów z przeszłości jest celem nauki. Najlepiej wyraził to chyba wspomniany Muretus:
"Mówi się, że łacina i greka już dawno umarły. A ja uparcie twierdzę, że one nie tylko żyją, ale i mają się nieźle, a nawet, jeśli mielibyśmy pozostać przy tej metaforze, cieszą się wspaniałym zdrowiem, po tym, gdy przestały być pod władaniem niewykształconego ludu. Jak długo bowiem pozostawały we władaniu pospólstwa, to znaczy, dopóki pozostawały w użyciu ludu, jak mówi Horacy (Ars poetica 72), poprawność i norma językowa nieustannie się zmieniały, kołysały, płynęły, nie były pewne, nie były stałe, nie mogły pozostawać niezmienne choćby przez jedno stulecie. A teraz, gdy ich używanie zostało ograniczone, że tak powiem, jedynie do środowiska optymatów (ludzi wykształconych), i gdy sięgamy po nie do najlepszych autorów, rządzą nimi raz ustanowione i pewne reguły, od wielu stuleci są utrwalone ("zamrożone") i pozostają niezmienne. Gdyby pozostały w użytku ludu, dziś nie rozumielibyśmy Cycerona – tak jak w jego czasach nie były już zrozumiałe dzieła spisane w czasach Romulusa czy Numy; doprawdy niewielu było już wtedy tych, którzy rozumieli samo prawo XII tablic! Widzimy też i dziś, że nie możemy zrozumieć rzeczy spisanych czterysta czy pięćset lat temu.
Więc te języki, które zależą od codziennego używania niewykształconego pospólstwa, codziennie umierają i codziennie rodzą się na nowo, a te, które wyswobodziły się z jego niewoli i schroniły się w użyciu ludzi wykształconych, te nie tylko żyją, ale uzyskały w pewien sposób nieśmiertelność i niezmienność.
Zmuszani jesteśmy do uczenia się nie jednego, ale dwóch języków, nie tylko obcych, ale i dawno wygasłych i jakby pogrzebanych. Gdyby istniało bowiem jakieś miasto, jakiś lud, w którym mówiono by po grecku czy po łacinie, to wysyłalibyśmy tam nasze dzieci, by od wczesnych lat swego życia chłonęły umiejętność posługiwania się tymi językami. Ale teraz musimy dłużej zmagać się i trudzić już na samym początku, już w samych szrankach musimy wysilać się bardziej, niż w dawnych czasach, by dotarły one z linii startu do mety. Zanim będziemy mogli zaledwie gaworzyć po grecku czy po łacinie, musimy użyć wielkich starań, potrzeba nam wiele wysiłku, wielu nieprzespanych nocy, wielu nauczycieli – a w ich niedostatku przede wszystkim tych, którzy we własnej profesji sami potrzebowaliby dobrego nauczyciela. W ten sposób zmuszeni jesteśmy ścigać cień tych umiejętności, które starożytni bez wysiłku chłonęli z mlekiem matki, zdobywali w codziennym kontakcie z ludźmi, a na ich naukę musimy poświęcać najlepsze lata naszego życia."
Ale jednak i on przyznaje, że prościej byłoby wysłać dziecko do takiego miasta, gdzie mówiłoby się po łacinie czy po grecku…
Tak, nazywamy to dziś immersją, czyli zanurzeniem w języku, gdy przebywamy na co dzień wyłącznie z ludźmi, którzy posługują się danym językiem, rzeczywistość tego języka otacza nas, uczymy się go w konkretnych sytuacjach, w ten sposób jesteśmy w stanie szybciej nauczyć się takiego języka. I tu znów niespodzianka – na świecie istnieje kilka szkół, w których w taki sposób, czyli poprzez immersję, uczy się języka łacińskiego i starożytnej greki. Można wyjechać na studia do Vivarium Novum w Rzymie (https://vivariumnovum.net/en), można udać się do Jerozolimy do Polis – Jerusalem Institute of Languages and Humanities (http://www.polisjerusalem.org), a nawet do Ameryki na Uniwersytet w Kentucky (https://mcl.as.uky.edu/classics) lub do Paideia Institute (http://www.paideiainstitute.org). Organizowanych jest także wiele kursów (zwłaszcza w lecie) – ich wykaz możemy znaleźć chociażby tutaj: http://www.latinitium.com/blog/spoken-latin-summer2017. Robert Maier prowadzi także kalendarz wydarzeń łacińskich, do którego stara się wpisywać wszystkie wydarzenia związane z aktywnym używaniem języka łacińskiego: http://www.septimanalatina.org/txt/l/calendarium.html. Jeśli ktoś chce porozmawiać po łacinie dziś – nie będzie miał z tym żadnego problemu. Bez trudu znajdzie tysiące osób na całym świecie, które świetnie władają łaciną. A już tym bardziej w epoce internetu – możemy porozmawiać przez skype, czy na facebooku (zwanego po łacinie greckim zapożyczeniem: prosopobiblion – bo greka bardziej niż łacina lubi słowne nowotwory). Istnieją tam też różnorakie grupy skupiające łacinników. A rozmawia się o różnych rzeczach – przede wszystkim dzielimy się różnymi odkryciami – co kto ciekawego lub zabawnego wyczytał u jakiegoś łacińskiego autora – np. polecenie wytnij i wklej (w odniesieniu do redakcji tekstu) w liście samego Cycerona! Albo materiałami do nauki, linkami do audiobooków (a właśnie! można sobie posłuchać świetnych nagrań: https://www.youtube.com/playlist?list=PLfku8EBM-vSIIvVShg_DcOqKg3-yUAEsv). Wielu współczesnych poetów publikuje tam też swoje łacińskie wiersze – bodaj najbardziej znany z tego jest Martin Freundorfer z Wiednia (nagrodzony swego czasu przez papieża za swą twórczość).
Nie wiedziałem, że tyle się dzieje!
Tak, w naszej dziedzinie przeżywamy prawdziwy renesans – prof. Rico mówi nawet, że to szósty renesans w dziejach ludzkości (https://www.youtube.com/watch?v=-ZwJKvvdQTI). Zaczyna on również powoli docierać do Polski – coraz więcej młodych ludzi śledzi na bieżąco światowe trendy w dziedzinie studiów nad antykiem i językami klasycznymi, korzysta z internetu, gdzie z łatwością znajduje świetne materiały do nauki. Zaczynamy i w Polsce mieć absolwentów Vivarium Novum czy Polis Institute. Wydaje się, że takie aktywne podejście do nauczania języków klasycznych jest jedyną przyszłością studiów nad antykiem i literaturą łacińsko-grecką. Jeśli chcemy przetrwać, musimy sprawić, by łacina i greka stały się znów językami wykładowymi na filologii klasycznej, by czytać w tych językach teksty i w tych językach o nich dyskutować – zamiast opierać się na nieustannym ich przekładaniu na polski i dopytywaniu o formy gramatyczne – czasem mniej liczy się to, co autor ma nam do przekazania niż to, że robi to za pomocą ablativu absolutu albo ACI. Wspomniane wcześniej instytucje nie mogą narzekać na brak studentów, a wręcz przeciwnie – do niektórych z nich bardzo trudno się dostać – np. Vivarium Novum przyjmuje corocznie około 40 uczniów na około 200 kandydatów z całego świata, a trzeba przyznać, że tamtejsza komisja rekrutacyjna ma bardzo trudny wybór, bo zgłaszają się tam niezwykle zdolni ludzie. Tymczasem u nas filologia klasyczna świeci pustkami.
Nie każdego stać jednak na taką podróż czy udział w kursie poza granicami naszego kraju.
Mnie też nie stać, więc w zupełności to rozumiem. Ale skoro Mahomet nie może do góry, to może trzeba mu wybudować górę na miejscu?
Co masz na myśli?
Stworzyć taką szkołę w Polsce. Mamy potencjał, Polska w porównaniu do zachodu jest tania i to mogłoby być naszą kartą przetargową – nikt jednak niestety tego nie zauważa.
No więc na co czekasz?
Daj mi pieniądze, a zrobię to! Póki co zakładam stowarzyszenie, by móc o nie zabiegać. A kursy już mamy – jak do tej pory odbywają się po kosztach (https://scholaaestivaposnaniensis.wordpress.com/about/).
Może powiesz o nich coś więcej?
Pierwszy taki kurs odbył się w Poznaniu w 2001 roku. Od tamtej pory Letnie Szkoły Żywej Łaciny odbywają się co roku. W 2006 roku pierwszy raz wziąłem udział w takiej szkole i od tamtej pory udzielam się w ich organizowaniu. W 2007 roku wraz z przyjaciółmi zorganizowałem taki kurs w Krakowie, później w 2008 r. w Gdańsku. Od 2012 roku mamy już dwie szkoły rocznie – letnią i zimową, te także peregrynują – odbywały się już w Krakowie, we Wrocławiu, w Katowicach. W sumie odbyły się już 22 takie wydarzenia. Mamy więc już jakąś tradycję, wypracowujemy metody, sprawdzamy różne techniki dydaktyczne i podręczniki. Mamy niebywałą okazję do różnych eksperymentów, sprawdzania nowych rozwiązań. Wraz ze wzrostem zainteresowania kursami musieliśmy wprowadzić podział na grupy uwzględniając poziom zaawansowania uczestników. Słowem: dzieje się!
I kto bierze udział w takich kursach?
Mnóstwo świetnych ludzi – to niezwykła okazja do nawiązania wspaniałych znajomości i międzynarodowych przyjaźni. Od mniej więcej 5 lat w poszczególnych edycjach kursów bierze udział około 50 uczestników, szacuję, że w tym okresie w naszych kursach udział wzięło około 400 osób z 12 krajów świata, tzn. z Polski, Niemiec, Austrii, Białorusi, Litwy, Włoch, Szwecji, USA, Węgier, Wielkiej Brytanii, Czech, Francji. W tym roku (https://scholaaestivaposnaniensis.wordpress.com) będziemy mieć jeszcze prawdopodobnie kogoś z Bośni i z Hiszpanii. Z dumą mogę powiedzieć, że wiadomość o tegorocznej Szkole Letniej dotarła do odbiorców w aż 30 państwach świata, rozsianych na 5 kontynentach! Uczestnicy są w różnym wieku – mamy uczniów gimnazjum, liceum, studentów, osoby pracujące i emerytowane. Gdy ktoś zadaje mi pytanie, czy mamy jakieś ograniczenia wiekowe co do uczestników kursu, odpowiadam zawsze: „Łacina łączy stulecia, czemu więc nie miałaby i łączyć pokoleń?” I to rzeczywiście się sprawdza. Znikają bariery wiekowe i narodowościowe – rozmawiając ze sobą nie czujemy, że pochodzimy z różnych krajów, dzieli nas jakaś różnica wieku. Ba! w łacinie nie ma osobnych form grzecznościowych – wszyscy zwracają się do siebie w drugiej osobie, można oczywiście wyrażać szacunek przez dodanie jakiejś tytulatury (np. professor, domine, pater), ale jednak używa się przy tym i tak drugiej osoby liczby pojedynczej czasownika. To niesłychanie zbliża.
Wow! I wszyscy mówią po łacinie?
Tak, w tej sytuacji łacina staje się przymusowym językiem komunikacji. Intensywny 2-tygodniowy kurs daje naprawdę niesamowite efekty. Oczywiście kurs to nie tylko zajęcia, ale i wspólne spędzanie przerw – ludzie chodzą na papierosa „po łacinie”, proszą o podanie cukru, czy nalanie herbaty również w języku Rzymian. Niektórzy zaczynają nawet śnić po łacinie! Razem (w mniejszych grupach) jemy obiad, często także kolację, wieczorem wychodzimy do knajpy. Ktoś ukuł nawet takie słówko na „knajping” – cauponari (bo caupona to knajpa, cauponari to „knajpić się” – swoją drogą i polska wersja pasuje jak ulał do starych łacińsko-polskich słowników podających zawsze jakieś przekomicznie objaśnienia słówek). Jakież było nasze zdziwienie, gdy okazało się, że to słowo w łacinie od dawna istnieje…
Takie bezwiedne wymyślenie słowa, które już istnieje, jest dowodem świetnej znajomości języka.
Tak, to prawda. Czasem komuś zdarzy się wymyślić coś już dawno wymyślonego. Ale jak to mówiono – pereant qui nostra ante nos dixere! (Niech zginą ci, którzy wpadli na nasze pomysły przed nami).
Kto prowadzi zajęcia podczas takich kursów?
Zapraszamy gości z zagranicy, ale korzystamy także z naszych „krajowych sił” – mamy już sprawdzoną, międzynarodową drużynę, w razie potrzeby zapraszamy do niej także nowe osoby.
Jednak Łacina jest trudna…
Bynajmniej! Nie jest trudniejsza od polskiego, a już dla Polaka zwłaszcza. Jest obrzydliwie regularna, no i nikt się nie krzywi, że nie tak wymawiamy jakieś głoski, bo fonetyka łaciny jest dziś zupełnie umowna. Nikt nie będzie się z nas śmiał, gdy będziemy mówić z polskim akcentem. Łaciny można nauczyć się w przynajmniej 180 godzin lekcyjnych (dodając oczywiście mniej więcej drugie tyle pracy w domu – na „odrabianie zadań domowych”) – oczywiście pod warunkiem, że będziemy się jej odpowiednio uczyli.
Odpowiednio? Ale przecież łacina to tabelki, regułki, deklinacje…
Tak uczono w XIX wieku, tak i wielu (niestety) uczy i dziś. Łacina hartuje ducha, ćwiczy cierpliwość, rozwija umiejętność logicznego myślenia… Do diaska! Ale matematyka, czy programowanie rozwija te same umiejętności! Nie ma co się dziwić, że gdy w dyskursie o przywróceniu łaciny do szkół posługujemy się takimi argumentami, nasi adwersarze wykorzystują je przeciwko nam, proponując wprowadzenie takich przedmiotów jak programowanie czy logika – skoro to właśnie logiczne myślenie ma być jakąś główną wartością czy korzyścią płynącą z nauki łaciny.
No tak, łacina matematyką humanisty!
I pierwszym stopniem do piekła, jeśli jej nauczanie ogranicza się do gramatyki i wertowania słownika. Wszyscy mówią o jakichś drugorzędnych korzyściach z uczenia się łaciny, zapominając jednak o głównym jego celu: uczymy się łaciny po to, by czytać teksty! Tak jak angielskiego uczymy się po to, by czytać książki, móc dogadać się za granicą. Nie po to, byśmy wiedzieli, że istnieje tabela czasowników nieregularnych i swim, swam, swum. Czy ktoś wypowiadając po angielsku zdanie I ask him to close the window myśli o tym, że to szczątki angielskiego ACI? Bynajmniej! A czy brak tej wiedzy przeszkadza mu w biegłym mówieniu i czytaniu po angielsku? Powtórzę: bynajmniej! Przy czym nie oznacza to, że moi uczniowie nie wiedzą, co to jest Ablativus albo ACI – po prostu stosujemy inne metody. Czym innym jest nauczanie gramatyki opisowej, a czym innym praktyczna nauka języka.
Właśnie – sam przyznajesz, że łaciny uczymy się po to, żeby czytać, a Ty wciąż mówisz o mówieniu. Raz mówisz, że łacina jest martwa, raz mówisz o szkołach żywej łaciny. Czy to nie jest sprzeczność?
Nie. Język jest stworzony właśnie do mówienia i słuchania, czytanie jest umiejętnością wtórną. Jak pisał Comenius i wspomina Wilfried Stroh: trudno przyswoić sobie język tylko oczami i rękami (czyli przez czytanie i pisanie odmianek), język jest dla języka i dla uszu, dopiero później dla oczu, które jednak stanowią wielką pomoc dla tych zmysłów. Właśnie – język dla języka, jak sama nazwa wskazuje. Mówiąc i słuchając, jednocześnie patrząc i działając nauczymy się języka szybciej, niż tylko czytając, deklinując i wertując słownik. Mówienie jest więc drogą do opanowania języka w sposób umożliwiający czytanie książek. To jak wchodzenie na 12. piętro wieżowca, by podziwiać widok – można pojechać windą albo iść schodami. Każda droga prowadzi do tego samego, jednak jedną dotrzemy na miejsce szybko i bez trudu, a obranie drugiej zabierze nam więcej czasu i wysiłku. Wybierając windę będziemy mieć więcej czasu na napawanie się widokiem, schody może i wpłyną na naszą muskulaturę, ale i zmęczą stawy, spowodują zakwasy, wielu w połowie zrezygnuje, a wytrwali – zmęczeni i wyczerpani, nie będą już mieli tyle radości z podziwiania upragnionego widoku. Oczywiście ktoś powie, że to zadanie dla wytrwałych i że dla nich właśnie warto uskuteczniać wchodzenie po schodach. Z jednej strony może i to prawda, ale z drugiej potem dziwimy się, że w szkołach nie ma łaciny – skoro rodzice męczyli się wchodzeniem po tych schodach, dano im za mało czasu na dojście do celu i przez to nigdy nie dotarli do podziwiania tego ponoć zapierającego dech w piersiach widoku, to trudno spodziewać się, że będą do tego wysiłku zachęcać potomność. Tak czy siak nie możemy powiedzieć, że winda albo schody są naszym celem. Mówienie jest drogą do czytania tekstów oryginalnych. Żywa łacina to takie hasło propagandowe, powstałe na początku XX wieku. Nazywano nim właśnie zastosowanie konwersacji czy metody bezpośredniej w nauczaniu łaciny. Chodziło o ożywienie lekcji martwego języka. Hasło się przyjęło i tak już zostało. To taka konwencja. https://www.youtube.com/watch?v=dXHhl0GNsak
Jednak trudno mi sobie wyobrazić inną lekcję łaciny, niż rozpoznawanie form z tabelką w ręku. Pierwsza lekcja to obowiązkowo wymowa i puella, puellae!
Można oczywiście zacząć od tego, że łacina w różnych okresach brzmiała różnie, że w różnych państwach brzmi różnie, że my mówimy ci-vi a Anglicy si-vi, że w Polsce mówimy weni, widi, wici, a Włosi mówią wiczi, tymczasem sam Cezar (a właściwie Kajsar) mówił: łeni, łidi, łiki. Ale to naprawdę w dzisiejszych czasach tylko konwencja. Zamiast teoretyzować, można przejść do działania. Może więc rozmówki? Salve! Quod est tibi nomen? Mihi nomen est Martinus. Esne Germanus? Minime, Polonus sum. Ubi habitas? Cracoviae habito. Uczniowie od razu widzą zastosowanie poszczególnych wyrazów i form – najpierw uczą się ich użycia, potem dowiadują się, że coś tam jest formą drugiej osoby czasownika, a coś pierwszą. Takich zwrotów możemy używać przecież na każdej lekcji – przy powitaniu, przy proszeniu kogoś do tablicy, cokolwiek (quidcumque! o!). Podajmy łacińskie wersje imion, każdy będzie się czuł znobilitowany, że wołają go do tablicy po łacinie – i jednocześnie osłuchawszy się zapamięta formę wołacza. W takich rozmówkach mamy już i orzeczenie imienne, i dativus possessivus, i składnię miast… Więc i gramatycznych ekstremistów też da się zadowolić. Dydaktyka w ostatnich latach niebywale się zmieniła i rozwinęła (są nawet kursy i podręczniki dla dzieci, np: http://www.banzaj.pl/Dar-Rzymianina-czyli-Lingua-Latina-CD-Kwiecinski-Lech-p15689-sklepy.html) – łaciny jest pełno w internecie, jest mnóstwo materiałów do nauki, są nagrania, filmiki, podcasty, audiobooki – żyć nie umierać! Mamy masę świetnych podręczników – dostępnych także w niedrogich lub całkiem darmowych PDFach (np. podręcznik Ørberga: http://munduslatine.weebly.com/cursos.html). W zeszłym miesiącu w Jerozolimie wydano podręcznik FORUM – najnowocześniejszy podręcznik do łaciny na świecie – i proszę, nagrania do niego są dostępne w internecie za darmo: http://www.polisjerusalem.org/forum-speaking-latin. Dzięki internetowi nauczyciele mogą wymieniać się doświadczeniami, materiałami, pomysłami, mogą się wzajemnie inspirować, mogą realizować wspólne projekty.
Wspólne projekty?
Tak. Np. w ramach programu Comenius czy Erasmus+. (O! I znów kłaniają się wielcy łacińscy pisarze). Uczniowie jednej z polskich szkół (IV LO w Gorzowie Wielkopolskim) wzięli udział w międzynarodowym projekcie eTwinning (brało w nim udział kilkanaście szkół z całej Europy) i zdobyli szereg nagród oraz wyróżnień. Ich prace (podsumowanie projektu można znaleźć tutaj: https://prezi.com/coyrwy86ylwb/latin-in-etwinning/ – zachęcam! Jest też filmik!) były naprawdę najlepsze – widziałem prace pozostałych, nasze znacznie się wyróżniały – pomysłowością i wykonaniem. Do tego potrzebny jest jednak świetny nauczyciel, który trzyma rękę na pulsie, wie, że takie projekty istnieją i zachęca uczniów do podjęcia wyzwania. W tym roku szkoła znów bierze udział w kolejnym projekcie (http://www.estudiosclasicos.org/proyecto-de-latin-hablado-en-bachillerato/) – trzymajmy więc kciuki!
Czyli można bez tabelek?
Ujmijmy to inaczej – tabelka ma porządkować wiedzę, nie być jedynym narzędziem i celem przekazywania wiedzy. Tabelka to przejrzyste uporządkowanie. Ale mnie przeraża jej nadużywanie. Później uczniowie zapamiętują, że w łacinie są formy gramatyczne, ale nie potrafią ich wykorzystać, albo w ogóle ich nie pamiętają, twierdzą, że po łacinie się nie mówi – bo to taki język do tabelkowania. Cały kurs poświęcają na opanowywanie reguł gramatyki, nigdy nie widząc na oczy żadnego tekstu! No i w społeczeństwie utrwala się przekonanie, że łacina jest trudna i niepotrzebna. I fakt – jaki użytek zrobię z wiedzy, że w angielskim istnieją czasowniki nieregularne? To nie jest znajomość języka, ale jakaś tam szczątkowa wiedza o języku.
Autorem tekstu jest Martinus Loch – doktorant Uniwersytetu Adama Mickiewicza.
Świetny artykuł (wywiad), bardzo ciekawe spojrzenie na łacinę i interesujące inicjatywy. Aczkolwiek jeden szczegół nie daje mi spokoju. Mianowicie powtarzanie, że łacina od Cycerona jest niezmienna. Pod względem gramatycznym jak najbardziej tak, ale już na pewno nie pod względem znaczenia słów. Znajomość łaciny klasycznej nie jest wystarczająca do czytania tekstów autorów średniowiecznych, gdyż przez zmianę realiów zmieniły się i znaczenia słów, także, co chyba najbardziej problematyczne, czasowników (pomijając błędy gramatyczne autorów, bo to przecież nie zmiany). Przecież po to powstają słowniki łaciny i klasycznej, i średniowiecznej, tak samo na uczelniach są osobne zajęcia z obu tych odmian jednego języka. Więc tak jak znając dzisiejszy angielski możemy mieć spore problemy z rozumieniem języka Szekspira z przełomu XVI i XVII wieku, tak samo, rozumiejąc dzieła Cycerona niekoniecznie będziemy rozumieć średniowieczne kroniki.
Oczywiście, że łacina się zmieniła, ale nie systemowo. By rozumieć teksty średniowieczne, nie musimy uczyć się "innej fleksji". Oczywiście pojawiają się w niej "nowotwory" typu "volo amare" (=amabo) czy "habeo amatum" (=amavi), ale takie zmiany czy cechy tekstów można zakwalifikować jako odmiany funkcjonalne języka lub indywidualne cechy stylu autora. To tak jakbyśmy czytali w języku polskim diagnozę medyczną lub opis techniczny jakiegoś wynalazku – nie będziemy znali znaczenia niektórych wyrazów (wtedy sięgamy po słownik), ale nie będzie nam to przeszkadzać w rozeznaniu, co w zdaniu jest podmiotem, co orzeczeniem, co okolicznikiem, jakie są relacje między poszczególnymi wyrazami i nie będziemy musieli sięgać do gramatyki opisowej.
Mihi nomen Iustina est. 🙂 Ja mam w szkole (liceum) łacinę, ale niestety uczymy się jej właśnie metodą gramatyczno-tłumaczeniową. Przynajmniej tłumaczyliśmy kilka tekstów, a nasza nauczycielka starała się, żebyśmy chociaż trochę mówili na głos po łacinie, poza tym też powtarzała, że nie jest to język martwy. Nawet powiedziała, że chciała zapisać się do Letniej Szkoły Żywej Łaciny! 🙂 Ale mimo wszystko większość nauki polega na wkuwaniu na pamięć odmian i struktur gramatycznych. Jestem ciekawa, jak wyglądałaby lekcja z zastosowaniem bardziej "nowoczesnych" metod.
Salve, Iustina! 🙂 Cieszę się, że mieliście kontakt z tekstami, w dzisiejszych liceach nie zawsze się to udaje. Trzeba też jasno odróżnić "czytanie na głos" (recytację) – czyli odtwarzanie tekstu zapisanego, od "mówienia" – czyli produkowania (tworzenia) własnej wypowiedzi, reagowania na cudzą wypowiedź, komendę, odpowiadania na pytanie.
A jak wygląda taka "żywa lekcja"? Wystarczy przybyć na letnią szkołę, by zobaczyć 😉 lub (ostatecznie) wygooglować np. to: https://www.youtube.com/watch?v=CkN7NIyzpkg&t=3s (to już lekcja XXIII Orberga), a tutaj pierwsza lekcja Greki: https://www.youtube.com/watch?v=tJrGaOF-bOw&t=3s
U mnie w liceum też tak to wyglądało – raz w tygodniu spotkania polegające na tłumaczeniu podręcznika i wkuwaniu tabelek. Kiedy pojechałam na wymianę do Amerykańskiego liceum, okazało się, że tam można sobie wybrać łacinę jako języka obcy zamiast hiszpańskiego czy fransuskiego i lekcje można było mieć codziennie przez 4 lata.
Aniu, ja nie jestem bezgrzeszny w tych sprawach (jeślibym nawet tak pomyślał przez jedną sekundę to oszukiwałbym się), staram się nie być chamowaty i jeśli takie masz odczucia to bardzo Ciebie przepraszam. Chcę tylko zaznaczyć, że popełniłaś znaczny błąd ortograficzny. Mam kolegę, który wciąż pisze "język Francuski" i "język Francuski" i staram się jak mogę, aby wybić mu z głowy pisanie przymiotników z dużej litery a on dalej swoje (niedawno czytałem wypowiedzi na forum onetu i tam też ktoś napisał: "język Bułgarski Tuska"). W języku polskim przymiotniki pisane z dużej litery to: Boski, Boży (choć nawet w tym wypadku nie zawsze), Maryjny, Jezusowy Chrystusowy (tu raczej zawsze) i Powstanie Warszawskie (pisownia: powstanie warszawskie też jest dopuszczalna). W pozostałych sytuacjach bardzo często pisze się je małą literą. Są też inne przypadki, że pisze się je dużą, ale częściej, znacznie częściej pisze się je z małej litery.
Bardzo dobry wywiad, ciekawy rozmówca, świetne materiały i projekty o których mówi (a niektóre – sam prowadzi). Podziału tekstu na dwie części nie rozumiem, aż tak długi to on przecież nie jest; woofla nie walczy chyba o czytelnika niepotrafiącego skupić uwagi na więcej niż 10 min?
Z uwagą Domingo podważającego tezę o "niezmienności" łaciny w pełni się zgadzam (może autor mógłby się wypowiedzieć?), od siebie dodam że zabrakło mi kilku elementów:
– że łacina nigdy nie umarła i żyje nadal, tyle że zmieniła się bardzo i nabyła kilka(naście) nowych, odrębnych norm, przez co teraz nazywamy ją odpowiednio włoskim, francuskim, hiszpańskim, portugalskim, rumuńskim etc. etc.;
– że różnica między modelem późnoantycznym (mówię "łaciną ludową" a piszę -a przynajmniej się staram- "łaciną klasyczną"), a modelem średniowiecznym (mówię "w języku ludowym" a piszę "po łacinie") jest nie tak duża;
– że to chyba nie przypadek, że najwybitniejsze dzieła powstały w ciągu pierwszych 100-150 lat historii klasycznej łaciny (złoty i srebrny wiek), czyli wtedy, kiedy norma literacka była jeszcze na tyle bliska żywego języka, że jego użytkownicy posługiwali się wrodzonym, a nie wyuczonym wyczuciem stylu; późniejsze pokolenia, pozbawione tego "czucia w palcach i języku" nienaturalnej już dla nich (choć wciąż dobrze znanej!) normy zmuszone były naśladować poprzedników
Autor wypowiedział się powyżej (10 lipca) 😉 Dziękuję za celne uwagi. Oczywiście dyskusja o "martwości" łaciny mogłaby być baaaardzo długa i wielowątkowa, należałoby też zdefiniować, co rozumiemy pod nazwą "łacina", gdyż jest to pojęcie bardzo pojemne: można go użyć w odniesieniu do języka z "fibula Praenestina", dzieł Cycerona, św. Augustyna, Petrarki, XVII-wiecznych akt sądowych, a także języków romańskich, które są przecież kolejnym stadium rozwojowym języka Cycerona… Trzeba byłoby wyłonić różne warianty czy odmiany funkcjonalne tego języka… Ale niestety nie da się powiedzieć o wszystkim w tak "krótkim" artykule, to raczej materiał na książkę 😉 Poza tym – wielu już o tym mówiło, a ja starałem się napisać to, o czym właśnie się nie mówi.
Co do najwybitniejszych dzieł, które powstały w epoce klasycznej – ująłbym to inaczej: norma języka pisanego nie powstaje w próżni, zawsze w jakiś sposób odzwierciedla mowę potoczną. Nic więc dziwnego, że w okresie, gdy w języku łacińskim wykształciła się ta norma, Rzymianie (przynajmniej wykształcona warstwa społeczeństwa) mówili właśnie mniej więcej tak, jak pisali i literacki wariant języka (sermo doctus, urbanus) nie różnił się znacznie od wariantu potocznego (sermo vulgaris). Dzieła powstałe w tym okresie zyskały tak wielkie uznanie, że ktokolwiek kiedykolwiek później pisał coś po łacinie, starał się robić to jak Cyceron, Cezar, Owidiusz i inni. I tak zaczęła się dyglosja (o jej skali w IX wieku mówią postanowienia soboru w Tours w 813 roku, które zobowiązują duchownych do wygłaszania kazań w "rustica lingua Romana", bo wierni nie rozumieją łaciny) – język potoczny rozwijał się normalnie (by w efekcie dać początek językom romańskim), gdy tymczasem język literacki systemowo się zamroził. Ten wzór, jak wspomniałem, chcieli naśladować wszyscy późniejsi autorzy. Nawet zachowana rzymska korespondencja jest zaskakująco jednolita – niektórzy naukowcy uważali to za dowód, że w łacinie nie istniało zróżnicowanie dialektyczne… Tymczasem jest to efekt "rzymskiego szkolnictwa". Wzorzec był ten sam, jednak nie każdy potrafił go tak doskonale naśladować – i te odchylenia od wzorca to np. tzw. łacina średniowieczna (niektórzy z tego powodu kwestionują nawet jej istnienie! Argumentując, że to jedynie nieudolne naśladownictwo wzorca klasycznego nie mające kontynuacji rozwojowej ani wpływu na łacinę w późniejszych okresach, że nigdy nie była normą, lecz zbiorem błędów – mają w tym sporo racji). Dlatego ośmielam się twierdzić, że łacina systemowo się nie zmieniła – od czasów Cycerona i Augusta miała niezmienny wzorzec, jedną normę.
Jestem za wcielaniem łaciny w życie codzienne. Moduły obsługi łaciny klasycznej dostępne są w mojej aplikacji lng-cv dla miłośników lingwistyki ekstremalnej. Linkuję do Wiki, tymczasem program pobrać można pod zakładką Code:
https://github.com/piotrbajdek/lng-cv/wiki
Obecnie program działa w dwóch trybach: (1) wpisujemy tekst i otrzymujemy wymowę w IPA lub (2) konwertujemy tekst pomiędzy różymi normami ortograficznymi (np. regionalnymi).
Wstępnie zrobiona jest obsługa języka (1) angielskiego, (2) łaciny, (3) keczua, (4) tikuna. W przygotowaniu jest obsługa (5) hiszpańskiego i (6) polskiego. Chętnie nawiążę współpracę z osobami, które by chciały przygotować moduły innych języków starożytnych (np. greki), jak również współczesnych (w przypadku języków sztucznych umówmy się, że wspieramy te, które posiadają kod ISO 639-3). Jeśli ktoś będzie miał sensowny wkład -np. wspierając język, którego ja nie znam- naturalnie dopiszę tę osobę na listę współautorów oprogramowania, itd., także można zapisać swoje nazwisko w historii informatyki i ligwistyki.
Rozbudowawszy bazę języków możemy stworzyć narzędzie na wolnej licencji, z którego będą korzystać miliony ludzi. Będę pracować nad dodaniem lng-cv do repozytoriów różnych dystrybucji Linuxa i innych systemów operacyjnych (zwłaszcza tych wolnych). Program jednak póki co jest na BARDZO wstępnym etapie rozwoju i wymaga testowania tak pod względem informatycznym, jak pod względem lingwistycznym: będzie bezcenne, jeśli ktoś pobawi się choćby modułami łacińskimi i zgłosi błędy lub pomysły dowolnego rodzaju. Jak czytamy w licencji oczywiście "THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND". 😉
Myślę, że ciekawym pomysłem będzie przetłumaczenie programu na łacinę (język angielski jest mało stylowy), albo też przygotowanie łacińskiego forka programu. Odnoszę wrażenie, że jest duży niedostatek łacińskich wersji programów, a to jest wspaniała okazja, by tę lukę zacząć uzupełniać.
Mając na uwadze, że potencjalnymi współpracownikami są głównie osoby zainteresowane lingwistyką raczej niż programowaniem, napisałem całość w języku Pascal o wybitnie czytelnej składni–myślę, że przeglądając kod nie trzeba więcej niż 5 minut, by zrozumieć co i jak. Z pewnych względów zastanawiałem się nad przepisaniem całości na język Ada wykorzystywany głównie przez wojsko i lotnictwo, ale zdaje się, że wówczas z powodów prawnych by móc rozpowszechniać program w formie binarnej musiałym zmienić licencję kodu źródłowego z MIT na GNU GPL, która bardziej skupia się na wolności kodu niż na wolności użytkownika.
Piotrze, komentarz od strony czysto informatycznej:
Pierwsze co bym radził, to przenieść całą bazę fraz, liter do osobnych plików i zdecydować się na jakiś format zapisu (JSON, YAML, XML?). Wtedy można będzie pracować nad nimi bez ingerencji w kod (szczególnie, że wybrałeś język kompilowany), oraz bazy tworzone przez użytkowników w ten sposób będą reużywalne, jakbyś zdecydował się na zmianę technologii, albo ktoś chciałby ich użyć w innym projekcie.
Co do języków programowania, jeśli szukasz alternatywy, która ma być jednocześnie czytelna, oraz na otwartych licencjach: na pewno warty rozważenia jest Python (zdominował obecnie środowiska akademickie, więc dużo osób zna, dodatkowo jest skryptowy i nie trzeba kompilować – przy takim projekcie to plus), ciekawe są też Julia albo R (te powstały głównie do obliczeń matematycznych, ale do takiego projektu też się nadadzą).
Dzięki Tomku za sugestie! Zastanowię się co zrobić z bazą fraz, liter, przy czym nie wiem, na ile będą reużywalne. Początkowo program pisałem w Ion Shell dla Redox OS -tak wiem, kompletny egzotyk-, ale ta powłoka jest wciąż w fazie alpha i na pewnym etapie wyszły bugi ewidentnie w powłoce, którym ciężko mi zaradzić. Przepisując całość w Pascalu bazę fraz musiałem napisać niemal od nowa, gdyż wyszło nieco ukrytych niekompatybilności, typu możliwość/niemożliwość zastąpienia symbolu pustym znakiem, itd.
Jeszcze czytelniejszy od Pythona i szybszy w działaniu jest brazylijski język Lua; również jest międzyplatformowy. O językach Julia i R nie wiem nic niestety. W Pascalu skrobałem coś w dzieciństwie, potem miałem bardzo wiele lat przerwy. Wybierając język skryptowy obawiam się tego -nie wiem, na ile słusznie-, że na pewnym etapie rozrostu kodu całość się znacznie spowolni. Również stąd pomysł o nowoczesnej Ion Shell, która jest szybsza od tych popularnych, albo też o Lua. Python ponoć jest dość powolny, ale tak jak piszesz, więcej osób zna Pythona.
Python ogólnie jest wolniejszy, ale nie wiem czym bym się tym przejmował w takim projekcie. Nawet jakbyś chciał przekonwertować tym kilka gigabajtów tekstu, to i tak powinno to policzyć w parę minut obojętnie w czym napisane. Osobiście brałbym to pod uwagę dopiero, jakbym pisał jakiś serwer, z którego mają korzystać tysiące użytkowników jednocześnie, albo jakiś edytor video czy grę komputerową, co musi coś liczyć cały czas i zachować płynność, wtedy można patrzeć na benchmarki.
Zależy jak widzisz rozwój tego narzędzia i które elementy podejrzewasz mogą być ciężkie obliczeniowo, no i wiele bibliotek pythonowych jest napisane w C++ pod spodem, a w Pythonie jest tylko interfejs.
Dla porównania np. Anki jest napisane w Pythonie, no ale za wiele liczenia to tam nie ma.
Zresztą, język to raczej drugorzędna sprawa, ale bazę warto zrobić niezależną od kodu, bo ona chyba będzie tu kluczowa i przede wszystkim rozwijana?
Rozwój programu zależy w znacznej mierze od tego, czy będę miał współpracowników i jakie będą mieć Oni wizje, inicjatywy i umiejętności językowe i programistyczne–zwłaszcza te drugie u mnie są ograniczone. Z mojej strony mogę wspierać (poprawiać bugi, doszlifowywać funkcjonalność, itd.) tylko kilka jęzków, których się uczę lub na przestrzeni życia będę uczyć. Reszta już zależy od tego, czy kogokowiek ten projekt zainteresuje.
Gdy języków jest tylko kilka i są tylko moje, chyba całość może mieć postać zwartego kodu w postaci zbliżonej do obecnej. W przypadku znaczego rozbudowania programu zapewne posłucham Twojej rady i wybadam inne formaty zapisu bazy, itd. 🙂 Tylko, że czegoś takiego nie pisałem.
Konwertowanie dużych tekstów brzmi realistycznie. Mogę łatwo napisać coś takiego: podajemy w parametrze plik z tekstem (np. jakąś książkę), podajemy w innych parametrach język i co chcemy z zrobić, a paręset stron naszej książki w mig zostaje przekonwertowane w IPA!
Tutaj zaznaczę, że staram się całość pisać tak, by program rozumiał zależności pomiedzy słowami–np. w obecnym module łacińskim ostatnia głoska wyrazu ulega czasem przekształceniu w zależności od tego, jaka głoska następuje w kolejnym wyrazie, np. "n f" -> "ɱ f". O ile łacina nie jest moją mocną stroną, fonetykę języka hiszpańskiego opracuję bardzo solidnie zapewne w kilku dialektach.
Ja od strony programistycznej mogę pomóc, fajny projekt. Mógłbym opracować jakiś format zapisu i przenieść do niego to co zrobiłeś do tej pory. W sumie jak na to teraz patrzę, to nawet sam taki słownik może być przydatny jeśli jest dobrze opracowany, nawet bez samego programu.
Od językowej za wiele nie pomogę, bo znam tylko angielski. Jedyne, co mi przychodzi do głowy, to generowanie IPA dla rzeczowników w liczbie mnogiej. W znanych mi słownikach tego nie ma, no ale to jest kilka reguł na krzyż.
Tomku, jeśli możesz pomóc, to bardzo fajnie! 🙂 Zastanawiam się tylko, jak zrobić to wszystko od strony organizacyjnej… Po pierwsze, w chwili obecnej repozytorium jest na moim prywatnym GitHubie, ale jeśli mają w tym uczestniczyć ludzie z poważną ingerencją w główny kod, być może lepiej by było to przenieść na osobne konto z nazwą projektu a nie czyimś nazwiskiem w nazwie.
Jeśli jednak myślisz o tym, by zmienić język programowania na odległy mojemu Pascalowi (GUI też byś robił?), czyli np. na Pythona, możesz utworzyć forka ze zmienioną nazwą programu, którym będziesz się opiekować od strony programistycznej Ty z własnymi rozwiązaniami technicznymi jako główny programista. Natomiast ja -i mam nadzieję sporo więcej osób- będziemy pisać bazy języków, które będziesz mógł uzupełniać. Potrzebujemy tylko prosty w obsłudze format. Skoro programujesz lepiej ode mnie, może taki model współpracy ma szansę wypalić. 🙂
Obecny lng-cv w 100% w Pascalu wówczas będzie projektem "moim prywatnym" z moimi rozwiązaniami technicznymi. Każda linijka kodu napisana jest przeze mnie i tak lepiej czuję, co ten program robi–wiem, że to niecodzienne, ale mam więcej doświadczenia z Assembly niż z Pythonem.
To są luźne myśli/wątpliwości. Jak to widzisz? W każdym wypadku kod, który opublikowałem, jest na licencji MIT. Każdy kto chce, ma prawo mój kod forkować, modyfikować, udoskonalać, itd. swobodnie na zasadach określonych w licencji. Gdybyś utworzył własny projekt w innym języku programowania, ja będę mógł w Twoim projekcie długoterminowo zapewniać wsparcie dla "moich" języków (zwłaszcza hiszpański, keczua, tikuna), gdyż i tak zapewniam je w lng-cv, więc mogę to samo przepisywać na inny format, który skomponujesz.
A tak przy okazji: o językach programowania na Woofli jeszcze nie było!!!
Ok, więc chyba najprościej będzie jeśli zrobię forka i zaproponuję w nim format zapisu, na którym powinno się w miarę wygodnie pracować. Prawdopodobnie w JSONie, mam już jakiś pomysł na to. Obsługę tego napiszę w Pythonie, bo obecnie najwięcej w nim piszę i tak będzie najszybciej, ale jeśli uznasz że format jest ok, to będzie można dodać importy w Pascalu czy czymś innym.
Jakieś proste GUI na pewno jest bardziej przystępne dla ludzi niż konsola, ale o tym chyba lepiej pomyśleć jakby uzbierała się jakaś baza użytkowników. Roboty z tym nie pownno być dużo, jakieś pole do wpisania tekstu, wybranie opcji i przycisk "konwertuj". Technologii do GUI jest całe mnóstwo, z czegoś desktopowego może Qt?
Ogólnie jeśli chodzi o narzędzia do nauki/analizy języków to jest to bardzo ciekawy dla mnie temat i chętnie w czymś pomogę w miarę możliwości czasowych, w tym czy innym projekcie.
Podobnie jak Tomek, radzę zrobić osobne pliki dla różnych języków i zapisów. Zamiast kilkudziesięciu użyć tej samej metody będzie można stworzyć jakąś pętlę i skrócić kod.
Python faktycznie jest dość czytelny i znany. Ewentualnie można zrobić z tego aplikację online w JavaScript.
Od strony językowej, problemem mogą być zapożyczenia zachowujące obcą pisownię, np. polski weekend – w niektórych językach jest tego dużo więcej.
Patrzę na linijki 158-191 i dziwię się, że nie ma jakiejś prostszej metody na zamianę wielkich liter na małe. JS oferuje metody toLowerCase i toLocaleLowerCase (to drugie chyba by było szczególnie użyteczne, np. przy tureckim), Python ma metodę lower. Rozumiem, że może być celem zachowanie wielkich liter w odpowiednich miejscach, ale to lepiej chyba:
1) Utworzyć np. ciąg zer i jedynek – gdy pierwsza litera jest wielka, to pierwszym znakiem łańcucha niech będzie 1. Druga litera, jeśli jest mała – daje 0 na drugiej pozycji łańcucha.
2) Zmienić wszystkie litery na małe
3) Użyć replace wielokrotnie, zmieniając małe na małe
4) Wedle zapisanego ciągu zer i jedynek przywrócić wielkie litery
Dla wieloznaków trzeba nieco algorytm udoskonalić, ale jak się go dobrze zrobi, to pliki z regułami konwersji będą sporo krótsze. Obok wieloznaków może być jeszcze kwestia zapisu będącego pozornie jednym znakiem, ale jednak złożonym z dwóch punktów kodowych. A może niepotrzebnie komplikuję 😉
OK. Widzę, że wszyscy poza mną znają Pythona. 😀 Poważnie mówiąc: moje zainteresowania na tle języków programowania mają się podobnie jak na tle języków mówionych. Znam nieco Pascala–odpowiednik języka hiszpańskiego, a interesują mnie języki programowania będacę odpowiedniami raczej keczua (Ada) lub tikuna (Ion Shell).
Zapożyczenia zachowujące obcą pisownię nie stanowią problemu. Konwertujemy na początku kodu "lockdown" na "lokdałw", a potem poszczególne literki z "lokdałn" konwertują się na IPA na normalnych zasadach. Tylko, trzeba wypisać wszystkie popularne zapożyczenia tego rodzaju. "Australian Open" i "Tomb Raider", których jeszcze żaden Polak w telewizji poprawnie nie wymówił, ruszać nawet nie trzeba. 😛
Istnieje w Pascalu methoda zamiany wielkich liter na małe, a z powodów mi nie znanych kompilator ją ignorował–ani nie wyskakiwał błąd podczas kompilacji, ani literki się nie zmieniały. Jeszcze się temu będę przyglądać. Zera i jedynki – muszę to przeanalizować. Dziękuję! 🙂
Dobry do trzymania reguł zamiany znaków może być JSON i w nim tablica tablic dwuelementowych. XML chyba nie pozwala na coś takiego – a przynajmniej nie w szybki, wygodny sposób. YAML chyba jednak jest wyraźnie mniej znany, choć chyba i on oferuje tablice.
,,Open" chyba jest wymawiane jednak nieco inaczej niż się pisze – ale ,,Australian" faktycznie jest bez zmian (,,australian ołpen"?). W sumie faktycznie polski ma tego dość mało. Z koptyjskim mogłoby być gorzej.
Galu, to prawda, że "open" wymawia się troszkę inaczej: "ołpen", ale to polskie "australian" zawsze mnie rozbrajało.
Czyli jak, szykujesz wsparcie dla koptyjskiego? 🙂
Nie chciałbym wpaść w pułapkę tego, że najpierw proszę o opinię i sugestie, a następnie odrzucam otrzymane porady. Zwłaszcza niedobre jest to w sytuacji, gdy wszyscy komentatorzy są ze sobą w 100% zgodni w tym, co należy w moim programie zmienić.
Sęk w tym, że jakąkolwiek zasadność podziału programu na więcej plików widzę jedynie w sytuacji, jeśli program rzeczywiście rozbuduje się o obsługę bardzo wielu języków -na ten moment nie mam deklaracji od nikogo, że te języki zamierza szykować-.
Do tego momentu wolę trzymać się słusznej reguły KISS: przepraszam Panowie, ale kodu bardziej prostego i bardziej głupiego niż mój napisać się nie da. 😛 Kod jest tak prosty, że ludzki umysł zastanawiając się, jak go udoskonalić, może w rzeczywistości myśli o tym, jak go skomplikować?
Poza tym jak napisałem, sercem jestem bliższy Assembly niż Pythonowi, ogólnie programowaniu względnie niskopoziomowemu: moim odruchem jest liczenie operacji procesora, a nie liczenie linii kodu–wiem, że dla oka i tak są to różnice niewidoczne i być może w tym projekcie są zupełnie bez znaczenia. Tylko, że pod jakim względem optymalizować kod nigdy nie będzie do końca jednoznaczne.
P.S. Po wielu eksperymentach myślę, że całość przepiszę z Pascala na Lua z uwagi na lepsze wyświetlanie tekstu w terminalu.
Python chyba staje się czymś w stylu lingua franca wśród języków programowania, czy się go lubi czy nie znać warto. Jeśli chodzi o np. projekty związane z sieciami neuronowymi to już ciężko znaleźć coś, co nie jest napisane w Pythonie. Właściwie to dwie biblioteki, PyTorch i TensorFlow zdominowały rynek (co mnie zresztą cieszy, bo to bardzo wygodne biblioteki).
Przy okazji polecam stronę: https://paperswithcode.com/sota
Dużo publikacji naukowych na różne tematy (językowe również) razem z kodem źródłowym danego rozwiązania.
Jeśli zamierzasz zaangażować w to więcej osób, to będzie łatwiej zachęcić do programu w Pythonie niż do programu w Lua.
Rozważmy niemiecki:
Beten – modlić się – pierwsze ,,e" jest długie, bo jest po nim pojedyncza spółgłoska
Betten – łóżka – pierwsze ,,e" jest krótkie, bo są po nim dwie spółgłoski
t/tt jest wymawiane w obu wypadkach tak samo
Pętla iterującą po literach mogłaby dla samogłosek zbadać otoczenie i wyznaczyć długość. Przy jakichś replace, trzeba by dawać osobno ,,ett" i ,,et", osobno ,,ef" i ,,eff"… Za dużo tego. Podobnie w hebrajskim – przynajmniej biblijnym – są zasady w jakiej pozycji szwa jest czytana, a w jakiej – nie.
Najbliższy tydzień będę nieco czym innym zajęty; ponadto lepiej, zdaje mi się, wpierw doprecyzować stronę techniczną, a potem tworzyć nowe rzeczy. Co do tekstu w terminalu, w Pythonie możesz zrobić modułem tkinter ładny interfejs; a online aplikację JS możesz stylizować CSS-em.
Z koptyjskiego przerobiłem kiedyś ledwie kilka lekcji i chyba bym nie dał rady zrobić dobrego opracowania. Dużym problemem zdają się na pierwszy rzut oka nieco odmienne zasady dot. zapożyczeń greckich – przynajmniej tak jest w najpopularniejszej obecnie konwencji wymowy.
Myślę, że szczegółowe oddanie reguł wymowy każdego języka (może za wyjątkiem tych sztucznych, w których nikt nie mówi), jest trudne. Podejmując się takiego zadania z pewnością samemu można sobie wiedzę z fonetyki uporządkować i również taką ma to dobrą stronę. Ja nie mam interesu w tym, by kogoś namawiać–jedynie myślę, że samemu można programować do szuflady, a w zespole można stworzyć coś, z czego będę korzystać miliony ludzi.
Narobiliście mi pewien mętlik jeśli chodzi o najwłaściwszą technologię. 😛 Pythonowi próbowałem się już kilka razy przyglądać, ale mi z jakiegoś powodu nie podchodzi. Lua jest zarówno prostsza w składnii, jak i szybsza w działaniu. Aby napisać listę zamiany głosek nie potrzeba jakichś konkretniejszych umiejętności programistycznych.
Zaczałem część dotyczącą tikuna (cztery ortografie i dwie wymowy -próbowałem więcej wymów, ale się poddałem-) przepisywać w Rust. To samo zapewne zrobię z hiszpańskim i tak powstaną dwa dodatkowe mniejsze programiki obok tego, który już jest. Jeśli kogoś interesują wyłączne tikuna lub wyłącznie hiszpański, taki mały programik będzie wygodniejszy w obsłudze niż duży program, gdzie trzeba wybierać spośród parametrów, itd. Nie ruszając niczego w kodzie programu zmieniłem ustawienia kompilatowa Pascala–jedne bugi zniknęły, by pojawiły się w ich miejsce inne, ale jest lepiej niż było, także przepisanie tego w Lua póki co nie jest najwyższym priorytetem, trzeba było tylko włączyć tryb kompatybilności Unicode z Delphi. Tymczasem ze wstępnych testów kodu w Ruście wynika, że do końca rozwiązuje wszyskie problemy techniczne z wyświetlaniem w terminalu długich tekstów o niecodziennych znakach. Także hiszpański i tikuna będą zrobione naprawdę wyśmienicie w Rust (ale nie będę ich dzielić na jeszcze więcej plików–to już będą naprawdę małe, ale latami doszlifowywane programy).
Python ma dobre wsparcie dla unicode: utf-8 – nawet jego gui "Idle" przez run module i chyba także jego shell wyświetla bez problemu czcionkę np. syriacką, co nie można powiedzieć o zwykłej konsoli windowsowej. W każdym razie bez problemu zapisze tekst do txt z kierunkiem tekstu od prawej do lewej. Wszelkie konwertery tekstu metodą podstawiania to robota na 30 minut – z tym że dłużej trwa przepisywanie całego alfabetu. Trzeba jedynie pamiętać żeby zamieniać w przypadku alfabetów semickich najpierw samogłoski długie potem krótkie potem np. spółgloski ze znakiem podwojenia liter itd, żeby przez przypadek coś się w konwersji nie zjadło
Dzięki, Komentarzu do rozmowy! 🙂 Od stycznia/lutego program za bardzo się rozwinął, by przepisywnie na Pythona wchodziło w rachubę.
Mój program w Rust nie potrzebuje interpretatora i nie ma żadnych zależności systemowych–to pojedynczy plik binarny, który łatwo rozpowszechniać, itd. Do Pythona wciąż nie mogę się przekonać–składnia jest dla mnie nieczytelna, a język łamiąc wsteczną kompatybilność nie nadaje się dla rozwoju długoterminowego projektu (tj. trwajacego do końca mojego życia–jak będzie wyglądał Python za 40 lat nikt nie wie, a Rust owszem wciąż będzie kompilował mój dzisiejszy kod, na co "rdza" otwarcie daje gwarancje). Z "podobnych" do Pythona bardziej podoba mi się mnie Julia–ma pełne wsparcie dla Unicode, można nawet używać emotikon w nazwach zmiennych.
Przy dowolnym nowoczesnym języku to nie kodowanie stanowi problem. Istnieją tylko trzy* czcionki od SIL nadające się do zapisu tych bardziej złożonych znaków spośród IPA, a żadna z nich nie jest typu monospace: Charis SIL, Doulos SIL i -moje ulubiona- Gentium Plus. W terminalu tymczasem wyświetlać mogę tylko monospace. Także aby w pełni poprawnie wyświetlić bardziej złożone zapisy IPA konieczne jest albo zapisywać wynik do pliku (mam w programie taką opcję i polecam z niej korzystać), albo też zrobić kopiuj-wklej wyniku z terminala do dowolnego graficznego edytora tekstowego wyświetlając w jednej z tych trzech czcionek.
Rozwiązaniem byłoby stworzenie czicionki monospace do zapisu IPA–taka wedle mojej wiedzy nie istnieje.
Innym rozwiązaniem byłoby stworzenie graficznej wersji programu i tam załadowanie odpowiednich czcionek SILu -licencja SILu na to zezwala-. Można zrobić GUI w Rust, ale -może poza przeglądarką internetową- mnie osobiście klikanie okienek w komputerze wnerwia, więc sens tworzenia GUI zależy od bazy użytkowników.
*Niektóre z czionek SILu nie potrafią oddać IPA wbrew zapewnieniom na ich stronie.
Zorientowałem się, że w przypadku sieci neuronowych i IPA to nie praca na 30 minut ale chyba dużo dłużej – nie znam się na nich. Jednak ja mówiłem jedynie o konwersji czcionki np. syriackiej na transliterację ISO – to rzeczywiście w przypadku samego programu zajęło 25 minut i z niej korzystam. Jeżeli jest możliwość dobrze aby program wspierał również transliterację ISO – jako dodatkową funkcję, bo jej się dużo łatwiej nauczyć niż samego IPA. Sama konwersja czcionki na ISO jest w przypadku semickich w miarę poprawna. Jednak w przypadku niektórych języków (nieregularnych w wymowie) niestety nie możliwa
Tu fragment transliteracji właśnie tak wykonany przy pomocy programu – z listu króla Abgara. ISO trochę spolszczyłem aby było bardziej swojsko ("j" jako polskie "j" i "w" jako "ł")
abgar ūkomō: lješūʕ ōsjō ṭobō dētḥezī bātrō dūrišlem: morj̱ šlom.
Abgar Czarny do_Jezusa lekarza dobrego który_był_widziany w_krainie Jerozolimy: Panu Pokój
Dlaczego mówiłem o ISO? Bo łatwiej się nauczyć i to np. standard w podręcznikach do semickiego. IPA to wyższa szkoła jazdy
Komentarzu, oczywiście masz rację. 🙂 Nie znam żadnego języka semickiego, ale -chyba za wyjątkiem języków sztucznych- myślę, że rzadko jest to 30 minut pracy nawet w przypadku trybu ortograficznego. No może zamiana piswonii łacińskiej na starożytną faktycznie nie była skomplikowana (zerknij / src / lang / modlat . rs).
Tylko, że ja nie korzystam z sieci neuronowych–pewnie czytałeś w kilku miejscach moje dyskusje z Tomkiem, który korzysta z takich sieci w innych choć też językowych celach. Zerknij za to na mój kod tutaj: https://github.com/piotrbajdek/lngcnv
Opieram się owszem na "prostych podstawieniach", ale -w zależności od języka, itd. – proste podstawienia układają się w dość złożone ciągi (zwłaszcza w trybie IPA, mniej w trybie ortografii, ale w pewnych przypadkach również). Obecnie pracuję nad doszlifowaniem modułu języka angielskiego (Australian English), na ten moment to tylko prymitywny szkic, ale finalnie będzie to -tylko dla jednego dialektu- conajmniej kilka tysięcy drobnych podstawień ułożonych w ściśle logicznej kolejności tak, by z pisownii zrobić wymowę. W programie zapis wymowy nie jest fonemiczny lecz szczegółowy fonetyczny. Nie zamieniam też jedynie pojedynczych słów, a pełne zdania i teksty, czyli np. w języku angielskim muszę uwzględnić, jak zmiania się wymowa głosek w zależności od tego, przy jakim wyrazie jaki wyraz stoi (np. "are" w "are all" i "are you" wymawia się zupełnie inaczej w AuEng). Skomponowanie pojedynczego algorytmu to -zapewniem Cię- kwestia wielu mięsiecy intelektualnego wysiłku.
Nieco prościej było w języku hiszpańskim: ten moduł jest już względnie ładny (zobacz w / src / lang / modspa . rs), ale doszlifować muszę zwłaszcza funkcję detekcji sylaby akcentowanej, która na ten moment jest bardziej szkicem, a w języku hiszpańskim wymowa samogłosek zazwyczaj zależna jest od tego, czy sylaba jest w pozycji akcenowanej (różnice dialektalne w akcentowaniu dodam później). Ja naprawdę dobrze znam język hiszpańskim -w mowie i piśmie rozumiem na równi z językiem polskim- ale choć obecny szkic modułu mod.spa.rs ma tylko nikczemne 1569 linii kodu (niebawem się wydłuży), ułożenie go od zera zajęło mi więcej tygodni pracy niż ktokolwiek będzie skłonny mi uwierzyć. Niestety. 🙁
O, to bardzo długi program. Zdaje sobie sprawę, że to miesiące roboty – właśnie przez to że angielski jest koszmarny do tego. Ten programik zrobiony w 25 minut ma wiele mankamentów nie ma zaadoptowanej nieregularności ortograficznej to tylko dosłowne prawie 1 do 1 podstawianie znaków – dlatego zajmuje mniej niż 100 lini z komentarzami. Więc trzeba sporo po nim poprawiać. Sama konwersja semickiej ortografii zachodniej nie jest idealna, ponieważ spółgłoska Alap jest zredukowana do "o" może nie potrzebnie – aby było szybciej, bo słowa w dużej części z alapem najczęściej na końcu tak są wymawiane, wtedy wyplują się w miarę poprawnie (gdy mamy dłuższy tekst). ale i tak mnóstwo trzeba poprawiać – ale to i tak kompromis, tak wygląda zdanie wyplute przez niego (w tym zdaniu "alap" wyszło trochę nieszczęśliwie).
abgar oūkomō: lješūʕ oosjō ṭobō dētḥzī bātrō duołršlem: morj̱ šlom.
a tak po poprawieniu ręcznym:
abgar ūkomō: lješūʕ ōsjō ṭobō dētḥezī bātrō dūrišlem: morj̱ šlom.
Ale żeby wszystkie nieregularności uwzględnić to by zajęło dużo więcej czasu podobnie jak przy twoim programiku
Yana Para Puyu – samego programu nie mogę udostępnić bo pisał go mój brat- jednak prześlę w poście rdzeń programu (odpowiedniki liter do zamiany: syryjsko-łacińskie – nawiasy pochodzą z Pythona), je sam wstawiałem do programu więc myślę, że mogę udostępnić – możesz go udoskonalić i dodać do swojego programu. Zakomentowana jest jedynie litera złożona z trzech znaków (syr7 lac7), bo nie zdążyłem jej dodać do programu. Chyba, że nie chce ci się uczyć syryjskich liter. Musisz mieć zainstalowany syriacki język aby było widać czcionkę syryjską:
syr1 = ["ܰܐ", "ܳܐ", "ܶܐ", "ܺܝ", "ܽܘ", "ܾܘ", "ܘܿ", "ܐܶ", "ܐܰ"]
lac1 = ["ā", "ō", "ē", "ī", "ū", "ū", "ō", "e", "a"]
syr2 = ["ܰ", "ܱ", "ܳ", "ܶ", "ܷ", "݄", "ܺ", "ܽ", "ܴ", "ܻ", "ܾ"]
lac2 = ["a", "ä", "o", "e", "ë", "ë", "i", "u", "o", "i", "u"]
syr3 = ["ܝّ̈", "ܡّ̈", "ܬّ̈", "ܫّ̈", "ܕّ݂", "ܨّ̇", "ܙّ̃", "ܓّ̰", "ܬّ̤", "ܒّ݆", "ܒّ݂", "ܓّ݂", "ܟّ݂","ܦّ݂", "ܬّ݂", "ܚّ݂", "ܒّ݁", "ܓّ݁", "ܟّ݁","ܦّ݁", "ܬّ݁", "ܚّܿ", "ܖّ̈", "ܖّ̤", "ܓّ݂"]
lac3 = ["jj", "mm", "tt", "šš", "ḏḏ", "ḍḍ", "żż", "ǧǧ", "čč", "pp", "vv", "ġġ", "ḵḵ", "ff", "ṯṯ", "ẖẖ", "bb", "gg", "kk", "pp", "tt", "ḥḥ", "rr", "dd", "ġġ"]
syr4 = ["ܬ݈", "ܬ̱", "ܢ݈", "ܗ݈", "ܝ݈", "ܠ݈", "ܢ̱", "ܗ̱", "ܝ̱", "ܠ̱", "ܛّ", "ܒّ", "ܓّ", "ܔّ", "ܕّ", "ܗّ", "ܘّ", "ܙّ", "ܚّ", "ܜّ", "ܝّ", "ܟّ", "ܠّ", "ܡّ", "ܢّ", "ܣّ", "ܥّ", "ܦّ", "ܨّ", "ܩّ", "ܪّ", "ܫّ", "ܬّ"]
lac4 = ["t̄", "t̄", "n̄", "h̄", "j̱", "l̄", "n̄", "h̄", "j̱", "l̄", "ṭṭ", "bb", "gg", "ǧǧ", "dd", "hh", "łł", "zz", "ḥḥ", "ẓẓ", "jj", "kk", "ll", "mm", "nn", "ss", "ʕʕ", "pp", "ṣṣ", "qq", "rr", "šš", "tt"]
##syr7 = ["abc", "fds"]
##lac7 = ["d", "s"]
syr5 = ["ܕ݂", "ܕ݁", "ܬ݁", "ܐܶ", "ܐܰ", "ܨ̇", "ܙ̃", "ܓ̰", "ܒ݆", "ܡ̈", "ܫ̈", "ܝ̈", "ܬ̈", "ܬ̤", "ܒ݆", "ܒ݂", "ܓ݂", "ܟ݂","ܦ݂", "ܬ݂", "ܚ݂", "ܒ݁", "ܓ݁", "ܟ݁","ܦ݁", "ܬ݁", "ܚܿ", "ܖ̈", "ܖ̤"]
lac5 = ["ḏ", "d", "t", "e", "a", "ḍ", "ż", "ǧ", "p", "m", "š", "j","t", "č", "p", "v", "ġ", "ḵ", "f", "ṯ", "ẖ", "b", "g", "k", "p", "t", "ḥ", "r", "d",]
syr6 = ["ܔ", "ܒ", "ܓ", "،", "؟", ":", ".", "«", "»", "!", "܇", "؛", "ܕ", "ܗ", "ܘ", "ܙ", "ܚ", "ܜ", "ܝ", "ܟ", "ܠ", "ܡ", "ܢ", "ܣ", "ܥ", "ܦ", "ܨ", "ܩ", "ܪ", "ܫ", "ܬ", "ܛ", "ܐ"]
lac6 = ["ǧ", "b", "g", ",", "?", ":", ".", '"', '"', "!", ";", ";", "d", "h", "ł", "z", "ḥ", "ẓ", "j", "k", "l", "m", "n", "s", "ʕ", "p", "ṣ", "q", "r", "š", "t", "ṭ", "o"]
Tak, mój program z założenia ma uwzględnić wszystkie możliwe nieregularności, oraz podawać z maksymalną możliwą do zapisu w IPA doskładnością wymowę fonetyczną, a nie tylko wymowę fonemiczną. Jest też tryb ortograficzny, ale ten jest oczywiście mniej skomplikowany.
W tej chwili mam 6 różnych języków z 3 rodzin językowych, w tym dwa języki Indian Ameryki Pd. Dla większości języków mam po kilka różnych dialektów jednocześnie. Można np. załadować do programu książkę po hiszpańsku i w sekundę w pliku wynikowym dostać tysiąc stron szczegółowego IPA w 5 różnych dialektach!
Na ten moment wcale nie jest taki duży–tylko 6719 linii kodu na dziś, ale w ostatnim czasie kod się bardzo skracał i skracał dzięki udoskonaleniom natury już czysto technicznej-programistycznej. W swoim czasie już chyba przekraczałem 10000 linii, ale staram się jakoś ten kod optymalizować… Na przykładzie modułu języka hiszpańskiego chyba najlepiej widać, że to co się da dla różnych dialektów zrobić wspólnie, zakodowane jest bez powtórzeń, a koduję bardziej różnice pomiędzy dialektami.
Szkoda, że ten Twój programik semicki nie jest dostępny. Twój brat nie udostępniłby go na otwartej licencji tak, byś mógł program rozwinąć? Zdaję sobie sprawę z tego, że doszlifowanie programu jest masakrycznie żmudne (nawet gdy się wydaje, że wszystko jest gotowe, nagle pojawią się bugi programistyczne lub nieuwzględnione wyjąti językowe), ale zrobienie czegoś takiego to fantastyczna sprawa. Dlaczego tak męczyć się np. z angielskim? Po tym jak zacząłem pracować nad algorytmem dla angielskiego naprawdę podniósł się mój poziom… 😉
Mój brat rzeczywiście napisał program w 25 minut, jak wpadłem do niego- napisał mi go na prezent – ale nie chcę go pytać, czy by go udostępnił bo by się pewnie zdenerwował.
Kurczę, to napisz własny program! Od zera.
Próbowałem, jednak to co zajmowało mojemu bratu 20 minut mi by zajęło pewnie miesiąc, za słaby jestem z programowania, dla mnie to wykańczające umysłowo – a ktoś to potrafi zrobić znacznie szybciej i bez większego wysiłku. Ja się do tego nie nadaję. Przykro mi i trochę głupio – także trochę wstyd, że jestem taki słaby w tym, bo chętnie bym program jeszcze rozwinął, ale to za ciężkie dla mnie.
Też poległem próbując Pythona…, który popularnie uchodzi za super łatwy. 😉 Za to z przyjemnością programuję w Rust (rozwijam 4 programy w Rust, w tym 1 językowy i 2 naukowe), który popularnie uchodzi za super trudny…
Być może musi Ci język programowania ze swoją specyficzną składnią i filozofią podejść podobnie jak języki mówione podchodzą lub nie podchodzą każdemu indywidualnie.
Ogólnie rzecz biorąc łatwo jest napisać w Pythonie coś, ale idzie zgłupieć zanim napisze się coś, co działa… [moja perspektywa/ subiektywna opinia] Z Rust jest dokładnie na odwrót–niby ciężej jest coś napisać, ale niemal niemożliwe jest skompilować kod, który nie będzie potem działać–jeśli cokolwiek jest nie tak, kompilator krzyczy. Przez to pisanie w Rust to przyjemność i relax i mogę skupić się np. na lingwistyce zamiast na ręcznym łowieniu bugów i zastanawianiu się co jest źle z kodem, czego mi interpretator nie raczył powiedzieć.
Do Twoich celów chyba by się nadała Julia–język dwadzieścia lat nowocześniejszy i o sensowniejszej składni od Pythona, ale na ten moment słabiej udokumentowany.
mała podpowiedź – te literki syryjsko łacińskie są tak zrobione że to jest lista w pythonie chyba na zasadzie wyszukaj literki z, listy i jeżeli znajdziesz zastąp index 3 z listy syr. na 3 index lac. z listy łac. – do tego chyba zrobiona pętla aby nie trzeba było ręcznie indexów wpisywać. Taka podpowiedź myślę wystarczy. Brzmi prosto ale ja nie mogłem sobie z napisaniem poradzić. Na koniec plik zapisywany do txt oczywiście jako tekst ciągły. Zapisuje już od lewej do prawej, jak to ma w specyfice łacińska czcionka.
Nie rozumiem po co robić komuś mętlik w głowie mówiąc o indexach -w Assembly tego nie piszesz-, ale jeszcze bardziej nie rozumiem po co jakaś pętla w tym wszystkim. (Jak wspominałem, nie rozumiem Pythona.) Można prościej… Ja w Rust robię string slice i w moim stringu po kolei zamieniam literki. Żadnej filozofii. W najprostszej postaci:
let result = original_text
.replace("o", "u")
.replace("O", "U")
.replace("e", "i")
.replace("E", "I");
Oto ten jakże trudny elitarny Rust. 😉
Próbowałem opublikować program w poście – zrobiony według twoich wytycznych, ale woofla nie wiem dlaczego go w poście nie akceptuje (spolszczona transliteracja ISO syriackiego)
Jak można przesłać ci program z syriackim w Pythonie?
Chyba problem jest w długości bo aż 165lini. Spróbóję – wysłać fragment poprzedniego czy wogóle przejdzie przez wooflę:
syr1 = ["ܰܐ", "ܳܐ", "ܶܐ", "ܺܝ", "ܽܘ", "ܾܘ", "ܘܿ", "ܐܶ", "ܐܰ"]
lac1 = ["ā", "ō", "ē", "ī", "ū", "ū", "ō", "e", "a"]
syr2 = ["ܰ", "ܱ", "ܳ", "ܶ", "ܷ", "݄", "ܺ", "ܽ", "ܴ", "ܻ", "ܾ"]
lac2 = ["a", "ä", "o", "e", "ë", "ë", "i", "u", "o", "i", "u"]
syr3 = ["ܝّ̈", "ܡّ̈", "ܬّ̈", "ܫّ̈", "ܕّ݂", "ܨّ̇", "ܙّ̃", "ܓّ̰", "ܬّ̤", "ܒّ݆", "ܒّ݂", "ܓّ݂", "ܟّ݂","ܦّ݂", "ܬّ݂", "ܚّ݂", "ܒّ݁", "ܓّ݁", "ܟّ݁","ܦّ݁", "ܬّ݁", "ܚّܿ", "ܖّ̈", "ܖّ̤", "ܓّ݂"]
lac3 = ["jj", "mm", "tt", "šš", "ḏḏ", "ḍḍ", "żż", "ǧǧ", "čč", "pp", "vv", "ġġ", "ḵḵ", "ff", "ṯṯ", "ẖẖ", "bb", "gg", "kk", "pp", "tt", "ḥḥ", "rr", "dd", "ġġ"]
syr4 = ["ܬ݈", "ܬ̱", "ܢ݈", "ܗ݈", "ܝ݈", "ܠ݈", "ܢ̱", "ܗ̱", "ܝ̱", "ܠ̱", "ܛّ", "ܒّ", "ܓّ", "ܔّ", "ܕّ", "ܗّ", "ܘّ", "ܙّ", "ܚّ", "ܜّ", "ܝّ", "ܟّ", "ܠّ", "ܡّ", "ܢّ", "ܣّ", "ܥّ", "ܦّ", "ܨّ", "ܩّ", "ܪّ", "ܫّ", "ܬّ"]
lac4 = ["t̄", "t̄", "n̄", "h̄", "j̱", "l̄", "n̄", "h̄", "j̱", "l̄", "ṭṭ", "bb", "gg", "ǧǧ", "dd", "hh", "łł", "zz", "ḥḥ", "ẓẓ", "jj", "kk", "ll", "mm", "nn", "ss", "ʕʕ", "pp", "ṣṣ", "qq", "rr", "šš", "tt"]
syr7 = ["ܕ݂̈" , "ܨ̇̈", "ܙ̃̈", "ܓ̰̈", "ܬ̤̈", "ܒ݆̈", "ܒ݂̈", "ܓ݂̈", "ܟ݂̈","ܦ݂̈", "ܬ݂̈", "ܚ݂̈", "ܒ݁̈", "ܓ݁̈", "ܟ݁̈","ܦ݁̈", "ܬ݁̈", "ܚܿ̈" , "ܓ݂̈"]
lac7 = ["ḏ", "ḍ", "ż", "ǧ", "č", "p", "v", "ġ", "ḵ", "f", "ṯ", "ẖ", "b", "g", "k", "p", "t", "ḥ", "ġ"]
syr5 = ["ܕ݂", "ܕ݁", "ܬ݁", "ܐܶ", "ܐܰ", "ܐܳ", "ܨ̇", "ܙ̃", "ܓ̰", "ܒ݆", "ܡ̈", "ܫ̈", "ܝ̈", "ܬ̈", "ܬ̤", "ܒ݆", "ܒ݂", "ܓ݂", "ܟ݂","ܦ݂", "ܬ݂", "ܚ݂", "ܒ݁", "ܓ݁", "ܟ݁","ܦ݁", "ܬ݁", "ܚܿ", "ܖ̈", "ܖ̤"]
lac5 = ["ḏ", "d", "t", "e", "a", "o", "ḍ", "ż", "ǧ", "p", "m", "š", "j","t", "č", "p", "v", "ġ", "ḵ", "f", "ṯ", "ẖ", "b", "g", "k", "p", "t", "ḥ", "r", "d"]
syr6 = ["ܔ", "ܒ", "ܓ", "،", "؟", ":", "܀", ".", "«", "»", "!", "܇", "؛", "ܕ", "ܗ", "ܘ", "ܙ", "ܚ", "ܜ", "ܝ", "ܟ", "ܠ", "ܡ", "ܢ", "ܣ", "ܥ", "ܦ", "ܨ", "ܩ", "ܪ", "ܫ", "ܬ", "ܛ", "ܐ"]
lac6 = ["ǧ", "b", "g", ",", "?", ":", ".", ".", '"', '"', "!", ";", ";", "d", "h", "ł", "z", "ḥ", "ẓ", "j", "k", "l", "m", "n", "s", "ʕ", "p", "ṣ", "q", "r", "š", "t", "ṭ", "o"]
Program w 6 częściach – może przejdzie przez wooflę; częsć 1:
x = open("plik.txt", encoding ="utf-8").read()
x1 = x.replace("ܰܐ", "ā")
x2 = x1.replace("ܳܐ", "ō")
x3 = x2.replace("ܶܐ", "ē")
x4 = x3.replace("ܺܝ", "ī")
x5 = x4.replace("ܽܘ", "ū")
x6 = x5.replace("ܾܘ", "ū")
x7 = x6.replace("ܘܿ", "ō")
x8 = x7.replace("ܐܶ", "e")
x9 = x8.replace("ܐܰ", "a")
x10 = x9.replace("ܰ", "a")
x11 = x10.replace("ܱ", "ä")
x12 = x11.replace("ܳ", "o")
x13 = x12.replace("ܶ", "e")
x14 = x13.replace("ܷ", "ë")
x15 = x14.replace("݄", "ë")
x16 = x15.replace("ܺ", "i")
x17 = x16.replace("ܽ", "u")
x18 = x17.replace("ܴ", "o")
x19 = x18.replace("ܻ", "i")
x20 = x19.replace("ܾ", "u")
x21 = x20.replace("ܝّ̈", "jj")
x22 = x21.replace("ܡّ̈", "mm")
x23 = x22.replace("ܬّ̈", "tt")
x24 = x23.replace("ܫّ̈", "šš")
x25 = x24.replace("ܕّ݂", "ḏḏ")
x26 = x25.replace("ܨّ̇", "ḍḍ")
x27 = x26.replace("ܙّ̃", "żż")
x28 = x27.replace("ܓّ̰", "ǧǧ")
Niestety następne części nie przechodzą – jakby uznane za spam – więc sobie podaruję. Musisz program zrobić według tego schematu tylko, że na końcu dodać takie coś:
x159 = x158.replace("ܬ", "t")
x160 = x159.replace("ܛ", "ṭ")
x161 = x160.replace("ܐ", "o")
open("transliteracja zachodnia.txt", "w", encoding="utf-8").write(x161)
"plik.txt" w utf-8 musisz utworzyć i zaapisać tam tekst z syriacką czcionką
wynikowy "transliteracja zachodnia.txt" sam ci się utworzy po uruchomieniu programu
Komentarzu,
Dziękuję za kod… Ja nie uczę się ani syriackiego, ani Pythona. Bardziej miałem na myśli, że rozwinięcie i opublikowanie Twojego kodu może przydać się (a) Tobie w nauce lub użytkując i (b) osobom uczącym się syriackiego lub (c) chcącym zbudować podobny program nawet obsługujący inny język.
Z tym, że musiałbyś swój kod opublikować np. na GitHubie lub GitLabie, a nie w komentarzu na Woofli, gdzie nikt go nawet nie znajdzie. Na marginesie, ponieważ nie załączyłeś licencji, raczej nie mam prawa nie tylko na Twoim kodzie budować, ale nawet go uruchomić. 😉
Z kwestii technicznych:
(1) Nie wiem, jak zrobić to w Pythonie -w Rust to rozwiązałem jak widzisz-, ale jeśli to możliwe zrezygnuj z numeracji tych x-ów. Początkowo -i jeszcze do niedawna- moj kod działał na Twojej zasadzie, gdyż był przepisany na Rust z Pascala, gdzie to miałem tak rozwiązane. Jeśli cokolwiek zmienisz w środku kodu, trzeba jednak będzie dostosować numerki, co w skrajnym przapadku zajęło mi… kilka godzin. Teraz nie stosuję numerków i edytować jest łatwo (oraz program mi się odchudził w kilobajtach i w czasie kompilacji):
let result = original_text
.replace("o", "u")
.replace("O", "U")
.replace("e", "i")
.replace("E", "I");
(2) Ja bym plik załadował z argumentu podanego w wierszu poleceń. W Pythonie wygląda to chyba tak:
import sys
plik = sys.argv[1]
Teraz plik chyba możesz podstawić (bez cudzysłowia?) tam, gdzie obecnie jest plik.txt w cudzysłowiu. Wówczas nikt nie będzie musiał edytować za każdym razem kodu lub nazwy pliku, by odpalić program.
PS. Zauważyłem, że w moim przykładzie w Rust powyżej używam typów string tam, gdzie można użyć typów char:
.replace("o", "u")
zamienić na:
.replace('o', "u")
Pierwszy ze znaków (ale nie drugi!) będzie w pojedynczym cudzysłowiu, a nie w podwójnym cudzysłowiu. Różnica w działaniu nie będzie dostrzegalna dla ludzkiego oka w przypadku krótkiego kodu i krótkiego tekstu do przekonwertowania, ale metoda z char jest dla komputera szybsza.
Jeśli Python rozumie tę różnicę (ale w Pythonie typy to dla mnie czarna magia), to też sobie zamień tam, gdzie się da zamienić. Jakkolwiek zoptymalizujesz Pythona i tak będzie kilkadziesiąt-kilkaset razy wolniejszy od Rust.
Licencją jest moje słowo. Możesz go wykorzystać jak tylko chcesz. W nim żadnej filozofii nie ma. Poza tym licencji na alfabet po prostu uważam że nie ma.Ten post możesz potraktować jako licencję. A na githubie to wstyd taki program zamieszczać, gdyż jest niereużywalny – tak jak mówiłeś ze względu na te zmienne (x1….). Niestety nie wiem jak się w Pythonie ich pozbyć. Do zaczerpnięcia literek (ten pierwszy fragment programu możesz wykorzystać – tak jak powiedziałem litery są ułożone w nim w tej samej kolejności jak w tym z replacami ( czyli tak jak w tym: syr1 lac1, syr2 lac2…). Ja githuba nie chcę zakładać. Ale jak zauważyłeś 5 postów wcześniej (uzupełniłem brakujący fragment syr7 lac7) – także program jest chyba skończony i literki możesz wykorzystać, bo na nie licencji nie ma i nie powinno chyba być.
Żeby bardziej do transliteracji Iso (nie spolszczonej pasowało), musisz zamiast "v" wpisać "ḇ", zamiast "j" wpisać "y", a zamiast "ł" wpisać "w"
Nie widzę wstydu w zamieszczaniu mądrych rzeczy (jak syriacki) na GitHubie -zawsze możesz je doszlifować, ulepszyć, o co od początku mi chodziło-, ale przekonywać Cię nie będę. Jakie popłynęły dla Ciebie korzyści z zamieszczenia kodu w komentarzu na Woofli?
Licencja jest absolutnie niezbędna -uwierz mi-, choćby taka (przy specyficznym poczuciu humoru):
https://spdx.org/licenses/WTFPL.html
Ja nie będę w lngcnv opracowywać syriackiego. Z rodziny afroazjatyckiej najbardziej ciekawi mnie (starożytny) egipski. Nad konwersją pisma egipskiego na IPA (przynajmniej spółgłoski) się zastanawiałem i techniczne wydaje się to możliwe do zrobienia, ale na ten moment mam inne priorytety.
Jakie korzyści? – dla mnie nie, ale dla uczących się syriackiego już tak. Każdy czytający ten komentarz bez problemu przepisze program według tego wzorca. Ja się cieszę, że mogłem pomóc – w nauce i tyle. Ale githuba zakładać nie zamierzam, bo się na nim nie znam.
Szkoda, że nie dodasz wsparcia dla transliteracji syriackiej w swoim programie. Liczyłem na to, że się przekonasz do niej. Ale trudno. Nie mniej przepraszam, że ci tyle czasu zabrałem.
Nie znam syriackiego. Nie będę mógł zapewnić wsparcia dla języka, którego nie znam, którego się nie uczę, ani o którym nie mam minimalnego pojęcia. Jeśli coś będzie źle w syriackim, nie będę potrafił tego poprawić. Nie mogę się też podpisać pod czymś, czego ja nie zrobiłem. Nawet gdybym mimo wszystko chciał Twoją pracę wykrzystać, Twój program nie ma licencji, więc mi na to nie pozwalasz.
Syriackim powinna zaopiekować się osoba taka jak Ty, która zna ten język i może zapewnić syriackie wsparcie rzetelnie i z pierwszej ręki od osoby znającej ten język. Stworzyłem technologię, udostępniłem publicznie, bezpłatnie i na bardzo swobodnej licencji. Każdy może mój program forkować, wyciąć z niego te sześć obecnych języków i wstawić w ich miejsce własny język, np. syriacki.
Ja rozumiem więcej w inuktitut i swahili niż po syriacku, a z afroazjatyckich najbardziej ciekawi mnie egipski. Po egipsku są nawet ciekawe książki do poczytania: https://mjn.host.cs.st-andrews.ac.uk/egyptian/texts/corpus/pdf/Peasant.pdf
Dzięki za polecenie książek – zerknę. Jakbyś kiedyś chciał się nauczyć syriackiego to polecam uczyć się z materiałów Interlinearnych takich jak ten – tłumaczenie słowo w słowo:
https://www.amazon.pl/Between-Twilights-Interlinear-Translation-Orthodox/dp/1693971550/ref=sr_1_1?qid=1666019159&refinements=p_27%3AAnt%C3%B3n+Bousquet&s=books&sr=1-1
Ale w tej powyższej publikacji nie ma transliteracji.
Można się nauczyć samego czytania syriackiej czcionki na dialekcie Ṭuroyo – teksty z transliteracją:
https://surayt.bethmardutho.org/exist/apps/e-surayt/1603
https://surayt.bethmardutho.org/exist/apps/e-surayt/1801
Do niektórych tekstów na tej stronie niestety nie ma transliteracji:
jak do tekstu o Abgarze – pierwszym królu chrześcijańskim:
https://surayt.bethmardutho.org/exist/apps/e-surayt/2539
Ale wtedy pomocnym byłby ten program.
Ortografia dialektu Ṭuroyo nie jest ustandaryzowana. Na innych stronach kopiując ortografię klasycznego zaimka rodzajnik ū tak wygląda: ܗ̱ܽܘ ,a na tej powyższej ܐܽܘ
Można też się uczyć z tekstów już znanych biblijnych (strona w trzech dialektach https://rinyo.org/Bible).
YPP, zauważ że Komentarz do Rozmowy pisze nie o zapisie fonetyki, a o transliteracji. Zrobienie transliteracji jednego pisma w drugie pismo raczej nie wymaga znajmości języka, a po prostu znalezienia tabelki. Nie wiem tylko czy jest sens – transliteracja może miała sens jak były problemy z drukiem dziwnych pism; obecnie to raczej mały problem.
Co do egipskiego, to słyszałeś może, że tegoroczny noblista z fizjologii i medycyny zajmował się egiptologią?
Galu, rzecz nie w tym, czy transliteracja syriackiego pisma jest prosta, czy trudna do zrobienia – po prostu ja nie zobowiązuję się do końca życia zajmować syriackim, bo ktoś mi to zasugerował w komentarzu. Do końca życia za to będę zajmować się np. hiszpańskim, tikuna, angielskim, itd. Dzięki temu mogę zapewnić tym językom długoterminowe wsparcie w moim programie.
Prawdę mówiąc nigdy mnie nagrody Nobla nie interesowały. Nie sprawdzam kto wygrał i za co. Wiem tyle, że do pokojowej nagrody Nobla zdarzało się nominować i terrorystów.
Mogę w sumie spróbować części dot. łaciny i angielskiego przepisać na Python, zobaczysz, czy Ci się podoba 🙂 Albo na JS 😉
Galu, myślę tak… Łacinę znasz tysiąc razy lepiej ode mnie. W dziesiątkach komentarzy odnosisz się do języków, o których nie wiem nic. Cenne by było, gdybyś któreś z nich opracował i zaoferował się je długoterminowo -ale w miarach dostępnego czasu- wspierać (usuwając ewentualne bugi, itd.).
Nie masz ani jednej uwagi do mojego opracowania łaciny. Masz zastrzeżenia do mojego wyboru języka programowania. Samo podstawienie symbolu pod symbol w stringu jest banalnie proste niezależnie od tego w jakim języku będziemy pisać:
Python:
x2 = x1.replace("a", "ɐ")
Lua:
x2 = string.gsub(x1, "a", "ɐ")
Pascal:
x2 := StringReplace(x1, 'a', 'ɐ', [rfReplaceAll]);
Rust:
let x2 = &x1.replace("a", "ɐ");
Mógłbym pisać całość w dowolnym języku i każdy człowiek z blisko zerowymi umiejętnościami programistycznymi (podobnymi do moich 😉 ) perfekcyjnie poradzi sobie z tym, by np. podstawić IPA pod alfabet! Wystarczy zrobioć kopiuj-wklej kodu i podstawić inne symbole…
Każdy z tych czeterech języków ma wady i zalety. Wedle mojej wiedzy najlepszy byłby Rust, ale jest najtrudniejszy. Na ten moment plan mam taki: większy program o bardziej złożonym kodzie będę pisać w Pascalu -w którym bardziej komfortowo się czuję może dlatego, że pisałem w nim w dzieciństwie- lub ewentualnie w Lua. Najciekawsze języki (hiszpański, tikuna) doczekają się ponadto prostszej programistycznie wersji napisanej w Rust. W momecie gdy poczuję, że ogarniam w sensownym stopniu Rust, prawdopodobnie przepiszę w Rust też większy program, który do tego czasu będzie rozwijany w Pascalu.
Wiesz, na sensownym poziomie to jest może z 5 języków, reszta to bardziej wiedza o języku niż znajomość języka. Po kilku lekcjach koptyjskiego można mniej-więcej umieć coś odczytać, znać kilka cech gramatyki i z 40 słów, ale trudno coś zrozumieć z lektury apokryfów.
O łacinie to widzę, że wybrałeś wymowę restytuowaną. Ja jednak, uczciwie mówiąc, jestem przyzwyczajony do tradycyjnej północnoeuropejskiej ([cicero]), trochę też miałem do czynienia z tradycyjną włoską ([cziczero]). Z restytuowanej to coś tam z grubsza wiem, ale jednak nigdy mnie specjalnie nie interesowały bardziej szczegółowe rozważania. Można by się długo spierać, czy lepiej czytać Cycerona tak jak on sam mówił, czy czytać Tomasza z Akwinu tak jak ten mówił. Do tego typu programu chyba najlepiej jednak dać możliwie dużo opcji wyboru.
Jak teraz patrzę, to brakuje uwzględnienia tego, co się pojawia w zapożyczeniach z greki (ch, ph, th, z) oraz dyftongów (ae, oe).
Galu, o tym, jak zmieniały się "oe" i "ae" od (1 ) starej łaciny, przez (2) łacinę klasyczną, po (3) późną łacinę czytałem w kilku miejscach pisząc program. Zdaje się, że za życia Cycerona typowa była wymowa właśnie taka, jaką podaje program, czyli jako [ɐɛ] i [ɔɛ] i najwyżej mogę w nowszej poprawce do programu (już niebawem) podkreślić, że są to dyftongi: [ɐɛ̯] i [ɔɛ̯].
Łacińska ewolucja [ɐɪ ] -> [ɐɛ̯] -> [æː] przypomina mi pewne przemiany głosek w rozwoju tikuna.
Z tego co czytałem jest dużo niewiedzy o tym, jak wymawiane były greckie zapożyczenia i są różne możliwości z "z", co komplikje fakt, że choć jedni Rzymianie grekę znali, większość ludzi greki nie znała, więc czyją wymowę odwzorować? Tymczasem "ch", "ph", "th" w programie wymowiane są jako aspirowane, ale nie ma techniczej możliwości wstawić [h] w superscripcie w terminalu (niezależnie od języka programowania).
Łaciny kościelnej nie zrobiłem póki co, gdyż jest tyle jej wariantów i, że ciężko powiedzieć które wybrać, a ostatecznie jest to i tak w gruncie rzeczy wymawianie łaciny według zasad dajmy na to języka polskiego lub włoskiego.
W linijkach 158-312 nie mogę znaleźć ani AE, ani OE. Czy nie mówisz może o nowszej, jeszcze nieudostępnionej, wersji?
Podobne przemiany zaszły z greckimi αι i οι.
Dla wymowy włoskiej chyba faktycznie nie ma różnic z obecną wymową włoskiego, ale wymowa tradycyjna stosowana w Polsce zdecydowanie nie jest taka jak wymowa języka polskiego. Zresztą, dość podobne reguły są i w wymowie niemieckiej – https://de.wikipedia.org/wiki/Deutsche_Aussprache_des_Lateinischen (chyba i bez znajomości niemieckiego da się nieco zrozumieć). Też wymowa włoska ma wyjątkową popularność w kręgach kościelnych i sporo księży katolickich będzie ją stosować, nawet nie będąc związanymi z Włochami.
Mogą być pewne różnice między wymową łaciny wulgarnej i łaciny wzorcowej-standardowej. Ale to chyba lepiej się oprzeć o tę wymowę wzorcowo-standardową, raczej prędzej będą analizowane programem mowy Cycerona niż graffitti z Pompejów.
Galu, a po co osobno wpisywać na listę "ae" i "oe" skoro były w tym okresie wymawiane jak "a"+"o", oraz jak "o"+"e"? Wystarczy zakodować wymowę dla "a", "o" i "e"… Zamiast patrzeć na listę, uruchom program i wpisz frazę. Jedyne co, to dla większej ścisłości w nowszej wersji (jeszcze nieudostępnionej) mogę zaznaczyć, że druga z samogłosek w tej kombinacji jest nonsyllabic.
Wedle mojego obecnego stanu wiedzy nie jest prawdą, że w czasach łaciny klasycznej mówiło się "ɐɪ" i "ɔɪ", jak podaje się w wielu miejscach w necie–taka wymowa owszem była, ale w nieco wcześniejszych stuleciach za starej łaciny. Łacina klasyczna miała wymowę bardzo zbliżoną do pisma: "ae" -> [ɐɛ̯], "oe" -> [ɔɛ̯]. Skądś się taki właśnie, a nie inny zapis wziął! Do tego za łaciny klasycznej nie było tak silnego rozszczepienia pomiędzy tzw. mową wykształconą, a ludową, jaki wykształcił się za późnej łaciny.
Program "z" interpretuje jako dźwięczną głoskę [z] i nie mam na ten moment lepszego pomysłu. Ponadto przyjąłem, że w niektórych pozycjach "s" się lekko udźwięcznia do [s̬], lecz nie przechodząc w pełne [z]:
[s̺d] -> [s̬d]
[s̺ɡ] -> [s̬ɡ]
[s̺m] -> [s̬m]
[s̺n] -> [s̬n]
Tymczasem "s" jest apikalne: [s̺]. U mnie [s̺] i [s̬] to dwa różnie dźwięki, więc trzeba czytać uważnie (tylko trzeba patrzeć na wynik końcowy po uruchomieniu programu, a nie na któryś z etapów zamiany po środku kodu).
Odnośnie polskiej wymowy, to poza paroma wyjątkami typu "ae", "oe" itp., znacza większość głosek wymawiana jest na zasadach języka polskiego.
Jest jeszcze taka sprawa–istotna. W chwili obecnej w programie jest przyjęte, że krótkie łacińskie "i" wymawiane jest jako [ɪ] w odróżnieniu od długiegło "i", które jest wymawiane jako [iː]. Chyba wszystkie źródła pisane na temat łaciny, jakie skonsultowałem, tak sprawę przedstawiają.
Pamiętam jednak, że główny internetowy ekspert od łaciny na YouTube -L. Amadeus Ranierius- transkrypcję krótkiego "i" jako [ɪ] krytykuje, głównie argumentując, że w językach romańskich takiej głoski nie ma.
W zasadzie nie mam jednak wątpliwości, że głoska "i" w wersjach krótkiej i długiej musiała różnić się czymś więcej niż jedynie długością, przy czym krótka powinna być bardziej otwarta od długiej analogicznie jak w łacińskich parach [ɛ], [eː]; [ɔ], [oː] i [ʊ], [uː].
Zastanawiam się więc nad tym, by zmienić [ɪ] na close-mid [i̞], które cechuje się tym samym stopniem otwarcia co [ɪ], ale w nowszej wersji głoska będzie bardziej frontalna (i brzmi naturalnie przynajmniej w języku hiszpańskim).
Tylko, że mam wątpliwości, czy wówczas nie powinienem konsekwentnie zamienić [ʊ] na [ʊ̱] lub [u̞]. Takie dzikie transkrypcje jak [ʊ̱] lub [u̞] chyba tylko ja robię, ale np. w tikuna, gdzie kilka fonemów różni się "niemal niczym", precyzja jest ważna.
Ok, zgadzam się. Faktycznie patrzyłem bardziej na kod niż na wyniki 😉 Z OE to chyba tak, ale z AE mam kilka wątpliwości.
Greckie αι, czytane wpierw [ai], później [e], świadczy o tym m.in. że przy zapożyczeniach do koptyjskiego odpowiada mu e. W łacinie αι zapisywano jako ae, nie jako ai. W drugą stronę, łacińskiemu ae odpowiadało greckie αι, nie αε (Καισαρ – na pewno w NT jest taki zapis) W np. słowie αετος jest właśnie αε, więc jest w grece możliwe takie połączenie.
Zdaje się, że greckie ζ w okresie klasycznym wymawiano jak [dz]. W koine miała przejść w [z]. Pytanie kiedy dokonano jakich zapożyczeń i jak się zmieniała ich wymowa. Aż tak się w historię języka nie zagłębiałem. Na pewno jednak bezpośrednio* przed wprowadzeniem greckich zapożyczeń nie było w łacinie Z i nie było [z] ani [dz].
Trochę chyba zaczyna mnie temat przerastać 😐 trudno jednak o okazję do rozmowy w łacinie lub grece starożytnej i zawsze były ważniejsze rzeczy do uczenia się niż szczegóły wymowy.
*ściśle mówiąc, Z było wcześniej, ale zostało usunięte i potem po kontaktach z Grekami wróciło na nowo, w nowym miejscu w alfabecie (wcześniej było bliżej początku, jak greckie ζ).
Galu, mylisz się! 🙂 W łacinie międzysamogłoskowe "s" aż do połowy 4 wieku p.n.e. było wymawiane jako dźwięczne [z] (po czym miejscami przeszło w [ɹ]: honos -> honor). W późniejszych czasach w różnych pozycjach "s" się udźwięczniało (a ja zaznaczam jako udźwięcznione [s̬] tylko te, które uznałem za "najbardziej pewne"). Rzymianie jak najbardziej byli w stanie wymówić [z].
O tym dlaczego greckie "αι" zapisywano jako "ae" trzebaby doczytać (ja greki nawet nie znam), ale tak jak piszesz, pytanie brzmi, kiedy dokonano tych zapożyczeń… W łacinie w okresie klasycznym "ae" odpowiadało "ai" łaciny starej, przedklasycznej. Jeśli w okresie klasycznym Rzymianie już nie posiadali dyftongu [ɐɪ], lecz wykształciuchy mówiły [ɐɛ̯] zaś prostacy mówili nawet [æː], być może wyrazy greckie po prostu zaadaptowano wedle zaktualizowanej pisowni i wymowy?
Jeszcze odnośnie [ʊ]… Głoska [ʊ] występuje w moim dialekcie hiszpańskiego [andyjski wariant kolumbijskiego], ale gdy o tym myślę, przypuszczam, że jest zapożyczeniem z jakichś języków andyjskich o systemie fonetycznym zbliżonym do keczua. W analogicznych pozycjach w Madrycie pojawia się [ɔ̝] (a moje uszy cierpią kaktusze). Myślę, że dokonam zamiany [ɪ] na [i ̞] w łacinie, ale to [ʊ] mimo wszystko pozostawię, dopóki nie będę wiedział, co z nim zrobić.
Yana Para Puyu: tak jak pisaliśmy, przygotowałem format zapisu plików w JSONie razem z implementacją w Pythonie (ale w większości języków powinno się takie pliki łatwo dać wczytać).
https://github.com/tomek-siuda/lng-cv
Słowniki przeniosłem do osobnej tablicy "tasks", jakby na przyszłość stosować także inne algorytmy konwersji oprócz "replace_all" tak jak teraz.
Zmieniłem trochę składnię podania argumentów, oraz dodałem flagę –reverse, który zamieni frazy na odwrót niż podane w plikach (co ma sens przy konwersji ortografii angielskiej, z brytyjskiej na amerykańską i odwrotnie).
Przykład wywołania:
python main.py –language eng –mode ort –text="celing deling yeling" –reverse
Testowałem na Pythonie 3.8 i wszystkie zaimportowane biblioteki powinny być w bibliotece standardowej.
Jeśli możesz w wolnej chwili przejrzeć te JSONy czy wszystkie znaki dobrze przeniosłem.
Yana Para Puyu, Gal: jeśli uważacie, że to jest ok i chcielibyście na tym repozytorium pracować/forkować, to śmiało 🙂
No, nieźle, doczekałem się pierwszego forka! Tomku, super! 🙂 Zastanawiam się tylko, czy przy tych zmianach nie należy tego nazwać np. lng-cv-python lub coś w tym stylu? Oraz, czy nie powinieneś do licencji dopisać dodatkowej linii z dopiskiem swojego nazwiska (powyżej tej, gdzie jest moje)–jakby nie patrzeć, to już Twoja robota, zasługa, itd. 🙂
Postaram się ogarnąć to wszystko pod względem informatycznym.
Z tego co widzę kopiowałeś z najnowszej wersji v1.0.1, więc prawdopodobnie jest dobrze. Przepraszam za zamieszanie–pracuję nad kolejną porcją poprawek do łaciny (v1.0.2), które powinny być już wersją dość stabilną. Zamieszanie wynika stąd, że tzw. łacina klasyczna to okres aż 4 stuleci, na przestrzeni których wymowa się zmieniała. Muszę się zdecydować na coś bardzo konkretnego i przedstawić to najlepiej jak to możliwe.
Czytam właśnie Romance Linguistics: Theory and Acquisition. Selected papers from the 32nd Linguistic Symposium on Romance Languages (LSRL), Toronto, April 2002
P.S. Mój kod działa w jedną stronę: konwertuje pisownię brytyjską (i nie tylko: również australijską podobną do brytyjskiej) na amerykańską, ale uruchomiwszy go w stronę odwrotną, tj. z amerykańskiej na brytyjską wyjdą głupoty choćby przez to, że nie odróżni, czy "defense" jest czasownikiem, czy rzeczownikiem (i wiele innych problemów w tym stylu). Poza tym, nie wyjdzie nam pisownia brytyjska lecz australijska (np. australijski "cumquat" zamiast brytyjskiego "kumquat").
Dla keczua przygotowałeś konwercję ortografii trzysamogłoskowej na pięciosamogłoskową, ale brakuje w działania odwrotną stronę, które przygotowałem. Nie wchodząc w szczegóły ortografii i fonetyki keczua, proste odpalenie przygotowanego przez Ciebie kodu w stronę odwrotną powinno zadziałać w teorii, ale w realu będzie zawodne. Jakąkolwiek gwarancję na działanie moich kodów daję tylko w tę stronę, w którą zostały pierwotnie przygotowane–odpalone od końca nie muszą w ogóle działać.
Zmieniłem nazwę projektu, teraz jest tu: https://github.com/tomek-siuda/lng-cv-python
Jasne, tą możliwość odwrotniej zamiany dałem jako eksperyment – na niektórych zbiorach ma szansę to działać dobrze, na niektórych wyjdą głupoty (zazwyczaj wyjdą).
Narzędzie można połączyć z tagowaniem części mowy. Nie powinno być trudne w implementacji, tylko format słowników trzeba by rozszerzyć. Jakbyś chciał dorobić taki słownik USA -> UK/Australia z uwzględnieniem części mowy, to mogę przygotować tagowarkę.
Teraz myślę też nad innym narzędziem do analizy fonetycznej, wyobrażałbym to sobie tak, że podając nagranie wypowiedzi danej osoby, program mógłby automatycznie wyciągnąć z niego np. cechy wypowiadanych samogłosek, i zmapować je w formie graficznej na czworoboku samogłosek. Technicznie myślę, że wykonalne, łącząc sieci neuronowe i jakiś algorytm klastrujący.
Pewien punkt zaczepienia, jakby ktoś chciał poczytać:
Dissen, Yehoshua & Keshet, Joseph. (2016). Formant Estimation and Tracking Using Deep Learning.
Tomku, w kwestii Twojego narzędzia do analizy fonetycznej mapującego głoski, pewnie niewiele będę mógł pomóc na tle technicznym. Niemniej, jak najbardziej brzmi to interesująco i jakbyś coś takiego rozwijał, będzie mnie to ciekawić. Czy dałoby się zrobić narzędzie, które by robiło transkrypcje w IPA? Powiedzmy podaję plik z nagraniem w mp3, a narzędzie dokonuje transkrypcji nagrania w IPA. Najlepiej z uwzględnieniem tonów! To byłoby prawdziwe cudo.
W kwestii ling-cv-python, mam techniczny problem z tym, by podsyłać Ci poprawki. Opublikowałem już lng-cv 1.0.3 z poprawkami do łaciny i powinna być już to wersja dość stablina (lub przynajmniej póki co, potrzebuję zająć się innymi zadaniami). Na GitHubie nie mogę automatycznie robić żadnego Pull Request, gdyż wszystkie pliki są inne, inny język programowania, itd. Jeśli dobrze rozumiem -ale jestem nowy na GitHubie- aby całość zautomatyzować zdaje się musiałbym zrobić forka od Twojego lng-cv-python i samemu rozwijać go u siebie (podwajając moją pracę) po czym dopiero mógłbym zgłaszać poprawki w Twoim repozytorium. Mogę tak zrobić, ale ma to sens raczej gdyby się zebrało więcej osób opracowujących różne języki, to byśmy Ci ulepszenia, nowe języki, itd. podsyłali. Na dzień dzisiejszy jestem z tym sam–może uda się skusić Gala. 🙂
W tym czasie zacząłem przypisywać CAŁOŚĆ z Pascala na Rust. W zasadzie szkic całej technologii w Rust mam już gotowy i potrzebuję tylko mozolnie poprzepisywać bazy symboli, itd. Jako tako kod programu w Rust jest gotowy. Zrobię jeszcze jedną conajmniej poprawkę w Pascalu: v1.0.3, po czym w Rust podniosę wersję do v2.0.0 (zdaje się, że przy zmianie technologii nie muszę zmieniać nazwy programu jeśli jest jedyną kontynuacją linii main, lecz jedynie musze podnieść wersję w pierwszej liczbie).
Rust rozwiązuje w zasadzie wszystkie problemy, jakie napotkałem pisząc w Pascalu. Przede wszystkim mogę prawidłowo wyświetlać teksty dowolnej długości w IPA, które się pięknie składają w zależności od tego jak zwęzimy lub poszerzymy okno terminala. Działa dobrze i wygląda estetycznie. Choć lng-cv 2 będzie aplikacją konsolową, w nowym wydaniu całość programu wygląda ładniej i nowocześniej łącznie z doborem odcieni kolorów.
Pascal liczy już 52 lata. Tymczasem lng-cv planuję wspierać do końca mojego życia. To by znaczyło, że na pewnym etapie pisałbym w języku liczącym ponad 100 lat… Myślę, że Pascala warto znać, choćby przez to, że pewne rzeczy (hmm… chyba wszystkie!?) jest w nim zrobić o wiele łatwiej niż w Rust. Myślę jednak też, że w długoterminowym projekcie lepszym językiem będzie Rust. Nie korzystam z żadnych bibliotek z crates.io, ani do parsowania argumentów, ani do zażądzania kolorem, ani do niczego innego nie zamierzam. Wolę pisać wszystko od zera wbrew poradom z internetu i tutorialom Rusta. 😛 Znów moja upartość. 😛 Kod w tej postaci jest może nieco pokopany, ale wolny od zależności i jest w 100% "autorski". 🙂
*Opublikowałem v1.0.2, nie v1.0.3.
Pisałem o pewnych problemach z niemieckim. Przypomnę co napisałem wcześniej i dodam kilka dalszych kwestii. Ogólnie, długość samogłosek niemieckich zależy często od znaków, jakie następują po literze oznaczającej samogłoskę:
Beten – modlić się – pierwsze ,,e" jest długie, bo jest po nim pojedyncza spółgłoska, a po niej samogłoska
Betten – łóżka – pierwsze ,,e" jest krótkie, bo są po nim dwie spółgłoski
t/tt jest wymawiane w obu wypadkach tak samo
Litera ,,z" nie podwaja się, chcąc wskazać krótkość poprzedniej samogłoski zamiast ,,zz" piszemy ,,tz"
Katze – kot – ,,a" jest krótkie, ,,tz" czytamy jak ,,z"
Czasem samogłoska staje się długa dzięki użyciu litery h:
War – był/byłam/był/była/było (forma czasu przeszłego) – ,,a" jest krótkie
Wahr – prawdziwy – ,,a" jest długie, ,,h" służy wskazaniu że ,,a" jest długie
Czasem mamy faktycznie podwojenie litery samogłoski:
Statt – zamiast – ,,a" jest krótkie
Staat – państwo – ,,a" jest długie
Słowa zaczynające się na ge- mają (może są jakieś wyjątki, ale w tej chwili sobie nie przypominam), pomimo ,,normalnych" reguł, krótkie ,,e"
Gemacht – zrobiony – ,,e" jest krótkie, choć wydaje się, że to taka sama sytuacja jak w wcześniejszym ,,beten"
Wydaje mi się, że proste replace byłoby tu mało użyteczne. Spróbowałem napisać funkcję w Pythonie, która przekształci zapis niemiecki w pewien przejściowy zapis prościej wskazujący długość samogłosek. Jest pod linkiem https://mruczek.wiki/U%C5%BCytkownik:Gal/Brudnopis (wolę tego nie wstawiać na swojego GitHuba, który służy nieco innym celom i nie chcę tam dodawać rzeczy dodatkowych; w razie czego założę sobie w przyszłości drugie konto). Dla ,,war" zwróci ,,war", ale dla ,,wahr" już ,,waar", przez analogię do ,,Staat"; podobnie ,,beten" da ,,beeten", zaś ,,Betten" uprości się do ,,Beten". Takiego typu zapis będzie można chyba potem poddać stosownym replace.
Funkcja nie jest jeszcze idealna, np. kwestia zapisu s i ß jest dość trudna i jeszcze nie wykonana (tu zresztą są 3 wersje ortografii – nowa niemiecko-austriacko-belgijsko-namibijska, stara niemiecko-austriacko-belgijsko-namibijska, szwajcarsko-lichtensteinska; najprostsza i jednocześnie najpopularniejsza jest ta pierwsza). Bardziej chodzi mi o zaprezentowanie Wam co mam na myśli. Sądzę, że użycie tego rodzaju technik pozwoli nieco rozszerzyć zakres programu – ale zobaczę co Wy sądzicie 🙂
Nie wiem, myślisz Galu w zupełnie odmiennych kierunkach ode mnie. Ja wszystko robię za pomocą prostych podstawień we właściwej kolejności.
Drobna odsłona nadchodzącej wersji w Rust! 🙂 Przykład z łaciną klasyczną i keczua południowym:
https://postimg.cc/njNLmfrK
Wypuściłem ulepszoną wersję w Rust! 🙂
Dostępna jest pod nazwą lngcnv na GitHubie i na Crates:
https://github.com/piotrbajdek/lngcnv/wiki
Zapraszam do testowania!
Yana Para Puyu: Twoje podejście do programowania pisząc wszystko samemu jest dobre, jeśli jednym z celów jest nauka programowania. W takim przypadku nawet dobrze jest pisać samemu zamiast wszystko importować, warto też porównywać jak napisali zbliżone rozwiązanie inni i przeanalizować co da się zrobić lepiej.
Jeśli celem nie jest nauka, tylko przygotowanie czegoś co działa i rozwiązuje dany problem, to pisanie samemu gotowych rozwiązań to raczej kiepski pomysł, z różnych powodów. Poza tym oczywistym, czyli marnowaniem czasu: za gotową i popularną biblioteką często kryją się lata testowania przez różne osoby w różnych zastosowaniach i środowiskach, oraz masa wykrytych i poprawionych w trakcie błędów, z których część trudno byłoby na początku nawet przewidzieć, że mogą się pojawić. To może być nie do przeskoczenia w pewnych przypadkach przez pojedyńczą osobę, nawet bardzo zaangażowaną w projekt.
Odnośnie konwersji dźwięk->IPA, wydaje się technicznie wykonalne, skoro da się konwertować na żywo dźwięk na zapis ortograficzny i obecne metody mogą wykonują to całkiem dobrze, o ile nagranie jest w dobrej jakości. Potrzebna jest raczej duża ilość danych do trenowania modelu, do konwersji dźwięk->tekst wymagane jest obecnie z tego co czytałem (sam nie trenowałem takich modeli) z kilkaset godzin nagrań rozmów razem z transkrypcją, żeby osiągnąć dobre rezultaty. Komercyjne rozwiązania mogą używać kilku tysięcy godzin. Trzeba by taki zbiór przygotować, do czego twoje narzędzie konwertujące tekst na IPA może pomóc, ale dochodzi problem z redukcją różnych głosek w naturalnej mowie. Wydaje mi się, że do wytrenowania do konwersji na IPA trzeba mniej danych niż konwersji na zwykły tekst, bo model nie musi się uczyć zapisu ortograficznego, ale nie wiem czy to ma duże znaczenie.
O ile taka konwersja na IPA wydaje się teoretycznie wykonalna, to nie wiem czy w ogóle powinna być ostatecznym celem, IPA to jednak dość uproszczony zapis. Twoje transkrypcje wyglądają na bardziej dokładne, ale to co np. w przypadku języka angielskiego zazwyczaj jest podawane w słownikach dokładne nie jest. Np. słowa "cat" i "thanks", samogłoska w tych słowach to jest kompletnie inny dźwięk (przynajmniej w większości amerykańskich odmian), a chyba wszystkie słowniki jakie widziałem w obu przypadkach podają po prostu wymowę /æ/ w obu słowach. Narzędzie, które całkiem różne dźwięki konwertuje do tego samego symbolu IPA wydaje się średnio przydatne.
Możliwość analizy nagrań w formie łatwo generowalnych i czytelnych reprezentacji graficznych moim zdaniem bardziej się przyda. Ewentualnie możliwość generowania z tego IPA, ale IPA powiedzmy bardziej "prawdziwego", a nie takiego uproszczonego ze słowników.
Tomku, oczywiście, że jednym z moich ukrytych celów jest nauka programowania! 🙂 Programowałem w dzieciństwie (Batch, Pascal, próby Assembly), po czym miałem niemal 20 lat przerwy i chcę do tego wrócić… Zanim napiszę skomplikowany program np. do obliczeń naukowych, wolę wpierw stworzyć prostszy program lingwistyczny i przejść przez każdy z etapów: od pisania kodu, po zarządanie repozytoriami w sieci, itd. Pisząc lngcnv uniknąłem kilku błędów, które popełniłem pisząc lng-cv (choćby drobiazgi w obsłudze GitHuba, albo w tym, że w lng-cv nie wydałem najpierw alpha i beta). Ostatecznie stanęło na nowoczesnym Rust.
Mam już gotową wersję 1.1.0 z obsługą wymowy języka polskiego–opublikuję ją za kilka godzin! Można też śledzić tutaj: https://crates.io/crates/lngcnv
Te słownikowe IPA są bardzo mało dokładne, gdyż jest to zapis fonemiczy. U mnie w lngcnv jest zapis fonetyczny. Są ograniczenia wynikające z tego, ze wyświetlam w teminalu i pewne symbole muszę lekko uprościć. Wciąż jednak będę posiadać szczerze mówiąc najdokładniejsze odwzorowanie mowy, z jakim się kiedykolwiek spotkałem w jakimkolwiek słowniku lub programie. (Tylko pozostaje mi dorobić tony dla tikuna i akcent dla reszty.) Mój zapis tikuna w dwóch dialektach (który będę wciąż doszlifowywać…) jest jedynym takim na świecie! Teraz jak wstępnie gotowy jest język polski, myślę, że moim priorytetem będzie keczua (ale tu póki co tylko jedna odmiana), a następnie bardzo dokładny fonetyczny hiszpański z uwzględnieniem kilku wariantów regionalnych (gł. z Kolumbii). 🙂
P.S. Odnośnie języka angielskiego dodam, że u mnie będzie Australian English–przynajmniej w pierwszej kolejności. Będzie dokładnie. 🙂
P.S. Myślę, że dość proste do napisania powinno być dzielenie słów na sylaby. Wprowadzę.
Bene scripsisti. Lingua Latina semper viva est. Vivit in multas linguas quoque in lingua Anglica. Nulla lingua Anglica sine lingua Latina. Supra dimidiam partem vorborum Anglicorum sunt verba Latina sed pauci hoc sciunt. Itaque vivit viva lingua Latina. Valete omnes quam optime et bene vos habetis.
Multi vocabuli Anglici e lingua Latina proveniunt, tamen multi vero homines Anglica loqui possunt, sed Latinam ignorant. Latinam scire non debemus ut Anglicam utamur. Si quicquid solam linguam Anglicam gnoscere velit (complures solum id volunt), Anglicam – non Latinam – discere debeat. Ego tamen ambae linguae scire cupio… vere, non solum haec ambae 😉