-
Data: 2013-02-13 18:55:37
Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Feb 13, 9:10 am, Maciej Sobczak <s...@g...com> wrote:
> W dniu wtorek, 12 lutego 2013 20:14:34 UTC+1 użytkownik Andrzej Jarzabek napisał:
>
> > > > > Poza tym, że obiektowość powstała z myślą o dużych systemach
> > > > W którym momencie?
>
> > > W takim, że w małych nie było powodów, żeby powstała.
>
> > Kto konkretnie, kiedy i co takiego zrobił z myślą o dużych systemach?
>
> > Bo mi wygląda na to, że opowiadasz o wymyślonej przez siebie historii
> > OO, a nie tej, która faktycznie miała miejsce.
>
> Bo ta, która miała miejsce, absolutnie nie dotyczyła dużych systemów,
> tylko systemów sztucznej inteligencji i symulacji? Bo, jak wszyscy wiedzą,
> sztuczna inteligencja i symulacje to malutkie programiki, i właśnie w takim
> kontekście wymyślono OO, żeby te malutkie programiki pisało się jeszcze fajniej?
Krótko: masz mniej więcej dwa etapy wymyślania OO, w uproszczeniu
Simula i Smalltalk. Simula została wymyślona pod kątem symulacji;
symulacje jako takie moga być różnej wielkości systemami,
niekoniecznie dużymi.
Drugi etap to wymyślanie ogólnego paradygmatu programowania na
zasadzie "jak pisać programy, żeby było dobrze" - bez szczególnego
skupiania się ani nad konkretnymi zastosowaniami, ani nad skalą.
Smalltalk był stosowany w biznesie, ale został wymyślony jako język do
celów edukacyjnych - czyli raczej do pisania małych programów.
> > > Przewinąłem losowo i trafiłem na argument "Everything has to be an object".
> > Poszczególne argumenty odnoszą się do różnych definicji
> > obiektowości...
>
> Do jakich? Nie napisali a ja nie znam żadnej definicji, do której przykładowe dwa
argumenty by się odnosiły.
To się odnosi do tego, co pisałem powyżej: Simula wprowadziła pewne
cechy języka programowania, które dzisiaj są uważane za
charakterystyczne dla OO, ale nikt wtedy nie mówił o "object oriented
programming". Taka koncepcja została wymyślona później, biorąc to, co
było w Simuli-67 za podstawę i rozwijając to w ogólny paradygmat
programowania.
To, co natomiast jest w popularnym rozumieniu sprzedawane jako OO jest
jakąś tam, zazwyczaj mocno niepełną, adaptacją tej koncepcji. C++
nigdy nie był tworzony jako język OO, jest natomiast bezpośrednio
adaptacją koncepcji z Simuli na grunt języka C. Można w C++ pisać OO w
pierwotnym sensie, i na pewno klasy i dziedziczenie w tym pomagają.
Java pierwotnie miała być językiem w miarę wiernie realizującym tę
koncepcję OO, do której należy również zasada "everything is an
object", ale zdecydowano się złamać między innymi tę zasadę, bo było
"too slow".
Jeśli chodzi o takie OO jak jest w Javie czy C++, to oczywiście
nietrudno znaleźć problemy przeszkadzające w tworzeniu dużych
systemów, dla których "prawdziwe" OO ma dobre rozwiązanie. Na dzień
dobry - kiepskie wsparcie dla współbieżności i związane z tym wyścigi
i problemy z synchronizacją.
> > Technicznie nawet assembler nie posiada cech sprzecznych z dużymi
> > systemami,
>
> Ma, bo przez brak czytelnego wsparcia dla tworzenia abstrakcji nie sprzyja
Nie załapałeś. "Sprzeczne" nie znaczy "nie sprzyja", "sprzeczne"
znaczy obiektywnie uniemożliwia.
Ja rozumiem, że chodziło ci o cechy nie sprzyjające, ale tu właśnie
wychodzi kwestia subiektywności - sprzeczność można uznać za cechę
obiektywną (jeśli coś jest z czymś sprzeczne, to nikt nie da rady).
Sprzyjanie lub nie sprzyjanie jest subiektywne, ale można postulować
intersubiektywny konsensus: assembler nie sprzyja tak w ogóle, bo
prawie każdemu przeszkadza, a ci, którym sprzyja, i tak gorzej (mniej
wydajnie, z większą ilością błędów, z wadami typu brak przenośności)
tworzą w assemblerze niż inni w językach wyższych poziomów.
Podobny konsensus masz w sprawie goto czy nawet powiedzmy w kwestii OO
(choć ta ostatnia jest bardziej kontrowersyjna).
Natomiast w kwestii dynamicznego typowania nie ma takiego konsensusu.
Dynamiczne programowanie ma długą tradycję i przydatne dla wielu ludzi
techniki dla języków takich jak Lisp, Smalltalk, Erlang czy nawet
Python czy Ruby nie są łatwe ani tanie do odtworzenia w językach ze
statycznym systemem typów. Systemów w tych językach powstało i nadal
powstaje sporo i nie ma przekonywaujących dowodów empirycznych na to,
że mają znacząco większe problemy z niezawodnością niż systemy pisane
w C++ czy w Javie.
> > okoliczności. Jeśli np. chcesz mieć UI w przeglądarce, to możesz
> > zaimplementować go:
>
> > * w dynamicznym Javascript
> > * jako aplikacja flashowa w dynamicznym actionScript czy jak to się
> > tam nazywa
> > * jako applet Javowy
> > * w C++ jako komponent ActiveX
>
> > Nie powiesz chyba, że skoro używasz już C++ albo Javy, to rozwiązanie
> > z tym właśnie językiem jest oczywistym wyborem.
>
> Nie jest.
> Mogę jedynie ubolewać, że w kategorii "UI w przeglądarce" rynek nie wypracował
> safysfakcjonyjących rozwiązań.
Jest całkiem sporo ludzi, których wystarczająco satysfakcjonuje
Javascript.
> Niektórzy pokładają nadzieje w HTML5, ale to tylko czas pokaże, czy te nadzieje się
spełnią.
HTML5 nadal będzie programowany w Javascripcie.
[...]
> > postanowiłem zaimplementowac embedded DSL i wybrałem do tego język
> > Groovy,
> [...]
>
> Tak, też tego używamy.
No i popatrz, wcale nie musze cie przekonywać do używania języka
dynamicznie typowanego, bo już używacie.
> > Na zasadzie: "postawiliśmy checkboxa dla Scali bo ma lambdy? Proszę o
> > konkretny dowód na to, że języki z lambdami są mniej błedogenne niż
> > języki bez lambd".
>
> To bardzo dobry argument. Dlatego nie wprowadziłbym Scali dlatego że ma
> lambdy myśląc o mniejszej błędogenności.
No to immutable data czy cokolwiek. Problem oglnie taki, że bardzo
trudno udowodnić takie rzeczy inaczej niż "mnie się tak wydaje".
Dobrych danych empirycznych nie ma, więc nie wiadomo co innego miałoby
być dobrym argumentem. Jeśli można argumentować z autorytetu, to
przecież bez problemu znajdziesz wielu guru którzy twierdzą, że języki
dynamicznie typowane rządzą (i równie wielu, którzy twierdzą dokładnie
przeciwnie).
Następne wpisy z tego wątku
- 13.02.13 19:09 AK
- 13.02.13 23:25 Maciej Sobczak
- 14.02.13 09:18 Andrzej Jarzabek
- 14.02.13 10:22 Maciej Sobczak
- 14.02.13 11:11 firr kenobi
- 14.02.13 23:57 Andrzej Jarzabek
- 15.02.13 01:08 Andrzej Jarzabek
- 15.02.13 09:20 firr kenobi
- 15.02.13 10:37 Maciej Sobczak
- 15.02.13 10:59 Maciej Sobczak
- 15.02.13 11:20 AK
- 15.02.13 11:52 Andrzej Jarzabek
- 15.02.13 12:20 AK
- 15.02.13 12:29 Andrzej Jarzabek
- 15.02.13 15:34 firr kenobi
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-03 ROG
- 2025-07-03 OZE dały Polsce więcej prądu niż elektrownie węglowe
- 2025-07-03 Dlaczego nikt nie powiadamia służb!
- 2025-07-02 Jaka ładowarka sieciowa do Iphona?
- 2025-07-02 ,,The Plot to Get RFK" (,,Spisek, by pozbyć się RFK")
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Rozkaz 16-2025: 2025-06-19 Apelacja Do Wyroku Sądu Rej. w Sprawie IVRNs 295-23
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Inżynierowie... inżynierzy...
- 2025-07-02 Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 2025-07-02 Kto potrafi sprawdzić aku BMW 48V 10Ah Li-Ion do mini hybrydy, czy sprawny ?
- 2025-07-02 Warszawa => Senior IT Recruitment Consultant <=
- 2025-07-02 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-02 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-07-02 Warszawa => Inżynier oprogramowania .Net <=