Posts tagged ‘languages’

le ciste be fi lo’i namcu bei bau la lojban.

2010-06-22 11:47

System liczb w lojbanie.

Jako kolejny temat odnośnie lojbanu zdecydowałem się opisać jego system numeryczny, czyli sposób wyrażania liczb. W dużym stopniu zainspirował mnie do tego pewien komentarz stwierdzający, że w lojbanie – biorąc pod uwagę jego nietypowość – używa się pewnie liczb Churcha albo innej, równie pokręconej konstrukcji :) Pewnie byłoby to jakoś zgodne z jego ideą, ale na szczęście w rzeczywistości jest zupełnie inaczej ;P

Zacznijmy od prostych cyfr, które to przedstawia poniższa tabelka:

no pa re ci vo mu xa ze
0 1 2 3 4 5 6 7
bi so dau fei gai jau xei/rei vai
8 9 A (10) B (11) C (12) D (13) E (14) F (15)

Powinna ona od razu wzbudzić przyjazne uczucia, jako że wyraźnie pokazuje wielce interesujący fakt: lojban ma natywne wsparcie dla systemu szesnastkowego! I chociaż domyślnie używanym jest nadal ten dziesiętny, taka zapobiegliwość u twórców języka jest z pewnością godna uznania ;)

Nie bez powodu też ciągle używam pojęcia ‘cyfr’ zamiast ‘liczb’. Tak jak notacji matematycznej, liczby w lojbanie składa się bowiem z cyfr, i to dokładnie w ten sam, pozycyjny sposób. Powyższy zestaw słówek (są to oczywiście cmavo) jest wobec tego zupełnie wystarczający do wyrażenia każdej skończonej liczby naturalnej; nie ma żadnych osobnych form gramatycznych dla dziesiątek czy setek. Oto przykłady, które powinny ukazywać dokładną analogię między zapisem dziesiętnym a słownym w lojbanie:

paxa vore muno xaso parebi revoci repavono sononopa
16 42 50 69 128 243 2140 9001

Przy liczbach sięgających dziesiątek czy setek milionów pomocny jest separator ki’o, który jest oddziela tysiące (podobnie jak spacja w języku polskim lub przecinek w angielskim). Tak więc 4096 to vo ki’o nosoxa, a ilość bajtów w megabajcie (czyli 1048576) wyrazimy jako pa ki’o novobi ki’o muzexa. Przy okazji nadmienię, że spacje w zapisie tekstowym mogę wstawiać między cyframi w dowolny sposób (również nigdzie), co dotyczy zresztą każdego ciągu cmavo w lojbanie.

Co z większymi zbiorami liczb, jak całkowite czy wymierne? Mamy oczywiście znak minus, pozwalający tworzyć liczby ujemne: ni’u (dla spójności istnieje też znak plus: ma’u). Do ułamków niezbędny jest z kolei separator dziesiętny pi, którego nie należy mylić z liczbą π (ona sama ma zresztą swoje własne oznaczenie: pai). Wreszcie, jest też kreska ułamkowa, czyli fi’u. Przy pomocy tych słów możemy już wyrazić całkiem sporo różnych liczb:

ni’u mu re pi voxa ni’u pamu pi ze re fi’u mu
-5 2,46 -15,7 2/5

Na tym zestawie chwilowo zakończymy, mimo że lojban posiada gramatykę “obsługującą” nawet liczby zespolone (!). Ciekawsze będzie raczej pokazanie sposobu użycia liczb w wypowiedzi. W ‘normalnych’ językach liczby służą zazwyczaj do określania ilości czegoś, najczęściej w sztukach. Dość podobnie jest w lojbanie, gdzie możemy liczbą opatrzyć sumti, jak w poniższym przykładzie:

mi renro vo rokci
Rzucam czterema kamieniami.

Jako ciekawostkę mogę dodać, że powyższe bridi nie specyfikuje tego, czy były to cztery osobne rzuty czy też jeden rzut wszystkimi czterema kamieniami naraz. Możliwe jest aczkolwiek dokładniejsze określenie, ale oczywiście nie będę się tym zajmował :)


loi patlu

Drugi sposób użycia liczb to sytuacje, gdy stanowią one samodzielne sumti. Dzieje się to nieco częściej niż w innych językach, gdzie zdania typu “Dwa plus dwa równa się cztery.” są relatywnie niezbyt powszechne poza samą matematyką. Tutaj jest trochę inaczej między innymi z tego względu, że użycia wszelkich jednostek miar – takich jak metry czy kilogramy – odbywają się za pośrednictwem odpowiadających im predykatów (czyli selbri), na przykład takich jak ten:

grake :: x1 ma masę x2 gramów wg standardu x3

Miejsce (“argument”) x2 wymaga tutaj właśnie liczby jako samodzielnego sumti. Tworzymy go za pomocą rodzajnika li. Stąd mamy np. li revo – liczba 24, a także:

loi patlu poi mi te vecnu cu grake li cinono
Ziemniaki, które kupiłem, ważą 500 gramów.

Tym, jak mógłby wyglądać dialog w sklepie, który do tego zakupu doprowadził, być może zajmę się w przyszłości :)

Tags: , ,
Author: Xion, posted under Culture, Math » 4 comments

so’o lamji je jai cinri be sera’a la lojban.

2010-05-23 19:07

…czyli kilka kolejnych ciekawych rzeczy o lojbanie.

Trzecią notkę o lojbanie zacznę od przypomnienia części tego, o czym wspominałem w pierwszym wpisie. Mam tu na myśli postać “zdań” w lojbanie (bridi), składających się z predykatu (selbri) i określonej liczby argumentów (sumti). Przykładem może być:

mi sampla lo ceirdero

co bardzo dobrze pokazuje, że w lojbanie można mówić o wielu ciekawych rzeczach, jako że znaczenie tego bridi to… ‘Ja programuję shader‘ :) Użyty tu predykat sampla definiuje relację między programistą a pisanym przez niego programem/kodem i umożliwia również podanie trzeciego argumentu (docelowego przeznaczenia tego programu), który tutaj nie został wypełniony. Dwa pierwsze – mi i lo ceirdero – zostały jednak podane, wskakując, odpowiednio, na pierwsze i drugie miejsce predykatu sampla, zgodnie ze zdefiniowanym dla niego porządkiem argumentów, których nie da się dowolnie przestawiać bez zmiany znaczenia. Widać więc, że selbri w lojbanie przypominają funkcje z języków programowania ze wszystkimi parametrami zadeklarowanymi jako opcjonalne.


le tcati kabri
(Źródło obrazka)

Ta analogia jest jednak tylko trochę adekwatna, bo bridi może mieć znacznie bardziej skomplikowaną strukturę niż najbardziej nawet zagnieżdżone wywołanie funkcji. I tak pierwszą ciekawostką jest to, że argumenty (czyli sumti) możemy przestawiać niemal wedle uznania, zachowując to samo znaczenie wypowiedzi. Mogę więc powiedzieć:

lo ceirdero cu se sampla mi

uzyskując coś w rodzaju strony biernej – ‘Shader jest pisany przeze mnie’. Niech ów shader ma w założeniu wykonywać najbardziej typową dla shaderów czynność – czyli wyświetlać imbryczek :) Wiedząc o tym, mogę wypełnić pominięte wcześniej trzecie miejsce sampla:

mi sampla lo ceirdero lonu jarco tu’a le tcati kabri

Mając trzy argumenty mogę z kolei poprzestawiać je w nieco bardziej zakręcony sposób – na przykład tak:

fi lonu jarco tu’a le tcati kabri cu sampla fa mi fe lo ceirdero

Fizycznie żaden argument nie jest tu na swoim miejscu, ale znaczenie pozostaje to samo. Taki zabieg, jak widać, wymagał dodania znaczników fa, fe oraz fi. Przypomina to trochę tzw. argumenty słownikowe w niektórych wysokopoziomowych językach programowania, takich jak Python.

Od znaczników FA niedaleko już z kolei do tzw. etykiet sumti (sumti tcita, zwanych też “tagami modalnymi” – modal tags). Jest to mechanizm umożliwiający dodanie do bridi argumentów, które nie są przewidziane w “deklaracji” selbri. Przykładowo, w naszym predykacie sampla wypełnione są już wszystkie miejsca, ale to nie znaczy wcale, że nie możemy do niego nic dodać. Skoro mówimy o kodowaniu, to naturalne jest chociażby określenie języka, w którym piszemy. Na szczęście odpowiednie miejsce możemy sobie dodać właśnie przy pomocy pewnego sumti tcita – mianowicie bau:

mi sampla lo ceirdero bau la’oi .HLSL.
Piszę shader w języku HLSL.

Możliwych etykiet jest oczywiście mnóstwo. Część z nich wykazuje podobieństwo do przyimków, inne przypominają frazy określające położenie w czasie lub przestrzeni (‘zanim’, ‘po tym jak’, ‘po prawej’, ‘na górze’, itp.), a jeszcze inne opisują bardziej złożone relacje (‘z powodu’, ‘w celu’, ‘z punktu widzenia’, ‘używając’, …), które w zwykłych językach rzadko da się wyrazić jednym słowem.

Ogólny wniosek z tego jest taki, że chociaż bridi w lojbanie i funkcje w językach programowania są ideowo do siebie zbliżone, to te pierwsze wykazują znacznie większą elastyczność. Nie powinno być to zresztą specjalnie zaskakujące – w końcu mówimy o języku naturalnym dla ludzi (głównie), a nie o kodzie dla kompilatorów :)

Uwaga ogólna: ze względu na oczywisty brak miejsca nie mogę wyjaśniać każdej konstrukcji gramatycznej użytej w przykładach. Jeśli chcemy koniecznie poznać znaczenie i funkcje jakiegoś nieznanego słówka, najlepiej wpisać je w słowniku takim jak vlasisku. W tej notce takimi nowymi i pewnie nieznanymi słowami są np. cu, nu, tu’a i la’oi.

Tags: ,
Author: Xion, posted under Culture » Comments Off on so’o lamji je jai cinri be sera’a la lojban.

ma kau se jinvi mi la lojban.

2010-04-26 13:07

…czyli co sądzę o lojbanie.

Powracam do tematu z notki sprzed kilku tygodni, mimo swoich przeczuć, że nie jest to wcale coś, na co wszyscy z napięciem oczekiwali ;-) Spróbuję jednak przekazać porcję swoich nieco głębszych przemyśleń na temat lojbanu po tym, jak poświęciłem trochę więcej czasu na przyjrzenie się temu językowi. Witam więc tych nielicznych, którzy chcą się z nimi zapoznać :]

Dla osoby zupełnie niewtajemniczonej najbardziej rzucającą się w oczy cechą tego języka jest to, że zdecydowana większość słów jest zupełnie niepodobna do swoich odpowiedników w innych językach – mimo że zostały one skonstruowane właśnie z nich. Chociaż na początku może to się wydawać minusem, w ostatecznym rozrachunku ma chyba więcej zalet niż wad. To dlatego, że – jak pisałem już wcześniej – w lojbanie nie ma tradycyjnych części mowy ani konstrukcji gramatycznych. Nie ma więc uzasadnienia dla tego, żeby słownictwo było w nim podobne do innych języków; to mogłoby wręcz być mylące. Zgadza się to też z założeniem kulturowej bezstronności (“znajome” słowa byłyby faworyzowaniem języków europejskich, jak to jest chociażby w esperanto).
Drugim widocznym atrybutem jest wszechobecność krótkich, zwykle dwu- lub trzyliterowych słów, często z apostrofem w środku (czytanym jako ‘h’). To cmavo (wym. szmawo), słowa strukturalne. W nich zawarta jest zdecydowana większość gramatyki lojbanu. Pełnią one mnóstwo różnorodnych funkcji, będąc odpowiednikami zarówno przyimków, spójników czy zaimków, jak i rodzajników, znaków przestankowych, a nawet podkreśleń czy cudzysłowów (w lojbanie wszystko to ma postać słów). Istnieje więc całe multum różnych cmavo, z których wiele jest logicznie zorganizowanych w grupy mające części wspólne, jak np. ze’i/ze’a/ze’u – krótki/średni/długi odcinek czasu. Nie dotyczy to jednak wszystkich, zatem nierzadko pomyłka o jedną literę może skutkować zupełnie innym znaczeniem wypowiedzi lub jej niepoprawnością.

Jednak cmavo są na szczęście w dużej mierze nieobowiązkowe, bo w wielu przypadkach służą uszczegółowieniu tego, co wynika z kontekstu. Jedną z takich kontekstowych informacji jest często czas (teraźniejszy, przeszły, itp.), który w lojbanie – w przeciwieństwie do wielu innych języków – nieczęsto trzeba podawać wprost, bo reguły gramatyki tego nie wymuszają. Jeśli jednak ktoś sobie życzy sobie, aby go doprecyzować, to ma do dyspozycji bardzo ciekawe rozwiązanie, rozdzielające problem na dwie części. Pierwsza odpowiada relacji czasowej między aktualnym punktem a zdarzeniem – czyli temu, czy mówimy o przeszłości (pu), teraźniejszości (ca) czy przyszłości (ba). Druga (zwana niekiedy aspektem) określa, o którym punkcie osi czasu wokół zdarzenia mówimy, np.: przed jego początkiem (pu’o), dokładnie na początku (co’a), w środku jego trwania (ca’o), dokładnie na końcu (mo’u) lub po jego zakończeniu (ba’o). W sumie daje to kilkanaście kombinacji, z których większość da się odnieść na przykład do czasów w języku angielskim (tenses), ale które jednocześnie są o wiele łatwiejsze do zrozumienia.

Trzecia istotną właściwością lojbanu jest fakt, że znacznie częściej niż w innych językach mówimy w nim o “nie-rzeczach”, takich jak zdarzenia, informacje, wypowiedzi, właściwości, ilości, koncepcje, procesy, stany, itp. Nazywa się je tu ogólnie abstrakcjami i regularnie występują one jako argumenty do predykatów (czyli selbri). Istnieją oczywiście ich odpowiedniki w innych językach, lecz zwykle przyjmują one postać zdań podrzędnych (‘to, że…’), jako że rzeczownikami nazywa się w większości rzeczy lub osoby. W lojbanie tak nie jest (no bo przecież rzeczowników nie ma :)) i w sumie wychodzi mu to na dobre. Można rzecz jasna wskazać dziwne “skutki uboczne” – nie można na przykład chcieć (djica) rzeczy jako takich, a jedynie zdarzeń z nimi związanych – ale ogólnie obecność abstrakcji korzystnie wpływa na specyfikowanie tego, o czym tak naprawdę mówimy.

Tags: ,
Author: Xion, posted under Culture, Thoughts » 4 comments

mi pu facki fi la lojban.

2010-03-11 15:40

Przeglądanie Wikipedii może mieć jeden ciekawy efekt uboczny. Otóż wystarczy kliknąć jeden lub dwa linki “w złym kierunku” i już lądujemy w obszarze wiedzy znajdującym się kilometry od tego, z którego zaczynaliśmy. To ma swoje wady (bardzo, bardzo łatwo jest stracić mnóstwo czasu na niezupełnie pożyteczne lektury – co obrazowo pokazuje jeden z komiksów na xkcd), ale ma i jedną podstawową zaletę: można przy okazji odkryć coś ciekawego.

Znalezisko, na jakie natrafiłem ostatnio, to dość nietypowy język. I bynajmniej nie mam tu wcale na myśli języka programowania; chodzi tu jak najbardziej o język naturalny (chociaż pewnie niektórym to określenie będzie się wydawało nadużyciem…).
Delikwent nazywa się lojban (wym. lożban) i należy do klasy tzw. języków logicznych. Zanim wyjaśnię, co w nim jest takiego nietypowego, wspomnę o tym, czego w nim nie ma. Liczby pojedynczej i mnogiej, odmiany wyrazów, czasów, podziału na rodzaje gramatyczne, jak również interpunkcji i ortografii, a nawet… tradycyjnych części mowy (czasowniki, przymiotniki, itp.) – tego wszystkiego w nim nie ma i nie jest to brak specjalnie zauważalny. Wręcz przeciwnie: lojban ma – przynajmniej częściowo dzięki temu – niezaprzeczalne zalety:

  • jest jednoznaczny pod względem gramatyki, tzn. zawsze można dokładnie powiedzieć, co dana wypowiedź znaczy
  • jest jednoznaczny pod względem sposobu zapisu słów (czyli ortografii), który jest fonetyczny (zgodny z wymową)
  • jest regularny – od jego zasad nie ma żadnych wyjątków

Wszystko to brzmi całkiem obiecująco. Teraz jednak nasuwa się pewnie pytanie: skoro w tym języku tylu rzeczy nie ma, to co tak naprawdę w nim jest?…

Już spieszę z odpowiedzią. Odpowiedniki zdań w lojbanie (zwane bridi) wyrażają mianowicie pewne relacje między pojęciami. Związki te nazywamy selbri i mogą one odpowiadać zarówno czasownikom, jak i przymiotnikom czy nawet rzeczownikom (wtedy są to relacje ‘bycia czymś’) z “normalnych” języków. Z kolei argumenty dla tych relacji nazywają się sumti. Mówiąc o lojbanie używa się powszechnie tych, jak i kilku innych terminów.
W tym momencie jest doskonały czas na przykład – a jakim lepszym zdaniem przykładowym można się posłużyć niż tradycyjne “Ala ma kota.”? Proszę bardzo, oto jego odpowiednik w lojbanie:

la .alas. ponse le mlatu

Kropka nie oznacza tu końca zdania, ale krótką przerwę w wypowiedzi na końcu nazwy własnej (którą jest bez wątpienia ‘Ala’). Poprzedzające ją ‘s’ jest wymogiem gramatyki: wszystkie nazwy (cmene, wym. szmene) w lojbanie muszą kończyć się spółgłoską. ponse, jak nietrudno się domyślić, oznacza “mieć”, tj. relację posiadania czegoś przez coś/kogoś. A le mlatu to “coś, co zwiemy kotem”. Czemu nie po prostu “kot”? Ano dlatego, że pod tym słowem może się kryć wiele różnych osobników, a nam chodzi o pewnego, ale konkretnego kota. To między innymi z takich konstrukcji – na początek niezbyt może intuicyjnych – bierze się jednoznaczność lojbanu.

Oczywiście ponse i mlatu to nie jedyne słowa, mogące służyć jako selbri. Są one tylko dwoma z około 1300 podstawowych wyrazów tego typu (nazywanych gismu), które mogą być łączone na wiele sposobów w celu otrzymywania bardziej złożonych znaczeń. Wspominany kot Ali może być na przykład biały i wtedy możemy go określić jako le blabi mlatu. Tak swoją drogą, jeśli ktoś się zastanawia, skąd właściwie wzięły się te wszystkie słowa, to spieszę z odpowiedzią, iż zostały one wygenerowane algorytmicznie z odpowiednich wyrazów w którychś z sześciu najpopularniejszych językach świata: chińskim, angielskim, hiszpańskim, hinduskim, arabskim i rosyjskim.
Ważną cechą lojbanu jest też to, że selbri mają w nim określoną strukturę związaną z położeniem argumentów. Innymi słowy, to nie przypadek, że w naszym bridi Ala jest pierwsza, a kot drugi; gdyby było odwrotnie, to kot miałby Alę. selbri mogą mieć jednak zarówno mniej, jak i więcej argumentów niż dwa. Chcąc na przykład wysłać naszą Alę na wycieczkę samochodem z Krakowa do Wrocławia, powiedzieliśmy coś w stylu:

la .alas. klama la vrotsuav. la krakuf. zo’e lo karce

gdzie lo karce (wym. lo karsze) jest samochodem. klama znaczy “iść/jechać” (jak angielskie go) i ma aż 5 sumti (argumentów), z których każdy ma ściśle określone znaczenie. Jeśli komuś w tej chwili skojarzyło się to z prototypem funkcji w języku programowania, to podpowiem, że skojarzenie jest jak najbardziej słuszne :) lojban ma nawet swojego nulla: zo’e (wym. zohe) oznacza opuszczenie danego sumti, w tym przypadku czwartego. Nie trzeba jednak z niego korzystać; zdanie powyżej da się również powiedzieć i bez “wypełniacza”.

Naturalnie mógłbym kontynuować ten wywód jeszcze bardzo długo – i kto wie, może później to zrobię :) W tym miejscu jednak każdy powinien mieć już jako-takie pojęcie o tym, jak wygląda język lojban – i przy okazji znać już sporą część jego gramatyki. Zachęcam aczkolwiek do przejrzenia poniższych źródeł:

albo przynajmniej zerknięcia na wspomniany na początku artykuł na Wikipedii. Jeśli zaś komuś przez cały czas na końcu języka gnieździ się pytanie “A po co mi to?”, to jako odpowiedź rzucę… oczywiście kolejny komiks z xkcd :) co’o

…co oczywiście znaczy “do widzenia”. A tytuł notki? “Odkryłem lojban”, rzecz jasna :)

Tags: ,
Author: Xion, posted under Culture » 3 comments

Języki całkiem naturalne

2008-03-13 10:48

Języki programowania są tworami sztucznymi, ale wykazują pewne podobieństwo do języków naturalnych – czyli tych, którymi posługują się ludzie. Mają na przykład swoje gramatyki, składnie i semantyki, chociaż pojęcia te rozumiemy oczywiście nieco inaczej. W obu typach języków można też wyrazić bardzo wiele różnych myśli i relacji, z tym że domena języków naturalnych jest rzecz jasna znacznie szersza.

Ponieważ jednak wszystkimi językami posługują się głównie ludzie, niektóre języki programowania dorobiły się pewnej “otoczki” podobnej do tej, jaka towarzyszy części języków naturalnych. Myślę nawet, że bazując na tym, można wyróżnić odpowiedniki między obiema grupami. Może nie zawsze będą one wystarczająco sugestywne, ale przecież nie zaszkodzi spróbować ;-)
Jak dotąd w przypływie niewytłumaczalnej kreatywności wymyśliłem takie oto pary:

  • Książka “Hello World”C++ ma to do siebie, że jako tako znają go prawie wszyscy, lecz poziom tej znajomości pozostawia zwykle sporo do życzenia. Tak więc mimo tego, iż należy on do najpopularniejszych języków programowania, osób posługujących się nim zupełnie poprawnie nie ma znowu aż tak dużo. Zaś ekspertów znających na wyrywki każdy z jego niezliczonych kruczków znaleźć jeszcze trudniej.
    Który spośród języków naturalnych posiada podobne cechy? Ano angielski, oczywiście. Mówi się nawet, że większość świata mówi jego uproszczoną wersją, czyli “McEnglish”; możliwe, że na podobnej zasadzie istnieje “McC++” ;-] (Prawdę mówiąc, patrząc na niektóre posty na forum Warsztatu, jestem tego pewien ;P).
  • Java to z kolei kolejny bardzo popularny język programowania, który jest wykorzystywany do wielu różnych celów. W każdym zastosowaniu wygląda jednak nieco inaczej: wiadomo na przykład, że inaczej tworzy się aplikacje na J2ME (telefony komórkowe, itp.), a inaczej na J2EE (zastosowania serwerowe). Java ma więc sporo lokalnych ‘dialektów’, a w połączeniu z tym, że jest stosunkowo łatwa do nauki i codziennego posługiwania się, daje się porównać do języka hiszpańskiego.
  • Pascal również do trudnych języków nie należy. Charakteryzuje się ponadto dość rozwlekłą i sztywną składnią, która wymaga używania całkiem sporej ilości słów kluczowych. Słowa te zresztą też do krótkich nie należą, podobnie jak nazwy wbudowanych typów i funkcji.
    Z bardziej znanych języków naturalnych podobnie długie wyrazy i długie zdania oraz w miarę ścisła składnia występują chociażby w niemieckim.
  • W przypadku PHP mamy do czynienia z językiem, który niełatwo przyjmuje “nowinki techniczne” z zewnątrz. Obiektowość na przykład zaczęła być na poważnie wspierana dopiero w piątej jego wersji. Jednocześnie mamy tutaj kilka oryginalnych rozwiązań, które trudno uświadczyć gdzie indziej, jak choćby wstawianie HTML w środku bloku kodu PHP, konstrukcje typu DoSomething() || die(); albo funkcja list. Aha, i wypada też wspomnieć o najpopularniejszym znaku w tym języku, czyli $ ;)
    Podobną awersję do zapożyczeń oraz niespotykane gdzie indziej rozwiązania (np. liczebniki oparte na dwudziestkach, a nie dziesiątkach) w połączeniu z intensywnym użyciem znaczku apostrofa charakteryzują rzecz jasna język francuski.
  • Natomiast Basic miał w założeniu być językiem przede wszystkim dla początkujących. Jego założeniem była łatwość nauki i używania, co miało zapewnić mu popularność. W praktyce wyszło nieco gorzej i jego warianty nie mają w sumie zbyt wielu zwolenników, a cała ta historia przypomina trochę dzieje języka esperanto. Różnica jest taka, że Basic na pewno Nobla nie dostanie :)
  • I wreszcie mamy też C. Kiedyś było to narzędzie bardzo popularne, ale wraz z rozwojem nowszych języków pole jego zastosowań zawęziło się do specyficznych nisz. Z niego jednak wywodzi się cała gałąź języków, które przypominają go co najmniej składniowo: nawiasy klamrowe, sposób deklaracji zmiennych, itd. Rola przodka, który nie jest już szeroko stosowany, w połączeniu ze sporym stopniem skomplikowania sprawia, że C możemy przyrównywać do łaciny.

Trochę to naciągane? :) Zapewne. Między językami programowania a naturalnymi istnieje przecież jedna zasadnicza różnica: tych pierwszych można się nauczyć zdecydowanie łatwiej i szybciej niż tych drugich. Ale w obu przypadkach sprawdza się stwierdzenie, że ‘znać’ to nie znaczy ‘umieć zastosować’. Więc może szukanie analogii podobnych do powyższych nie jest takie zupełnie bez sensu :]

Tags:
Author: Xion, posted under Culture, Thoughts » 8 comments

Wyrazy obce i ich odmiana

2008-01-14 17:44

Kilka dni temu doczekałem się w końcu materiałów w IV Ogólnopolskiej Konferencji Inżynierii Gier Komputerowej, która odbyła w Siedlcach w kwietniu zeszłego roku. W ich skład wchodzą między innymi teksty referatów, jakie zostały tam wygłoszone. Wprawdzie wśród nich nie ma tym razem żadnego referatu mojego autorstwa, ale i tak były one bardzo ciekawe ;-)

Przeglądając je, zauważyłem też, że reprezentują one całkiem niezły poziom językowy. Nie jest to oczywiście sprawa najważniejsza (w końcu o wiele istotniejsza jest zawartość merytoryczna), ale brak dbałości o poprawność dość często idzie w parze z niską jakością tekstu także według innych kryteriów. Wciąż zresztą zdarzają się pojawiać na rynku książki informatyczne, których redaktorzy “położyli” sprawę niemal pod każdym względem: od tłumaczenia po korektę.
Odpowiednie tłumaczenie to często – w przypadku publikacji z tej branży – decyzja, które terminy pozostawić w oryginalnej formie. Akurat w przypadku programowania gier bardzo dużo z nich nie tylko jest używanych wyłącznie w formie angielskiej, ale wręcz nie ma dobrych polskich odpowiedników (jako najlepszy przykład zawsze podaję ‘shader’). To sprawia, że teksty o tej tematyce są prawie zawsze naszpikowane obcojęzycznymi wyrazami, które jeszcze często podlegają odmianie tak samo, jak inne słowa. A to rodzi mnóstwo problemów natury ortograficzno-edytorskiej, jakich można uniknąć, jeżeli pamiętamy o kilku zasadach:

  • Terminy obcego pochodzenia zaleca się – jeżeli nie jest ich zbyt dużo i mamy odpowiednie możliwości formatowania – wyróżnić jakoś, na przykład kursywą. Oczywiście jeśli w ten sposób pochyła staje się połowa tekstu, lepiej z tego zrezygnować.
  • Wyrazy kończące się samogłoską, której nie wymawia się (np. sprite, frame, state), odmieniamy, dodając odpowiednią końcówkę poprzedzoną apostrofem (a więc: sprite’a, frame’ie, state’a, itp.)
  • Wyrazy kończące się spółgłoską lub samogłoską, którą wymawiamy, odmienia się tak, jak wszystkie inne: shadershadera, quadquadów, itp. Nie stosujemy więc żadnych apostrofów ani myślników, ale musimy pamiętać, aby całą końcówkę wyrazu zapisać zgodnie z jej polskim brzmieniem. Mamy zatem: LinuxLinuksa, vertexverteksy, i tak dalej.
    Przyznam, że nie bardzo wiem, jak postąpić z wyrazami, w których na końcu są spółgłoski, których nie wymawiamy. Na szczęście w języku angielskim takich słów praktycznie nie ma, a w dziedzinie programowania gier i grafiki są to chyba tylko nazwiska: Bezier [bezje] i Lissajous [lisażu]. Swoją drogą obaj panowie byli Francuzami i obaj są znani z wynalezionych przez siebie typów krzywych… i oba nazwiska równie ciężko się odmienia :-)
  • Akronimy, czyli skróty powstałe z pierwszych liter kilku wyrazów, odmienia się niezbyt często, lecz jeśli już się to robi, należy dodawaną końcówkę zawsze poprzedzać myślnikiem. Możemy więc mówić o DOS-ie, BIOS-ie, POSIX-ie i pewnie jeszcze wielu innych skrótach.
    Podobną regułę można też chyba zastosować do tych nazw, które kończą się wielkimi literami, czyli np. do DirectX-a czy OpenGL-a.

Nie są to jak widać specjalnie skomplikowane reguły, a stosując się do nich, powiększamy coraz bardziej zagrożony obszar poprawności językowej w Internecie i nie tylko.

Tags:
Author: Xion, posted under Computer Science & IT, Culture » 15 comments

Świadomość wyboru

2007-10-06 12:34

Każdy programista posługuje się zestawem narzędzi służącym mu do pracy: językiem programowania, środowiskiem developerskim, kompilatorem, debugerem, itd. Są to takie same atrybuty jak ołówek dla rysownika czy hebel dla stolarza. Jako podobne do takich właśnie przedmiotów produkty, mogą być one oceniane pod względem różnych kryteriów, w tym najważniejszego – użyteczności.

Narzędzia, jakimi się posługujemy jako koderzy, powinny więc być przede wszystkim adekwatne do sytuacji, w której się znajdujemy. Zawsze bowiem tworzymy coś przeznaczonego do działania w określonym kontekście – środowisku, platformie sprzętowej czy we współpracy z innymi programami. Jednocześnie nakładamy też pewne wymagania na produkt wynikowy czy też na sam proces jego tworzenia.
Możemy na przykład chcieć, by był on maksymalnie efektywny albo zajmował jak najmniej pamięci operacyjnej. Innym wymaganiem może być szybkość realizacji projektu – co zwykle oznacza, że pisząc nasz program, chcemy namęczyć się jak najmniej i skorzystać z jak największej ilości istniejącego już kodu. Wreszcie może nas interesować też elegancja wynikowego kodu źródłowego – chociaż na nią największy wpływ mamy sami.

W teorii właśnie takimi przesłankami powinniśmy kierować się, gdy przychodzi nam wybrać narzędzie (na przykład język programowania) pomocne w tworzeniu. Oczywiście możemy do nich dodać własne – łącznie z tym dla niektórych najważniejszym: czy dane narzędzie znam wystarczająco dobrze i/lub czy chcę się go (pod/na)uczyć. Grunt żebyśmy byli świadomi powodów, dla których decydujemy na taki a nie inny wybór.
Dotyczy to nawet tych mniej racjonalnych powodów w rodzaju: “bo ‘wszyscy’ tego używają”, “bo dany język/biblioteka/itp. po prostu mi się podoba”, “bo przyjemnie mi się w tym pisało”, itp. Nie muszą one wcale być gorsze od tych solidnie ufundowanych i sprawdzonych argumentów. Jeżeli bowiem żadne zewnętrzne i niezależne od nas okoliczności nas nie ograniczają, powinniśmy dążyć do jak największej satysfakcji z tworzenia – zarówno z samego procesu, jak i z osiąganych rezultatów.

Tags: ,
Author: Xion, posted under Applications, Programming, Thoughts » 9 comments
 


© 2017 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.