-
31. Data: 2014-01-14 19:52:59
Temat: Re: pryszcze...
Od: firr <p...@g...com>
W dniu wtorek, 14 stycznia 2014 19:19:26 UTC+1 użytkownik R.e.m.e.K napisał:
> Dnia Tue, 14 Jan 2014 18:54:20 +0100, inny punkt siedzenia... napisał(a):
>
>
>
> > chociaż muszę jeszcze dodać, że mam też mętlik związany ze wskaźnikiem na
>
> > wskaźnik... jak się deklaruje a jak korzysta i kiedy?
>
> >
>
> > P.S. a czym się różni deklaracja od definicji?
>
>
>
> Nie kompromituj sie polglowku, poczytaj raz w zyciu cokolwiek:
>
>
>
> http://pl.wikipedia.org/wiki/Kategoria:Konstrukcje_p
rogramistyczne
>
>
>
>
>
> ps. Macieju, czy zdajesz sobie sprawe z kim piszesz?
>
>
>
> --
>
> pozdro
>
> R.e.m.e.K
sam sie nie kompromituj 1%-głowku, o ile identyfikator ma w sobie sporo oryginalnosci
to kolega mz jest jawnie tępy rzucajac takimi
tekstami :c
-
32. Data: 2014-01-14 21:05:23
Temat: Re: pryszcze...
Od: Wojciech Muła <w...@g...com>
On Tuesday, January 14, 2014 11:03:36 AM UTC+1, g...@g...com wrote:
> > >Na przyklad ewaluacja kodu "w locie".
> > A co to jest?
>
> To jest to, co na przyklad javascript albo
> php udostepnia (w dosc posledniej formie)
> pod postacia funkcji "eval"
To są dziury bezpieczeństwa. Eval is evil.
Jak potrzebujesz liczyć coś dynamicznie, to bierzesz
parser i coś robisz z drzewem rozbioru gramatycznego.
> > Hm... Ade i Eiffel polecam
>
> Dlaczego?
Jeśli chodzi o Adę, to żeby zobaczyć jak wygląda
język z silnym, statycznym systemem typów, modułami,
generykami i wbudowaną współbieżnością.
w.
-
33. Data: 2014-01-14 21:15:27
Temat: Re: pryszcze...
Od: Wojciech Muła <w...@g...com>
On Monday, January 13, 2014 4:19:37 PM UTC+1, g...@g...com wrote:
> Mysle, ze gdyby w projektach tego rodzaju system typow
> naprawde dawal tak wielkie korzysci, to by go tak latwo
> nie zmarginalizowano.
On nie jest marginalizowany. Do rzeczy typu tysiąc pięćsetny unikalny
system blogowy PHP, czy Ruby wystarczy. Gdy gra zaczyna się o wydajność,
zajętość pamięci, to języki kompilowane wygrywają z definicji.
BTW PHP5[1] umożliwiaja od jakiegoś czasu stosowanie type hintingu
w parametrach funkcji/metod. Co prawda to się dzieje w runtime, ale
to jakaś forma kontroli typów. W Pythonie też zdaje się coś takiego chcą.
w.
[1] http://www.php.net/manual/en/language.oop5.typehinti
ng.php
-
34. Data: 2014-01-14 21:19:13
Temat: Re: pryszcze...
Od: g...@g...com
W dniu wtorek, 14 stycznia 2014 19:19:26 UTC+1 użytkownik R.e.m.e.K napisał:
> Dnia Tue, 14 Jan 2014 18:54:20 +0100, inny punkt siedzenia... napisał(a):
>
> > chociaż muszę jeszcze dodać, że mam też mętlik związany ze wskaźnikiem na
> > wskaźnik... jak się deklaruje a jak korzysta i kiedy?
> >
> > P.S. a czym się różni deklaracja od definicji?
>
> Nie kompromituj sie polglowku, poczytaj raz w zyciu cokolwiek:
>
> http://pl.wikipedia.org/wiki/Kategoria:Konstrukcje_p
rogramistyczne
Chyba nie ma potrzeby wyzywania sie. Faktycznie w internecie
mozna znalezc duzo informacji, ale tez trzeba wiedziec, gdzie
szukac, wyrobic w sobie dobre nawyki itd.
W kazdym razie wydaje mi sie, ze sa bardziej konstruktywne
sposoby wzajemnej motywacji do zdobywania wiedzy, niz
obrzucanie sie gownem.
Jezeli idzie o meritum -- tzn. odroznienie deklaracji od
definicji -- to tutaj akurat nazwy sa bardzo dobrze dobrane
i pasuja nie tylko do kontekstu czysto informatycznego,
ale do tego, jak sie tych slow powszechnie uzywa.
Najkrocej rzecz ujmujac, definicja jest pojeciowym
uchwyceniem istoty rzeczy, albo ustanowieniem relacji
pomiedzy nazwa, a tym, do czego ta nazwa sie odnosi.
Deklaracja zas jest jedynie okresleniem pewnego aspektu
danej rzeczy, albo swojego rodzaju obietnica, ze pewna
rzecz bedzie miala okreslona wlasnosc.
Definicje zatem nadaja nazwy nowym pojeciom, z ktorych
tworzy sie systemy. W szczegolnosci, w przypadku programow
w jezyku C definiuje sie struktury, funkcje albo procedury
oraz makra (a np. w C++ dodatkowo definiuje sie klasy; w
prologu dla odmiany definiuje sie predykaty).
Na przyklad
double square(double x) { return x*x; }
mowi nam, czym jest kwadrat danej liczby.
Deklaracje funkcji w jezyku C -- w kontekscie systemu typow
-- nazywa sie tez niekiedy sygnaturami albo prototypami.
Na przyklad w wielu plikach naglowkowych znajdziesz cos
takiego:
double square(double x);
Mowi to tyle, ze "square" jest funkcja pobierajaca jeden
argument typu double, i zwracajaca rowniez argument typu
double. Ale nie mowi nic o samym sposobie przeksztalcenia,
czy tez -- jak sie ma wartosc argumentu do wartosci
zwracanej.
W jezyku C oprocz funkcji mozna deklarowac zmienne.
Jezeli masz cos takiego w pliku zrodlowym (.c)
int n;
to to jest (poniekad) definicja, tzn. mowi nam to
tyle, ze "n jest zmienna przechowujaca jakas liczbe
calkowita". Ale mozesz tez miec w pliku naglowkowym
cos takiego:
extern int n;
I to jest deklaracja (albo inaczej obietnica),
ktora mowi, ze "w ktoryms z plikow zrodlowych jest
zdefiniowana zmienna n, mogaca przechowywac liczbe
calkowita".
> ps. Macieju, czy zdajesz sobie sprawe z kim piszesz?
Chyba nie zdaje. Jakze bym mial?
-
35. Data: 2014-01-14 21:33:33
Temat: Re: pryszcze...
Od: g...@g...com
W dniu wtorek, 14 stycznia 2014 21:05:23 UTC+1 użytkownik Wojciech Muła napisał:
> On Tuesday, January 14, 2014 11:03:36 AM UTC+1, g...@g...com wrote:
>
> > > >Na przyklad ewaluacja kodu "w locie".
> > > A co to jest?
> >
> > To jest to, co na przyklad javascript albo
> > php udostepnia (w dosc posledniej formie)
> > pod postacia funkcji "eval"
>
> To są dziury bezpieczeństwa. Eval is evil.
Eval is evil to dobra mantra dla poczatkujacych.
(I latwo zapamietac, bo wystarczy zmienic jedna
literke :D). Jezeli mamy jezyk, w ktorym jest
dobrze zrobiona obsluga modulow (taki jak np. Scheme ;]),
to mozna bez ryzyka wykonywac kod uzytkownika w danym module,
zachowujac pelna kontrole nad funkcjami systemowymi,
ktore sa dla tego kodu dostepne.
Mozna rowniez odpalic evala w osobnym watku, ktoremu
mozna ograniczyc maksymalny czas wykonania.
> Jak potrzebujesz liczyć coś dynamicznie, to bierzesz
> parser i coś robisz z drzewem rozbioru gramatycznego.
I wlasnie to mam na mysli, mowiac o wynajdowaniu
kola od nowa. Jest takie cos, jak "Greenspun's tenth rule":
"Any sufficiently complicated C or Fortran program
contains an ad hoc, informally-specified, bug-ridden,
slow implementation of half of Common Lisp."
Ale zeby nie byc goloslownym. Jeden z najbardziej szanowanych
przeze mnie programistow, John Carmack, stworzyl kiedys engine
dla gry komputerowej Quake. Przy okazji stworzyl rowniez
jezyk skryptowy, dziedziczacy z C, ktory nosil nieszczegolnie
zaskakujaca nazwe "Quake C". I mimo ze sie przy tym narobil,
na pewno mial parser i robil cos z drzewem rozbioru gramatycznego,
to jezyk okazal sie niewygodny, niewydajny i kaleki. Trudno jest
ad hoc zaprojektowac dobry jezyk programowania, i jezeli jest
taka mozliwosc, to lepiej korzystac z istniejacych i juz dobrze
zaprojektowanych jezykow. Nie dosc, ze to mniej roboty przy
implementacji, to jeszcze mniej nauki dla osob, ktore maja
z tego jezyka korzystac.
-
36. Data: 2014-01-14 21:48:03
Temat: Re: pryszcze...
Od: g...@g...com
W dniu wtorek, 14 stycznia 2014 21:15:27 UTC+1 użytkownik Wojciech Muła napisał:
> On Monday, January 13, 2014 4:19:37 PM UTC+1, g...@g...com wrote:
>
> > Mysle, ze gdyby w projektach tego rodzaju system typow
> > naprawde dawal tak wielkie korzysci, to by go tak latwo
> > nie zmarginalizowano.
>
> On nie jest marginalizowany.
Gdybym mial zgadywac, zgadywalbym, ze coraz
wiecej nowo powstajacych systemow informatycznych
nie korzysta ze statycznych systemow typow.
Gdybym mial zgadywac, zgadywalbym rowniez,
ze w coraz wiekszej ilosci systemow zdarzaja
sie bledy niedopasowania typu w czasie
uruchomienia, ktorych mozna by bylo uniknac,
stosujac metody sprzed 40 lat :)
> Do rzeczy typu tysiąc pięćsetny unikalny
> system blogowy PHP, czy Ruby wystarczy.
> Gdy gra zaczyna się o wydajność,
> zajętość pamięci, to języki kompilowane
> wygrywają z definicji.
Z tym tez bywa roznie. Po pierwsze, nic nie
stoi na przeszkodzie, zeby kompilowac PHP
albo interpretowac C.
Po drugie niekiedy tanszym rozwiazaniem
jest kupno szybszego sprzetu albo wiekszej
ilosci pamieci. Po trzecie statyczny system
typow na pewno nie jest sposobem na
zwiekszenie wydajnosci czy zmniejszenie
zajetosci pamieci, tylko na zwiekszenie
niezawodnosci oprogramowania przez unikniecie
pewnej klasy bledow.
> BTW PHP5[1] umożliwiaja od jakiegoś czasu stosowanie type hintingu
> w parametrach funkcji/metod. Co prawda to się dzieje w runtime, ale
> to jakaś forma kontroli typów. W Pythonie też zdaje się coś takiego chcą.
Ja im sie wcale nie dziwie. Bo statyczna kontrola
typow jest miodzio (a PHP, jako ze ukradl skladnie
z C, ma naturalne predyspozycje syntaktyczne
do anotacji).
-
37. Data: 2014-01-14 22:24:33
Temat: Re: pryszcze...
Od: "R.e.m.e.K" <g...@d...null>
Dnia Tue, 14 Jan 2014 10:52:59 -0800 (PST), firr napisał(a):
>> ps. Macieju, czy zdajesz sobie sprawe z kim piszesz?
>
> sam sie nie kompromituj 1%-głowku, o ile identyfikator ma w sobie sporo
oryginalnosci
> to kolega mz jest jawnie tępy rzucajac takimi tekstami :c
Nie znam kolegi mz, ale zgaduje, ze skoro to Twoj kolega to trzyma adekwatny
poziom.
--
pozdro
R.e.m.e.K
-
38. Data: 2014-01-14 22:27:08
Temat: Re: pryszcze...
Od: "R.e.m.e.K" <g...@d...null>
Dnia Tue, 14 Jan 2014 12:19:13 -0800 (PST), g...@g...com
napisał(a):
>> ps. Macieju, czy zdajesz sobie sprawe z kim piszesz?
>
> Chyba nie zdaje. Jakze bym mial?
To najwiekszy troll ostatnich lat, wystepujacy po kilkoma ksywami, srajacy
bzdetami na wielu grupach i obrzucajacy wszystkich obelgami o podlozu
politycznym.
Zasada jest taka, ze zadaje pytanie i nie czyta odpowiedzi lub ich nie
rozumie i bulgocze do znudzenia. Szkoda czasu.
--
pozdro
R.e.m.e.K
-
39. Data: 2014-01-15 00:35:32
Temat: Re: pryszcze...
Od: A.L. <a...@a...com>
On Tue, 14 Jan 2014 12:33:33 -0800 (PST), g...@g...com
wrote:
>W dniu wtorek, 14 stycznia 2014 21:05:23 UTC+1 użytkownik Wojciech Muła napisał:
>> On Tuesday, January 14, 2014 11:03:36 AM UTC+1, g...@g...com wrote:
>>
>> > > >Na przyklad ewaluacja kodu "w locie".
>> > > A co to jest?
>> >
>> > To jest to, co na przyklad javascript albo
>> > php udostepnia (w dosc posledniej formie)
>> > pod postacia funkcji "eval"
>>
>> To są dziury bezpieczeństwa. Eval is evil.
>
>Eval is evil to dobra mantra dla poczatkujacych.
>(I latwo zapamietac, bo wystarczy zmienic jedna
>literke :D). Jezeli mamy jezyk, w ktorym jest
>dobrze zrobiona obsluga modulow (taki jak np. Scheme ;]),
>to mozna bez ryzyka wykonywac kod uzytkownika w danym module,
>zachowujac pelna kontrole nad funkcjami systemowymi,
>ktore sa dla tego kodu dostepne.
>Mozna rowniez odpalic evala w osobnym watku, ktoremu
>mozna ograniczyc maksymalny czas wykonania.
>
>> Jak potrzebujesz liczyć coś dynamicznie, to bierzesz
>> parser i coś robisz z drzewem rozbioru gramatycznego.
>
>I wlasnie to mam na mysli, mowiac o wynajdowaniu
>kola od nowa. Jest takie cos, jak "Greenspun's tenth rule":
>
>"Any sufficiently complicated C or Fortran program
>contains an ad hoc, informally-specified, bug-ridden,
>slow implementation of half of Common Lisp."
Z calym szacunkiem, kompletny idiotyzm. Niezaleznie od tego kto to
powiedzial (chyba wiem kto, w kazdym arzie oszolom Lispowy)
A.L.
-
40. Data: 2014-01-15 00:37:19
Temat: Re: pryszcze...
Od: A.L. <a...@a...com>
On Tue, 14 Jan 2014 02:22:11 -0800 (PST), g...@g...com
wrote:
>
>Jednak w moim odczuciu przyklady, ktore byly podane pod
>linkiem, ktory wkleil A.L., majace dowodzic, ze system
>typow jezyka C nie jest bezpieczny, byly raczej sztuczne
>i moglyby byc problemem tylko dla osob, ktore maja uzywac
>systemu typow, nie wiedzac w ogole, czym on jest.
jakei sztuczne? Ze wszystko mzoe byc 'pointer to void"?...
A.L.