bookmark_borderUpadek informatycznej nomenklatury

Dawno temu, gdy pionierzy pchali informatykę i IT do przodu… nazwy miały sens i brzmiały poważnie. Mieliśmy komendę, monitor, katalog, procesor i kompilator. Po przetłumaczeniu na język polski wszystkie te słowa nadal wyglądają rozsądnie, bo i sensowne były w oryginale. Komenda, to polecenie, wykonanie polecenia to uruchomienie ciągu instrukcji. Monitor służy do monitorowania stanu komputera. Kompilator łączy fragmenty, czyli kompiluje. Wiadomo o co chodzi.

Po kilku dekadach zaczęły się dziać rzeczy niepokojące. Nowe słownictwo zaczęło brzmieć idiotycznie. Nie czujemy tego, bo nie tłumaczymy tych wynalazków na polszczyznę. Spróbujmy.

            Agile – zwinność, chyżość, ruchliwość, zwrotność

            Scrum – młyn

            Angular – graniasty, kanciasty

            Developer – rozwijacz?

            Developer Evangelist – rozwijacz ewangelista!

            Pipeline – rurociąg

            Pull request – prośba o ciągnięcie

            Kernel panic – panika jądra

            Smalltalk – pogawędka

            NestJS – gniazdo JS

Żeby doświadczyć upadku lingwistyki wystarczy porównać zdania, które można by wypowiedzieć kilka dekad temu i teraz.

Dawniej: nasi programiści są bardzo dobrze wyposażeni, mają monitory i kompilatory, programują na najnowszych systemach operacyjnych, gdzie pliki trzymają w katalogach i wykonują komendy.

Dziś: nasi rozwijacze oprogramowania pracują w chyżości, w trakcie sprintu robią wiele próśb o ciągnięcie, współpracują z mistrzem młyna i operują na najnowszych technologiach, większość przednio-końcówkowców pisze w graniastym, wdrażają na chmurę rurociągami każdego dnia, bo mamy w firmie dobrych roz-opnych, na tylnej końcówce mają gniazdo javaskryptu, a jeśli mają problemy wspiera ich rozwijacz ewangelista, który ma tyle lat doświadczenia, że zaczynał rozwijać w pogawędce.

bookmark_borderSzach-mat w 2.27 KB

Programiści to bystrzy ludzie. Niektórzy z nich to jednak naprawdę piekielnie inteligentne bestie. Nic nie dowodzi tego lepiej niż perwersyjne zabawy z kodem…

Konkursów na dziwny kod jest sporo, wiele też jest konkurencji. Jedną z nich jest quine. Zabawa polega tu na stworzeniu aplikacji, która wypisze własny kod źródłowy. Problem zrozumiały, ale daleki od prostoty. W przypadku JavaScriptu przykładowy quine wygląda tak:

(function $(){console.log('('+$+')()');})()

Idea tworzenia quine’ów ma zresztą dość ciekawe początki. Nazwa pochodzi od nazwiska amerykańskiego filozofa Willarda Van Orman’a Quine’a, który zajmował się m.in. teorią poznania, empiryzmem i logiką. Szczególnie ważnym tematem zajmującym Quine’a w kontekście programowania była pośrednia auto-referencja. Ciekawą rzeczą jest też Paradoks Quine’a. Przyjrzyjmy się poniższemu zdaniu:

„zwraca fałsz, gdy poprzedza je cytat” zwraca fałsz, gdy poprzedza je cytat.

Zdanie to sugeruje, że jest fałszywe, co jest paradoksalne – ponieważ jeśli jest fałszywe, to, co stwierdza, jest prawdą…

Poza konkursami istnieją też szalone idee. Na przykład języki ezoteryczne – skomplikowane, złożone, nieczytelne i z pozoru bezsensowne języki programowania, które jednakże działają. Tak wygląda kod źródłowy programu wypisującego „Hello world” w jednym z nich, Brainfuck’u:

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
 ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Na koniec zaś tytułowe szachy. Niejeden programista ma tendencję do uwielbiania programów krótkich, zwięzłych i konkurowania z innymi w skracaniu. „Usunął połowę i robi to samo” – brzmi dla wielu jak komplement. Konkursy na skracanie kodu idą tu o kilka kroków dalej. Jednym z barwnych przykładów są szachy Oscara Toledo napisane w JavaScript.

Program zajmuje 2.27 KB i… generuje szachownicę, figury, umozliwia nam grę i w dodatku gra z nami. Kod wygląda tak:

<script>//(c)2010 Oscar Toledo G.
var B,i,y,u,b,I=[],G=120,x=10,z=15,M=1e4,l=[5,3,4,6,2,4,3,5,1,1,1,1,1,1,1,1,9,9
,9,9,9,9,9,9,13,11,12,14,10,12,11,13,0,99,0,306,297,495,846,-1,0,1,2,2,1,0,-1,-
1,1,-10,10,-11,-9,9,11,10,20,-9,-11,-10,-20,-21,-19,-12,-8,8,12,19,21];function
X(w,c,h,e,S,s){var t,o,L,E,d,O=e,N=-M*M,K=78-h<<x,p,g,n,m,A,q,r,C,J,a=y?-x:x;
y^=8;G++;d=w||s&&s>=h&&X(0,0,0,21,0,0)>M;do{if(o=I[p=O]){q=o&z^y;if(q<7){A=q--&
2?8:4;C=o-9&z?[53,47,61,51,47,47][q]:57;do{r=I[p+=l[C]];if(!w|p==w){g=q|p+a-S?0
:S;if(!r&(!!q|A<3||!!g)||(r+1&z^y)>9&&q|A>2){if(m=!(r-2&7))return y^=8,I[G--]=
O,K;J=n=o&z;E=I[p-a]&z;t=q|E-7?n:(n+=2,6^y);while(n<=t){L=r?l[r&7|32]-h-q:0;if(
s)L+=(1-q?l[(p-p%x)/x+37]-l[(O-O%x)/x+37]+l[p%x+38]*(q?1:2)-l[O%x+38]+(o&16)/2:
!!m*9)+(!q?!(I[p-1]^n)+!(I[p+1]^n)+l[n&7|32]-99+!!g*99+(A<2):0)+!(E^y^9);if(s>h
||1<s&s==h&&L>z|d){I[p]=n,I[O]=m?(I[g]=I[m],I[m]=0):g?I[g]=0:0;L-=X(s>h|d?0:p,L
-N,h+1,I[G+1],J=q|A>1?0:p,s);if(!(h||s-1|B-O|i-n|p-b|L<-M))return W(),G--,u=J;
J=q-1|A<7||m||!s|d|r|o<z||X(0,0,0,21,0,0)>M;I[O]=o;I[p]=r;m?(I[m]=I[g],I[g]=0):
g?I[g]=9^y:0;}if(L>N||s>1&&L==N&&!h&&Math.random()<.5){I[G]=O;if(s>1){if(h&&c-L
<0)return y^=8,G--,L;if(!h)i=n,B=O,b=p;}N=L;}n+=J||(g=p,m=p<O?g-3:g+2,I[m]<z|I[
m+O-p]||I[p+=p-O])?1:0;}}}}while(!r&q>2||(p=O,q|A>2|o>z&!r&&++C*--A));}}}while(
++O>98?O=20:e-O);return y^=8,G--,N+M*M&&N>-K+1924|d?N:0;}B=i=y=u=0;while(B++<
120)I[B-1]=B%x?B/x%x<2|B%x<2?7:B/x&4?0:l[i++]|16:7;for(a=
"<table cellspacing=0 align=center>",i=18;i<100;a+=++i%10-9?
"<th width=60 height=60 onclick=Y("+i+") id=o"+i+
" style='line-height:50px;font-size:50px;border:2px solid #dde' bgcolor=#"+
(i*.9&1?"c0c":"f0f")+"0f0>":(i++,"<tr>"));
a+="<th colspan=8><select id=t style='font-size:20px'><option>♛<option>";
document.write(a+"♜<option>♝<option>♞</select></table>");
function W(){B=b;for(p=21;p<99;++p)if(q=document.getElementById("o"+p)){q.
innerHTML="\xa0\u265f\u265a\u265e\u265d\u265c\u265b  \u2659\u2654\u2658\u2657\u2656\u2655".charAt(I[p]&z);
q.style.borderColor=p==B?"red":"#dde";}}W();
function Y(s){i=(I[s]^y)&z;if(i>8){b=s;W();}else if(B&&i<9){b=s;i=I[B]&z;if((i&
7)==1&(b<29|b>90))i=14-document.getElementById("t").selectedIndex^y;X(0,0,0,21,
u,1);if(y)setTimeout("X(0,0,0,21,u,2/*ply*/),X(0,0,0,21,u,1)",250);}}
</script>

            Resultat zaś tak:

bookmark_borderStek w czasach zarazy

Japonia to niezwykły kraj. Jego kultura jest znana, ceniona i bogata. Samurajowie, Godzilla, manga i anime, Hokusai, gejsze, origami i tak dalej…

Swoją drogą, Godzilla w oryginale brzmi Gōjira i to właśnie stąd wzięła swoją nazwę znana nam wszystkim… Jira.

Sztuka kulinarna stanowi potężny element kultury kraju kwitnącej wiśni. Jednym z charakterystycznych jej przejawów jest teppan-yaki. Jest to smażenie potraw na wielkiej stalowej, podgrzewanej od spodu płycie. Wygląda to mniej więcej tak:

Cóż jednak począć, gdy COVID-19 szaleje, restauracje zamknięto, a głód puka w ścianki żołądka od wewnątrz?

W Japonii, kraju nowoczesności, istnieje tylko jedno wyjście. Technologia!

bookmark_borderMetoda Copy’ego Paste’a

Swego czasu znajomy programista wystosował do przełożonego nietypową prośbę. Zażyczył sobie pedałów wytnij-kopiuj-wklej. Argumentował, że jego praca bardzo przyspieszy.

Pomysł sam w sobie niegłupi. Szczególnie, gdyby połaczyć go ze skrzynią biegów schowka i zmieniać nią obiekty. Był to oczywiście jego szyderczy żart, ale rzeczywistość już tak śmieszna nie jest, bo wczoraj zmarł Larry Tesler.

Kto?

Twórca metody kopiuj-wklej!

Urodził się w 1945 i studiował na uniwersytecie Stanforda. Podczas pracy w PARC w Xerox w latach 70 pracował nad systemem do obróbki dokumentów – Gypsy. Wtedy i tam właśnie narodziła się idea wytnij-kopiuj-wklej, którą potem zaniósł do Apple, w którym pracował przez kolejne lata.

Nie wiem, jak wy, ale ja od dziś Metodę Copy’ego Paste’a nazywał będę Metodą Teslera.