-
Data: 2010-12-16 11:40:32
Temat: Re: Jaki j?zyk - ceny?
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Dec 16, 9:38 am, Maciej Sobczak <s...@g...com> wrote:
>
> > > Te języki nigdy nie zdobędą mainstream'u, bo nie odzwierciedlają ani
> > > tego jak działa komputer, ani tego, jak myśli człowiek. Będą sobie
>
> > Żaden język programowania nie odzwierciedla tego, jak myśli człowiek.
>
> Zgadza się. Ale wtedy dobrze by było, żeby był chociaż przyjazdy dla
> maszyny. Jeśli nie jest przyjazny ani dla maszyny ani dla człowieka,
> to jego rola będzie co najwyżej eksploracyjna. Jakiś mniej lub
> bardziej spektakularny sukces tu lub tam, ale na mainstream nie ma
> szans.
Nie zgadzam się. SQL jest mainstreamowy na ten przykład.
> > > Skoro nie udało
> > > się to przez ostatnie 50 lat, to nie widzę, co nagle miałoby się tu
> > > zmienić.
>
> > Rozpowszechnienie architektur równoległych.
>
> No i?
>
> Taka historyjka:
>
> Jakiś czas temu Sun zorganizował konkurs na najszybszy program w
> jakimś kryptograficznym temacie. Jako nagrodę rzeczową zaoferowali
> swój serwer T1000. Czyli nie jakiś tam hipisowski benchmark, ale
> prawdziwe zawody. Trochę musieli się zaczerwienić, bo zwycięzcą nie
> został żaden z programów napisanych w ich własnych technologiach
> (trochę wstyd, nie?) ani żaden funkcjonalny, tylko program w języku
> 100% imperatywnym:
>
> http://www.adaic.org/news/perfcont.html
>
> Pytanie: dlaczego?
>
> Nie, poważnie pytam: *dlaczego*?
Poważnie odpowiem: bo to jest mały, wyizolowany, dobrze znany problem,
nad którego optymalizacją masa ludzi ślęczy latami.
Bo w tym przypadku dłubane rozwiązanie było na bardzo konkretna
maszynę z konkretnym systemem operacyjnym, gdzie wszystkie
charakterystyki są dokładnie znane, więc można bardzo dokładnie zadać
pytanie, gdzie przy znanej ilości wątków hardware-owych, znanych co do
instrukcji maszynowej kawałkach kodu, znanych czasach wykonania tego
kodu, znanych wielkościach cache, znanych kosztach tworzenia,
przełączania itd. wątków, znanych kosztach wszelkich możliwych technik
synchronizacji, mając do dyspozycji zespół matermatyków i czas na
skonstuowanie modelu zagadnienia i policzenia tego modelu na dość
mocnym komputerze - jak najlepiej zrónoleglić ten program.
W przypadku znacznie większych programów komercyjnych, zawierających
tysiące drobnych problemów, nie tak trudnych w sensie obliczeniowym
rzecz jasna, ale potencjalnie o podobnej trudności jeśli chodzi o
optymalizację na architekturę równoległą, takiego dłubania nie da się
zastosować. Pewnym ideałem byłoby zadanie problemu w ten sposób, żeby
kompilator sam mógł wiedzieć, które kawałki kodu można zrównoleglić i
znając charakterystyki docelowej maszyny zdecydował kiedy
zrównoleglać, a kiedy nie, kiedy opłaca się powielać, a kiedy
synchronizować itd. Oczywiście kompilator często nie znajdzie
rozwiązania optymalnego, ale np. w przypadku maszyny z setkami wątków
hardware-owych, wykonywaniem poleceń maszynowych poza kolejnością,
operacjami atomowymi, synchronizacją cache itd. kompilator jest
potencjalnie w stanie znaleźć rozwiązanie wystarczająco dobre, gdy
programistom rozpisującym problem na wątki, muteksy, kolejki lock-free
itd. zajęłoby to wiele tygodni, którą to pracę trzebaby znowu
powtórzyć jak się okaże, że trzeba ten program zaimplementowac ina
inny sprzęt.
Problem jest w tej chwili taki, i to jest druga połowa odpowiedzi na
Twoje pytanie, że ten język jeszcze nie istnieje. Ale pracuje się nad
tym i wiadomo, że takie wymagania znacznie łatwiej mozna spełnić
językiem funkcyjnym lub zbliżonym, niż językiem imperatywnym.
> Disclaimer: nie chodzi mi o udowadnianie wyższości Ady nad
> czymkolwiek, tylko na pokazaniu, że języki funkcjonalne nie wnoszą
> niczego niezastąpionego w temacie wspóbieżności. Wydajne programy
> współbieżne można pisać bez nich a powyższa historyjka pokazuje, że
> może nawet bez nich dopiero jest wydajnie.
Wnoszą tyle, że można napisać jeden program i patrzeć jak się skaluje.
Imperatywnie i na jawnych wątkaach można teoretycznie zrobić tak samo
albo nawet lepiej, ale będzie to oznaczało kupę pracy programistów,
wielokrotne przepisywanie kodu, trudne do namierzenia bugi itd.
> Takie przykładowo współbieżne systemy bazodanowe istniały od tzw.
> "zawsze", więc to nie jest tak, żę języki funkcjonalne otwierają
> jakieś nowe nieznane wcześniej możliwości.
No więc SQL jest właśnie świetnym przykładem języka o paradygmacie
innego, niż imperatywny, który się przyjął w mainstreamie, i który się
znakomicie zrównolegla właśnie dzięki temu, że nie jest imperatywny.
Ale oczywiście języki funkcjonalne otwierają jakieś nowe możliwości
kompletnie niemożliwe dla SQL.
> > Nie zdarzyło mi się pracować przy żadnym projekcie, gdzie używano by
> > języka funkcyjnego
>
> Dlaczego? Przecież one istnieją od 50 lat. Istniały długo zanim
> wynaleziono Javę.
Bo zasadnicza część mojej pracy zawodowej przypadała na okres
darmowego lunchu. Kilka lat temu darmowy lunch się skończył, ale
branża ma swoją bezwładność. Np. w ostatnich dwóch projektach, w
których pracowałem, ciągłość codebase jest od lat 90-tych. Nawet tam,
gdzie projekty były greenfieldowe, pracowali nad nimi ludzie, którzy
już wcześniej pracowali w danej firmie i znali takie a nie inne
technologie.
Kolejna sprawa jest taka, że generalnie stare języki funkcyjne nie
były tworzone z myślą o masowym zrównolegleniu. Np. Lisp, o którym jak
sądzę myślisz, ani nie jest językiem czysto funkcyjnym, ani też nie
został zaprojektowany pod kątem optymalizacji.
Być może powodem jest też to, że nie znam żadnego języka funkcyjnego w
wystarczająco dobrym stopniu, więc jeśli ktoś szuka programistów w
Haskellu czy F#, to mnie raczej nie zatrudni.
> > Są rzeczy, do których dopuszcza
> > management, o których się nie śniło waszym filozofom.
>
> Fajny ten Wasz management. Naprawdę. :-)
To jest doświadczenie z kilku różnych managementów, plus w różny
sposób zdobywana wiedza jakie się stosuje rozwiązania również tam,
gdzie osobiście nie pracowałem. Na ile się orientuję, nie jest to
jakieś bardzo niezwykłe.
Następne wpisy z tego wątku
- 16.12.10 11:56 Andrzej Jarzabek
- 16.12.10 11:59 Andrzej Jarzabek
- 16.12.10 12:17 A.L.
- 16.12.10 12:32 Andrzej Jarzabek
- 16.12.10 12:33 A.L.
- 16.12.10 12:37 Andrzej Jarzabek
- 16.12.10 13:05 A.L.
- 16.12.10 14:09 Maciej Sobczak
- 16.12.10 14:15 Maciej Sobczak
- 16.12.10 14:20 A.L.
- 16.12.10 14:33 R. P.
- 16.12.10 14:45 Mariusz Kruk
- 16.12.10 16:31 A.L.
- 16.12.10 20:35 Michoo
- 16.12.10 20:35 Michoo
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-14 granice
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek