-
231. Data: 2012-06-19 01:12:09
Temat: Re: Czym jest programowanie?
Od: Andrzej Jarzabek <a...@g...com>
On 18/06/2012 01:00, slawek wrote:
>
> Uzytkownik "Andrzej Jarzabek" <a...@g...com> napisal w
> wiadomosci grup dyskusyjnych:M...@n...gazeta.
pl...
>> Nie wiem co to jest.
>
> Programowanie wielowatkowe bez synchronizacji. Czy jakos tak.
Nadal kolejność instrukcji ma tam znaczenie. Każdy wątek wykonuje jakąś
sekwencję instrukcji, dla jakiegoś programu "relatywistycznego" A
składającego się z instrukcji (a1, a2, ..., an) możesz znaleźć program
A' o innej semantycem, składający się z tych samych instrukcji, a
różniący się ich kolejnością. Gdyby program był zbiorem instrukcji, to
każdy program składający się z tych samych instrukcji byłby tym samym
programem.
>> Ogólnie nie jest trudno sobie wyobraziae pe?noprawny jezyk progrmaowania,
>> w którym semantyka programu nie zale?y od kolejnooeci instrukcji.
>
> Instrukcje stanowia grupe, musialaby byc to grupa przemienna, tymczasem
> wiekszosc sensownych transformacji przemienna byc nie chce.
Spokojnie. Można mieć język składający się wyłącznie z deklaracji i
definicji. POszczególne instrukcje nie muszą mieć semantyki "zrób to"
tylko "x to jest ...", "y ma taką właściwość, że ...", "z nie może
być..." i tak dalej.
> Pojecie "okreslonej kolejnosci" jest zbedne w definicji. Kolejnosc dla
> programu wielowatkowego moze byc baardzo rózna.
Tylko pod warunkiem, że w każdym wątku wykonuje się tylko jedna
instrukcja. Jeśli w jakimś wątku wykonuje się więcej niż jedna
instrukcja, to może być tak, że przestawienie kolejności tych instrukcji
da inny program, który robi co innego, ergo pojęcie "określonej
kolejności" nie jest zbędne.
Jeśli masz natomiast program, w którym każda instrukcja jest, lub
potencjalnie może być wykonana w dowolnym wątku, przy czym nie jest tak,
że taka instrukcja z kolei zdefiniowana jest jako sekwencja instrukcji,
które są we właśnie tym wątku wykonane (co wynika z założenia -
potencjalnie w osobnym wątku może być wykonana _każda_ z instrukcji w
programie - również instrukcja użyta w definicji innych instrukcji), i
dodatkowo jest to zrobione w ten sposób, że kolejność wykonania
instrukcji w owych wątkach jest dowolna (czyli nie ma synchronizacji
między wątkami wykonującymi poszczególne instrukcje wynikającej z tego,
że te instrukcje są zapisane w programie w takiej a nie innej
kolejności) - to, powtórzę, nie masz raczej do czynienia z paradygmatem
imperatywnym.
Z zapartym tchem czekam na kontrprzykład.
>> Jest pokazane w precyzyjny sposób jak na komputerze o okreoelonej
>> konstrukcji uzyskaae program robi?cy okreoelone rzeczy. Te instrukcje s?
>
> Tak na pierwszy i drugi rzut oka to praca matematyczna.
Nie widzę sprzeczności.
> Równie dobrze
> mozna np. okreslic prace pana Fourie poczatkami tworzenia formatu JPEG.
Gdyby Fourier opisał algorytm kompresji JPEG razem z zastosowaniami, a
pominął jedynie szczegóły typu kolejność bajtów w nagłówkach, sposób
kodowania liczb, albo w jakiej kolejności zapisywane są składowe R, G,
B, to owszem, powiedziałbym, że Fourier wymyślił/wynalazł/stworzył
format JPEG, a ten, kto ustalił kolejność bajtów i resztę go jedynie
opracował. Tylko że Fourier tego nie zrobił.
>> homomorficzne z programem - gdyby maszyna istnia?a, to prze?o?enie ich
>> na kod maszynowy by?oby czysto mechanicznym procesem.
>
> Watpie. Gdyby maszyna istniala, to proces nie bylby mechaniczny - brak
> bylo OCR itp. technik.
Wiesz, nie mam ochoty na taką zabawę. To, co masz tam w tabelkach w
notatkach D i G to są programy komputerowe. Do przełożenia na konkretne
konfiguracjee kart brakuje tylko konwencji kodowania operacji i
'supplying' i 'receiving variable cards'.
-
232. Data: 2012-06-19 02:30:06
Temat: Re: Czym jest programowanie?
Od: Andrzej Jarzabek <a...@g...com>
On 18/06/2012 18:03, AK wrote:
> Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał:
>
>> Również ciekawe, na ile _w praktyce_ UB z powodu null pointer
>> dereference jest bardziej kosztowne niż różne NullPointerException.
>
> Zapusc sobie dowolny serwerek internetowy (na ktorym chodzi np
> jakis CRM dla waaznych klientow:) to sie szybko dowiesz jaka jest
Nie mam aż tak ważnych klientów.
> roznica pomiedzy oblesnym C/C++ abort() em, a wylapaniem
> neispodziewanego wyjatku chocby nawet w samym main()
W C++ nie ma abort() na dereferencji nulla, tylko teoretycznie UB. W
praktyce na sensownym systemie leci SIGSEGV i domyślnie core dump
(chociaż można sobie to obsłużyć inaczej, np. zalogować sam stacktrace).
Na Windowsie jest access violation i domyślnie kiszka, ale zdaje się też
można sobie wygenerować z tego jakiegoś minidumpa, tylko że z kolei na
tym się słabo znam.
> PS: Wyobrazni nie uczyli ?
Jak mawiał Han Solo, wyobrazić to ja sobie mogę wiele. Ale akurat w tym
punkcie, co wyraźnie zaznaczyłem, chodziło mi o praktykę, a nie o to, co
można sobie wyobrazić.
-
233. Data: 2012-06-19 11:10:58
Temat: Re: Czym jest programowanie?
Od: "AK" <n...@n...com>
Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał:
> Nie mam aż tak ważnych klientów.
A to ci uzasadnienie. Bez komentarza :(
> Jak mawiał Han Solo, wyobrazić to ja sobie mogę wiele. Ale akurat w tym punkcie, co
wyraźnie
> zaznaczyłem, chodziło mi o praktykę, a nie o to, co można sobie wyobrazić.
No wiec _praktycznie_ sobie napisz program dopuszczajacy abort
(obojetnie czy na ux czy win) ktory ma czynic cos powazniejszego niz
wyslanie emaila do Cioci.
AK
-
234. Data: 2012-06-19 11:26:40
Temat: Re: [OT] Operatory w C (znowu...)
Od: Michoo <m...@v...pl>
On 18.06.2012 19:09, AK wrote:
> Użytkownik "Michoo" <m...@v...pl> napisał:
>
>> MAX_INT + 1 - 1 //to jest UB
>> MAX_INT + (1 - 1) //to nie
>
> Bzdury pi..rzysz ! ;)
Dokładnie. Bzdury pi..rzysz ! ;)
Jaki jest wynik:
a) 1+1<<2
b) 1<<2+1
c) (1+1)<<2
> W ogolnym przypadku w C/C++:
> (a + b) + c i a + (b + c) to jest _dokladnie_ to samo.
> Udowodnic ? :)
TAK. Udowodnić na bazie standardu a nie popsutej implementacji kompilatora.
--
Pozdrawiam
Michoo
-
235. Data: 2012-06-19 12:20:28
Temat: Re: Czym jest programowanie?
Od: Michoo <m...@v...pl>
On 19.06.2012 11:10, AK wrote:
> Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał:
>
>> Nie mam aż tak ważnych klientów.
>
> A to ci uzasadnienie. Bez komentarza :(
>
>> Jak mawiał Han Solo, wyobrazić to ja sobie mogę wiele. Ale akurat w
>> tym punkcie, co wyraźnie zaznaczyłem, chodziło mi o praktykę, a nie o
>> to, co można sobie wyobrazić.
>
> No wiec _praktycznie_ sobie napisz program dopuszczajacy abort
> (obojetnie czy na ux czy win) ktory ma czynic cos powazniejszego niz
> wyslanie emaila do Cioci.
Tak, tak, oczywiście...
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xdeadbeef, pid=11246, tid=3064605552
# JRE version: 6.0_26-b03
# Java VM: Java HotSpot(TM) Server VM (20.1-b02 mixed mode linux-x86 )
[...]
Current thread (0xdeadbeef): JavaThread "main" [_thread_in_native,
id=11251, stack(0xdeadbeef,0xdeadbeef)]
siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR),
si_addr=0x0000007c
--
Pozdrawiam
Michoo
-
236. Data: 2012-06-19 13:26:51
Temat: Re: Czym jest programowanie?
Od: Andrzej Jarzabek <a...@g...com>
On Jun 19, 10:10 am, "AK" <n...@n...com> wrote:
>
> No wiec _praktycznie_ sobie napisz program dopuszczajacy abort
> (obojetnie czy na ux czy win) ktory ma czynic cos powazniejszego niz
> wyslanie emaila do Cioci.
Ale po co miałbym to robić? I na tej samej zasadzie - po co miałbym
pisać program, który celowo dopuszcza rzucenie np. null pointer
exception w Javie? Jakie to ma mieć zastosowanie? W obydwu
przypadkach, jeśli się spodziewam, że coś może zwrócić nulla, to go
jawnie obsługuję.
-
237. Data: 2012-06-19 23:41:30
Temat: Re: Czym jest programowanie?
Od: "slawek" <s...@h...pl>
Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał w
wiadomości grup dyskusyjnych:jrockd$f7s$...@i...gazeta.pl...
> Nadal kolejność instrukcji ma tam znaczenie.
Podobno nie.
-
238. Data: 2012-06-19 23:47:36
Temat: Re: Czym jest programowanie?
Od: "slawek" <s...@h...pl>
Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał w
wiadomości grup dyskusyjnych:jrockd$f7s$...@i...gazeta.pl...
> Spokojnie. Można mieć język składający się wyłącznie z deklaracji i
> definicji. POszczególne instrukcje nie muszą mieć semantyki "zrób to"
> tylko "x to jest ...", "y ma taką właściwość, że ...", "z nie może być..."
> i tak dalej.
Mizar jest niezłym przykładem.
> Tylko pod warunkiem, że w każdym wątku wykonuje się tylko jedna
> instrukcja. Jeśli w jakimś wątku wykonuje się więcej niż jedna instrukcja,
> to może być tak, że przestawienie kolejności tych instrukcji da inny
> program, który robi co innego, ergo pojęcie "określonej kolejności" nie
> jest zbędne.
A cholera wie jak działa mózg szczura. A co dopiero człowieka lub innej
małpy.
> Wiesz, nie mam ochoty na taką zabawę. To, co masz tam w tabelkach w
> notatkach D i G to są programy komputerowe. Do przełożenia na konkretne
> konfiguracjee kart brakuje tylko konwencji kodowania operacji i
> 'supplying' i 'receiving variable cards'.
Cóż, to nie są programy komputerowe... a co najwyżej kod źródłowy takich
programów.
Inaczej mówiąc - nikt nie zdebugował tego na działającym komputerze, więc
może zadziałać, ale może i nie zadziałać.
-
239. Data: 2012-06-19 23:50:36
Temat: Re: Czym jest programowanie?
Od: "slawek" <s...@h...pl>
Użytkownik "AK" <n...@n...com> napisał w wiadomości grup
dyskusyjnych:jrpfne$769$...@i...gazeta.pl...
> No wiec _praktycznie_ sobie napisz program dopuszczajacy abort
> (obojetnie czy na ux czy win) ktory ma czynic cos powazniejszego niz
> wyslanie emaila do Cioci.
A program który ma robić abort jak zrobi abort (być może nie dlatego że
tego) to działa dobrze czy źle?
-
240. Data: 2012-06-20 09:00:34
Temat: Re: Czym jest programowanie?
Od: Andrzej Jarzabek <a...@g...com>
On 19/06/2012 22:47, slawek wrote:
>
> Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał w
> wiadomości grup dyskusyjnych:jrockd$f7s$...@i...gazeta.pl...
>> Tylko pod warunkiem, że w każdym wątku wykonuje się tylko jedna
>> instrukcja. Jeśli w jakimś wątku wykonuje się więcej niż jedna
>> instrukcja, to może być tak, że przestawienie kolejności tych
>> instrukcji da inny program, który robi co innego, ergo pojęcie
>> "określonej kolejności" nie jest zbędne.
>
> A cholera wie jak działa mózg szczura. A co dopiero człowieka lub innej
> małpy.
Mówiliśmy o programach komputerowych, nie o mózgach.
>> Wiesz, nie mam ochoty na taką zabawę. To, co masz tam w tabelkach w
>> notatkach D i G to są programy komputerowe. Do przełożenia na
>> konkretne konfiguracjee kart brakuje tylko konwencji kodowania
>> operacji i 'supplying' i 'receiving variable cards'.
>
> Cóż, to nie są programy komputerowe... a co najwyżej kod źródłowy takich
> programów.
Kod źródłowy programu komputerowego też jest programem komputerowym.
Inaczej programy w językach interpretowanych nie byłyby programami
komputerowymi.
W konktekście programowania jako tworzenia programów komputerowych
definicja wykluczające kod źródłowy jest tym bardziej bez sensu.
> Inaczej mówiąc - nikt nie zdebugował tego na działającym komputerze,
> więc może zadziałać, ale może i nie zadziałać.
Nawet bez debugowania widać, że w pierwszym programie jest bug.