komentarze
AndreeZobacz profil
Poziom ostrzeżenia: 0%
Andree2012.10.25, 13:18
13#1
Zmniejszenie procesu technologicznego pozwala tworzyć bardziej energooszczędne układy, co ma znaczenie zwłaszcza w urządzeniach mobilnych.
Ale częstotliwości pracy za bardzo już nie udaje się powiększyć od czasów Pentium 4 Extreme Edition (2005 r. 3,73 GHz). Co do zwiększania ilości rdzeni, wąskim gardłem okazały się nadal powolne pamięci RAM i trudności w zrównoleglaniu kodu.
Poza tym pomimo większej dostępnej ilości rdzeni, problemy takie jak rozpoznawanie mowy czy pisma odręcznego, a tym bardziej rozumienie czy tłumaczenie mowy (czy choćby tekstów) z jednego języka na drugi, nadal nie są zadowalająco rozwiązane. Już nie mówiąc o widzeniu maszynowym, niezbędnym autonomicznym robotom.
Moim zdaniem to sam model obliczeń w architekturze von Neumanna i używane języki programowania są nieadekwatne do tych zastosowań, może przyszedł czas na projektowanie i tworzenie układów naśladujących analogowe sieci nerwowe?
mlody kurasiokZobacz profil
Poziom ostrzeżenia: 0%
mlody kurasiok2012.10.25, 13:44
W swiecie procesorow x86 juz dawno nic sie nie dzialo co by mnie zaciekawilo. Szkoda, zamiast czytac o intelu i amd to musimy czytac co tam w armach sie dzieje.
WibowitZobacz profil
Poziom ostrzeżenia: 0%
Wibowit2012.10.25, 13:47
Andree:
W Folding@Home symuluje się zwijanie cząsteczek (czy jakoś tak) i dla garstki atomów uzyskiwana prędkość symulacji to miliardowe części prędkości rzeczywistej. Chcąc symulować ludzki mózg w 100% musielibyśmy chyba użyć komputera wielkości naszego Słońca.

Zamiast ślepo kopiować naturę w scalakach trzeba zrozumieć jak natura działa, a to nie jest proste i nie ma wiele wspólnego z nanometrami w fabrykach procesorów.
szefonsZobacz profil
Poziom ostrzeżenia: 0%
szefons2012.10.25, 13:49

@Andree
Cóż, pozostaje ci złożyć cv do intela, amd czy TSMC.
TelvasZobacz profil
Poziom ostrzeżenia: 0%
Telvas2012.10.25, 14:00
Andree @ 2012.10.25 13:18  Post: 610682
Zmniejszenie procesu technologicznego pozwala tworzyć bardziej energooszczędne układy, co ma znaczenie zwłaszcza w urządzeniach mobilnych.
Ale częstotliwości pracy za bardzo już nie udaje się powiększyć od czasów Pentium 4 Extreme Edition (2005 r. 3,73 GHz). Co do zwiększania ilości rdzeni, wąskim gardłem okazały się nadal powolne pamięci RAM i trudności w zrównoleglaniu kodu.
Poza tym pomimo większej dostępnej ilości rdzeni, problemy takie jak rozpoznawanie mowy czy pisma odręcznego, a tym bardziej rozumienie czy tłumaczenie mowy (czy choćby tekstów) z jednego języka na drugi, nadal nie są zadowalająco rozwiązane. Już nie mówiąc o widzeniu maszynowym, niezbędnym autonomicznym robotom.
Moim zdaniem to sam model obliczeń w architekturze von Neumanna i używane języki programowania są nieadekwatne do tych zastosowań, może przyszedł czas na projektowanie i tworzenie układów naśladujących analogowe sieci nerwowe?

1. A co ma architektura do częstotliwości? Model pamięci nie jest tu wyznacznikiem szybkości przetwarzania ani parametrów samego procesora.
2. Co do języków programowania, to co dokładnie, jeśli można wiedzieć, ci w nich nie pasuje, hm?
3. Sieci neuronowe to ślepa uliczka. Zastosowanie SN to tak na prawdę przyznanie się do błędu i stwierdzenie 'nie umiem tego zrobić analitycznie, wrzucam to do black-boxa i liczę, że wynik będzie użyteczny'. Nie da się skutecznie metodami analitycznymi zbadać EFEKTÓW działania SN (da się opisać samo niskopoziomowe działanie - ale nie jego wynik). Niczego tutaj nie dowiedziesz - nie udowodnisz analitycznie, że twój algorytm jest poprawny, zasadny i niezawodny (bo go defacto nie masz). Żadne krytyczne, czy w ogóle istotne systemy nie stosują sieci neuronowych, programowania genetycznego, logiki rozmytej, ani żadnej innej pseudo-matematyki, bo są to takie metody 'pi*drzwi, 1000x wyszło ok, to może za 1001 też będzie dobrze, ale gwarancji żadnych na to nie ma'.
EasyMaidenZobacz profil
Poziom ostrzeżenia: 0%
EasyMaiden2012.10.25, 14:23
Zmniejszajcie nanometry zmniejszajcie, w końcu się to skończy.
I będzie tak samo jak 15-20 lat temu gdzie optymalizowano kod aplikacji a nie zwalano wszystko na sprzęt jak to miejsce dziś.
AndreeZobacz profil
Poziom ostrzeżenia: 0%
Andree2012.10.25, 14:29
@Telwas
Ad. 1) Tu nie chodzi o architekturę, tylko o dotarcie do granic możliwości krzemu jeśli chodzi o zwiększanie częstotliwości działania procesorów.
IPC rdzeni procesorów x86 też bardziej już zwiększać się nie da, a przynajmniej jest to bardzo trudne. Czasy szybkiego zwiększania mocy obliczeniowej procesorów już mamy za sobą.
Ad. 2) Potrzebne są języki programowania, w których będzie można łatwo wyrażać i analizować matematycznie zależności między wątkami. Moim zdaniem trzeba będzie odejść od programowania rozumianego jako edytowanie plików tekstowych, może programowanie w przyszłości będzie polegało na edycji grafów typu sieci Petriego, tylko o większych możliwościach? W końcu kod źródłowy jest kompilowany do AST, generacja kodu maszynowego polega na przejściu tego drzewa rozbioru składniowego.
Ad. 3) W przypadku tradycyjnych programów też zwykle nie masz żadnej gwarancji że program się nie wywali albo zawsze poprawnie zadziała, są metody formalnego dowodzenia poprawności, ale w praktyce rzadko się je stosuje, bo wymagają przepisania kodu (Prototype Verification System) i długotrwałej 'zabawy' w dowodzenie go.
barwniakZobacz profil
Poziom ostrzeżenia: 0%
barwniak2012.10.25, 14:34
Ależ żonglują tymi nanometram.i 20nm to tsmc ma szansę na masową produkcję najwcześniej na koniec 2013. Koniec 2014 pierwsze próbki 16nm. Początek 2015 masowa produkcja 16nm. A o tych 10nm to sobie mogą pomarzyć, a 7nm, to nie wiadomo czy w ogóle na krzemie się będzie ktoś bawił w to.
jkbrennaZobacz profil
Poziom ostrzeżenia: 0%
jkbrenna2012.10.25, 15:05
Ulepszanie procesu technologicznego jest droga normalnej ewolucji, ,teoretycznie latwo do wykonania, ale chyba nie tu, ta prawidlowa droga jest....gdyby Columbus tak myslal, to by nigdy do tzw 'Ameriki' nie doplynal...
Moze trzeba bedzie wrocic do rozwiazan Hybrydowych, gdzie pewne obliczenia, w sposob analogiczny sie wykonuje,,,,
Dodam tylko to, moze calkowicie sie myle, od czasu kiedy sie zaczelo matematyczne ( przy pomocy komputeròw) modele ekonomicznego rozwoju wystawiac, cos ze z tym ekonomicznym rozwojem po....lo...

Mam nadzieje ze nawet ci copotrzebuja 3 razy test przeczytac ,cos tutaj zrozumieja..
TelvasZobacz profil
Poziom ostrzeżenia: 0%
Telvas2012.10.25, 15:39
Andree @ 2012.10.25 14:29  Post: 610717
@Telwas
Ad. 1) Tu nie chodzi o architekturę, tylko o dotarcie do granic możliwości krzemu jeśli chodzi o zwiększanie częstotliwości działania procesorów.
IPC rdzeni procesorów x86 też bardziej już zwiększać się nie da, a przynajmniej jest to bardzo trudne. Czasy szybkiego zwiększania mocy obliczeniowej procesorów już mamy za sobą.
Ad. 2) Potrzebne są języki programowania, w których będzie można łatwo wyrażać i analizować matematycznie zależności między wątkami. Moim zdaniem trzeba będzie odejść od programowania rozumianego jako edytowanie plików tekstowych, może programowanie w przyszłości będzie polegało na edycji grafów typu sieci Petriego, tylko o większych możliwościach? W końcu kod źródłowy jest kompilowany do AST, generacja kodu maszynowego polega na przejściu tego drzewa rozbioru składniowego.
Ad. 3) W przypadku tradycyjnych programów też zwykle nie masz żadnej gwarancji że program się nie wywali albo zawsze poprawnie zadziała, są metody formalnego dowodzenia poprawności, ale w praktyce rzadko się je stosuje, bo wymagają przepisania kodu (Prototype Verification System) i długotrwałej 'zabawy' w dowodzenie go.

Ad. 1. Ale co mają granice krzemu do modelu pamięci (architektura harvardzka/von Neumana)? Nic.
Ad. 2. Póki co procesory wykonują instrukcje, a nie grafy, więc optymalne wykorzystanie procesorów opiera się o pisanie... instrukcji. Na niższym lub wyższym poziomie, ale to zawsze będą instrukcje. A nawet jak sobie stworzysz inną strukturę (wspominane sieci czy grafy), w której będziesz programował, to pod maską nadal będą zwykłe listingi instrukcji.
Ad. 3.
a) Ależ to nie jest kwestia implementacji czy działania programu! 'Rączki precz od klawiatury' gdy chodzi o dowodzenie czegokolwiek. Dowodzi się matematyką, a nie programem ją wykorzystującym.
b) Matematyka, której się na co dzień używa, jest pewna. Można dowieść, że twierdzenie Pitagorasa jest prawdziwe, że reguła de l'Hospitala faktycznie działa, że filtr Kalmana rzeczywiście jest estymatorem stanu optymalnym w sensie średniokwadratowym. Można matematycznie w pełni zbadać działanie QuickSorta, wyznaczyć złożoność Dijkstry czy określić najgorszy możliwy przypadek interferencji sygnałów zespolonych w kanale transmisyjnym.
Ale powierzając zadanie sortowania czy estymacji wynalazkom pokroju sieci neuronowej czy populacji genetycznej, NIGDY nie znasz pełnego uwarunkowania tego, co tam się liczy. Jedyne, co masz, to wartości na węzłach sieci (jak już ją nauczysz), czy pulę genów populacji. Nie masz ŻADNEJ gwarancji, że nie nadejdzie zestaw danych, który sprawi, że SN coś tam sobie dziwnie pokojarzy, i na wyjściu dostaniesz kosmos (a jak już jednak zaczniesz te powiązania analizować, to wracasz do zwykłej matematyki, odkrywasz zwykłe zależności i okazuje się, że można to znacznie prościej tradycyjnie zrobić). A programowanie genetyczne to już w ogóle absurd - jedziesz po randomie trzymając kciuki, żeby wylosowało się coś lepszego, niż już masz - i tak do momentu, aż stwierdzisz, że wyniki są ok, albo że dalej szkoda ci czasu. Ale nie masz żadnej gwarancji, że zadanie zostało poprawnie wykonane (np. podczas szukania minimum funkcji: czy populacja nie ugrzęzła w jakimś specyficznym, lokalnym minimum).

P.S.
'Telvas', a nie 'Telwas' ;)
AndreeZobacz profil
Poziom ostrzeżenia: 0%
Andree2012.10.25, 16:12
Może w przyszłości będą produkowane procesory w których wykonanie programu będzie polegało na odpowiednim, zapętlonym przejściu jego grafu rozbioru składniowego, zapisanego np. w zoptymalizowanej postaci tablicowej, gdzie węzły zawierają polecenia dla jednostek arytmetyczno-logicznych procesora, wtedy żadne tradycyjne instrukcje języka maszynowego nie byłyby potrzebne.

Co do dylematu - sieci neuronowe vs. tradycyjne to masz oczywiście rację w wymienionych przez ciebie zagadnieniach, natomiast w tych wymienionych przeze mnie to podejście analityczne sprawdza się słabo i wcale nie daje gwarancji że np. program rozpoznający mowę zrozumie to co do niego powiedziałem albo że program odczyta moje pismo odręczne. Zresztą chodziło mi raczej o układy analogowe naśladujące sieci nerwowe żywych organizmów, np. układ widzenia muchy albo niezależne od mózgu sterowanie nogami stonogi ;) Takie analogowe układy mogłyby być znacznie mniejsze, sprawniejsze energetycznie i odporniejsze na zakłócenia niż to co ma do zaoferowania obecna technologia cyfrowa.
Star-Ga-TeZobacz profil
Poziom ostrzeżenia: 0%
Star-Ga-Te2012.10.25, 17:58
@ Andree vs Telvas

Uczono gdzieś, kiedyś, sieć neuronową rozpoznawać czołgi: swój (spoko) | obcy (strzelaj).
Wyszło im, że strzelała, gdy świeciło Słońce, nie strzelała, gdy było zachmurzenie.
Takie mniej-więcej są efekty działania sieci neuronowej, nigdy nie przewidzisz wszystkiego... ;-)
aszuZobacz profil
Poziom ostrzeżenia: 0%
aszu2012.10.25, 18:37
Star-Ga-Te @ 2012.10.25 17:58  Post: 610784
@ Andree vs Telvas

Uczono gdzieś, kiedyś, sieć neuronową rozpoznawać czołgi: swój (spoko) | obcy (strzelaj).
Wyszło im, że strzelała, gdy świeciło Słońce, nie strzelała, gdy było zachmurzenie.
Takie mniej-więcej są efekty działania sieci neuronowej, nigdy nie przewidzisz wszystkiego... ;-)


Z tym ze tak wlasnie dziala ludzki mozg - nie ma tam zadnych algorytmow, rownan, instrukcji. Rowniez zadnych gwarancji ze na dany impuls otrzymasz okreslony wynik. Po prostu wielka czarna skrzynka zbierajaca sygnaly z calego organizmu, z milairdami neuronow przetwarzajacymi je w kompletnie abstrakcyjny i praktycznie niemozliwy do przeanalizowania sposob.

Jestem zdania, ze w przypadku tak skomplikowanych zagadnien jak rozpoznawanie obrazu czy mowy klasyczne (algorytmiczne) podejscie nie ma przyszlosci.
Wlasnie esencja 'inteligencji' polega na losowosci, neiprzewidywalnosci - nie da sie jej zwykle opisac rownaniem zrozumialym przez czlowieka.

IMHO prawdziwe AI mozna stworzyc tylko budujac takiego super-wydanego, niedeterministycznego (bez gwarancji czegokolwiek) black boxa, z oprogramowanymi pewnymi bardzo podstawowymi regulami (zasady przeplywu danych, cele). Potem karmic takie urzedzene przez lata danymi (sensownymi) - jest szansa ze po tym zyska ono swoja specyficzna inteligencje ;)

Dokladnie tak samo dzieje sie przeciez u czlowieka - po urodzeniu, jest on na poziomie rozwoju rosliny, z zaprogramowanymi kilkoma prostymi regulami (bol - placz, etc), za to z duzymi mozliwosciami pobierania informacji o otaczajacym swiecie. Przeciez 'kod' czlowieka (DNA) to raptem kilkadziesiat MB. Dopiero przez kolejne lata, nasycajac sie informacjami ze swiata, roslina-niemowle zmienia sie w inteligentna istote.
litestepZobacz profil
Poziom ostrzeżenia: 0%
litestep2012.10.25, 18:46
Star-Ga-Te @ 2012.10.25 17:58  Post: 610784

Takie mniej-więcej są efekty działania sieci neuronowej, nigdy nie przewidzisz wszystkiego... ;-)

To nie są cechy sieci neuronowych tylko każdego sposobu uczenia maszynowego, na zestawie danych treningowych z taką niezamierzoną korelacją każdy się wywali.
Osobiście jestem raczej pesymistą jeśli chodzi o zupełnie nowy


Andree @ 2012.10.25 17:58  Post: 610756

Może w przyszłości będą produkowane procesory w których wykonanie programu będzie polegało na odpowiednim, zapętlonym przejściu jego grafu rozbioru składniowego, zapisanego np. w zoptymalizowanej postaci tablicowej, gdzie węzły zawierają polecenia dla jednostek arytmetyczno-logicznych procesora, wtedy żadne tradycyjne instrukcje języka maszynowego nie byłyby potrzebne.

Za grosz nie rozumiem co masz tutaj na myśli? Czy ten graf/drzewo ma być modyfikowalny? W takim razie nie różni się to niczym od zwykłego procesora ogólnego przeznaczenia. Ma być niemodyfikowalny? No to jest to zwykły ASIC.
Star-Ga-TeZobacz profil
Poziom ostrzeżenia: 0%
Star-Ga-Te2012.10.25, 19:13
-1#15
litestep @ 2012.10.25 18:46  Post: 610817
Star-Ga-Te @ 2012.10.25 17:58  Post: 610784

Takie mniej-więcej są efekty działania sieci neuronowej, nigdy nie przewidzisz wszystkiego... ;-)

To nie są cechy sieci neuronowych tylko każdego sposobu uczenia maszynowego ...

Ależ uczenie jest immanentnym elementem działania sieci neuronowej, bez uczenia sieć neuronowa jest równie głupia, jak, nie przymierzając, ludzki noworodek. Natomiast proces uczenia sieci jest dla nas równie niezrozumiały, jak wychowanie człowieka. W końcu, gdybyśmy ten proces poznali, nie istniałyby umysły patologiczne, seryjni zabójcy etc....

Mam nadzieję, że mi się 'quote' nie pozajączkowało ;-)
*Konto usunięte*2012.10.25, 19:16
aszu @ 2012.10.25 18:37  Post: 610808


Z tym ze tak wlasnie dziala ludzki mozg - nie ma tam zadnych algorytmow, rownan, instrukcji. Rowniez zadnych gwarancji ze na dany impuls otrzymasz okreslony wynik. Po prostu wielka czarna skrzynka zbierajaca sygnaly z calego organizmu, z milairdami neuronow przetwarzajacymi je w kompletnie abstrakcyjny i praktycznie niemozliwy do przeanalizowania sposob.

Jestem zdania, ze w przypadku tak skomplikowanych zagadnien jak rozpoznawanie obrazu czy mowy klasyczne (algorytmiczne) podejscie nie ma przyszlosci.
Wlasnie esencja 'inteligencji' polega na losowosci, neiprzewidywalnosci - nie da sie jej zwykle opisac rownaniem zrozumialym przez czlowieka.

IMHO prawdziwe AI mozna stworzyc tylko budujac takiego super-wydanego, niedeterministycznego (bez gwarancji czegokolwiek) black boxa, z oprogramowanymi pewnymi bardzo podstawowymi regulami (zasady przeplywu danych, cele). Potem karmic takie urzedzene przez lata danymi (sensownymi) - jest szansa ze po tym zyska ono swoja specyficzna inteligencje ;)

Dokladnie tak samo dzieje sie przeciez u czlowieka - po urodzeniu, jest on na poziomie rozwoju rosliny, z zaprogramowanymi kilkoma prostymi regulami (bol - placz, etc), za to z duzymi mozliwosciami pobierania informacji o otaczajacym swiecie. Przeciez 'kod' czlowieka (DNA) to raptem kilkadziesiat MB. Dopiero przez kolejne lata, nasycajac sie informacjami ze swiata, roslina-niemowle zmienia sie w inteligentna istote.


Nie jest dobrze gdy ktoś, kto nie wie jak działa ludzki mózg pisze:
''tak właśnie działa ludzki mózg''

P.S. ludzki mózg rozwija się - na poziomie fizjologicznym i anatomicznym - co najmniej do ok. 20-go roku życia. Tak więc o mózgu niemowlaka można mówić jako o półprodukcie co najwyżej.
AndreeZobacz profil
Poziom ostrzeżenia: 0%
Andree2012.10.25, 19:25
@litestep
Jasne że modyfikowalny, bo zapisany w pamięci RAM.
Taki procesor różniłby się o tyle, że odpadłby proces kompilacji - programista (albo generator kodu) tworzy graf, jest on konwertowany z postaci graficznej do postaci akceptowalnej przez procesor (w procesie znacznie prostszym niż analiza leksykalna i składniowa) i wykonywany.

Możliwy byłby też proces odwrotny - z łatwością można by dokonać analizy programu konwertując go z postaci wykonywalnej do równoważnej matematycznie postaci graficznej, zmodyfikować go i zapisać ponownie, po czym wykonać.

Ponieważ grafem tym mogłoby być drzewo rozbioru składniowego programu napisanego w klasycznym języku programowania (np. C lub C++), można by z łatwością skonwertować istniejące programy dla nowej architektury. Oczywiście o ile nie mają wstawek asemblerowych, bo ten procesor nie miałby czegoś takiego jak lista instrukcji. Tylko w węzłach grafu byłyby komendy dla arytmometrów.
WibowitZobacz profil
Poziom ostrzeżenia: 0%
Wibowit2012.10.25, 19:53
Sprzętowe wykonywanie kodu źródłowego przerabiano w latach siedemdziesiątych i choć wiele się przy tym nauczono, to pomysł ogólnie nie wypalił. Szczegóły: http://en.wikipedia.org/wiki/Lisp_machine Maszyna taka nie wykonywała kodu bezpośrednio, ale wykonywała dość wysokopoziomowy bajtkod.

Wykonywanie AST bezpośrednio przyniosłoby gigantyczny narzut na synchronizację, gdyby wykonywać to naiwnie, tzn uruchamiać n wątków jeśli mamy n podwęzłów. W ogóle obecnie przecież można by sporo rzeczy trochę zrównoleglić, gdyby nie koszty synchronizacji.

Dodanie dwóch liczb które siedzą w pamięci podręcznej to zwykle kilka cykli, ale gdy chcemy do tego dołożyć synchronizację, to może się z tego zrobić kilkaset cykli.

Ogólnie puenta jest taka, że nie ma żadnego cudownego sposobu na zrównoleglenie wszystkich algorytmów. A nawet jeśli by taki znaleziono, to nie rozumiem czemu nie można by go zaimplementować sprzętowo, tzn przerabiać automatycznie kod na postać zrównolegloną. Przecież mamy GPGPU z tysiącami shaderów i sumaryczną mocą obliczeniową dziesiątki razy większą niż moc obecnych CPU.
szefonsZobacz profil
Poziom ostrzeżenia: 0%
szefons2012.10.25, 19:57
EasyMaiden @ 2012.10.25 14:23  Post: 610715
Zmniejszajcie nanometry zmniejszajcie, w końcu się to skończy.
I będzie tak samo jak 15-20 lat temu gdzie optymalizowano kod aplikacji a nie zwalano wszystko na sprzęt jak to miejsce dziś.

Ludzie mają to do siebie, że jak się ich przyciśnie to potrafią wymyślić 'cuda' i postawić kolejny wielki krok milowy w rozwoju, jestem raczej za opcją, że wszyscy będą się zapierać rękami i nogami byle nie wrócić do czasów porządnej optymalizacji, więc wykombinują coś innego.
WibowitZobacz profil
Poziom ostrzeżenia: 0%
Wibowit2012.10.25, 20:10
szefons @ 2012.10.25 19:57  Post: 610850
EasyMaiden @ 2012.10.25 14:23  Post: 610715
Zmniejszajcie nanometry zmniejszajcie, w końcu się to skończy.
I będzie tak samo jak 15-20 lat temu gdzie optymalizowano kod aplikacji a nie zwalano wszystko na sprzęt jak to miejsce dziś.

Ludzie mają to do siebie, że jak się ich przyciśnie to potrafią wymyślić 'cuda' i postawić kolejny wielki krok milowy w rozwoju, jestem raczej za opcją, że wszyscy będą się zapierać rękami i nogami byle nie wrócić do czasów porządnej optymalizacji, więc wykombinują coś innego.

Przede wszystkim optymalizacja kosztuje, zarówno czas jak i pieniądze. Zamiast oszczędzać pojedyncze takty i bajty można rozwijać funkcjonalność. Co byś wolał: super zoptymalizowanego MS-DOSa, czy takiego Windowsa 7 jak jest teraz? Programiści zdają sobie z tego sprawę i wiedzą, że użytkowników, którzy zadowolą się spartańskim interfejsem i funkcjonalnością jest dużo mniej niż użytkowników, który wolą poświęcić nieco wydajności na rzecz wygody i funkcjonalności. Z drugiej strony jeśli przesadzą i program będzie zamulać, to większość użytkowników się zirytuje i przestanie kupować ich program. Programiści z czegoś muszą żyć i nie będą cały czas pisać programów, które nie będą się sprzedawać.
Zaloguj się, by móc komentować