-
1. Data: 2012-01-29 20:14:25
Temat: asm jako jezyk elitarny
Od: " " <f...@g...pl>
asm jest dosyc daleko na liscie popularnosci jezykow
(np jesli mierzyc popularnosc otagowaniem postow na
stack overflow to
c# 260 tys
java 200 tys
php 180 tys
javascript 170 tys
.
c++ 110 tys
..
c 50 tys
..
asm 5 tys
kwetia jest taka czy asm (przy tej malej popularnosci)
jest jezykiem elitarnym (jak patrza niektorzy) czy tez
jezykiem ktory sie do nieczgo nie nadaje (jak patrza inni)
oczywiscie osobiscie uwazam ten jezyk i uwazam ze asm jest jezykiem elitarnym
(choc slowa elitarny uzywam troche w rozmytym miekkim znaczeniu)
gdy tymczasem jezyki takie jak c# byly pomyslane przynajmniej w
czesci jako jezyki dla slabych programistow (dla ktorych np
winapi jest 'za trudne') sa bardziej chalowate :)
(post troche pomyslany jako rozrywka i zamieszanie w kotle,
bo zwykle takie tematy potrafia wywolac 'flame'a, ale tez
jest wyrazem mojej sympatii do asma i nie ukrywam ze go
'popieram'
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
2. Data: 2012-01-29 20:22:48
Temat: Re: asm jako jezyk elitarny
Od: bartekltg <b...@g...com>
W dniu 2012-01-29 21:14, f...@g...pl pisze:
> kwetia jest taka czy asm (przy tej malej popularnosci)
> jest jezykiem elitarnym (jak patrza niektorzy) czy tez
> jezykiem ktory sie do nieczgo nie nadaje (jak patrza inni)
Nadaje się tylko do bardzo specyficznych zastosowań.
Już nawet programujący kontrolery przestawili
się na języki 'wyższego poziomu'. Kilkanaście/dziesiat lat temu;)
Jak hcesz pobawić się jezykami mniej popularnymi i wymagającymi
zdolności intelektualnych (przez to można je rozumieć jako elitarne),
to zajmij się językami funkcyjnymi,prologiem czy innymi wynalazkami
(może smalltalk:)
Jeśli nie budujesz kompilatora albo nie piszesz bibliteki numerycznej
wykorzystującej najnowsze sztuczki to siedzenie w asm jest stratą
energii.
Wielkim osiągnięciem z czasów FORTRANa było to, że mogłeś napisać
a=b+c nie bawiąc się w szczegóły.
pzdr
bartekltg
-
3. Data: 2012-01-29 20:54:55
Temat: Re: asm jako jezyk elitarny
Od: " " <f...@g...pl>
bartekltg <b...@g...com> napisał(a):
> W dniu 2012-01-29 21:14, f...@g...pl pisze:
>
> > kwetia jest taka czy asm (przy tej malej popularnosci)
> > jest jezykiem elitarnym (jak patrza niektorzy) czy tez
> > jezykiem ktory sie do nieczgo nie nadaje (jak patrza inni)
>
> Nadaje siÄ tylko do bardzo specyficznych zastosowaĹ.
> JuĹź nawet programujÄ cy kontrolery przestawili
> siÄ na jÄzyki 'wyĹźszego poziomu'. KilkanaĹcie/dziesiat lat temu;)
>
> Jak hcesz pobawiÄ siÄ jezykami mniej popularnymi i wymagajÄ cymi
> zdolnoĹci intelektualnych (przez to moĹźna je rozumieÄ jako elitarne),
> to zajmij siÄ jÄzykami funkcyjnymi,prologiem czy innymi wynalazkami
> (moĹźe smalltalk:)
>
a wlasnie nie lubie takiego kombinowania, jezykow funkcyjnych nie
umiem na dzis ni w ząb
> JeĹli nie budujesz kompilatora albo nie piszesz bibliteki numerycznej
> wykorzystujÄ cej najnowsze sztuczki to siedzenie w asm jest stratÄ
> energii.
>
co do tracenia energii to jestem w tym znakomity, akurat planuje
pisac kompiler, ale nawet pominawszy to chyba jest sens uczyc sie
i uzywac asemblera jesli przepisanie kluczowych procedur na asm
moze przyspieszyc aplikacje o jakis procent - z tym to nie wiem
jak jest, zle moze pomierze to troche w najblizszym czasie
kcalkiem niedawno przyspieszylem jedna gierke okolo 2 razy
(ramka spadla z 30 ms do ok 15 ms) przez zamienienie czterech
intow na floaty (czy cos takiego bo nei pamietam byc moze
dokladnie) - staranne traktowanie procka mysle moze miec jednak
sens i gdyby np okazywalo sie ze przy umiejetnosci poprawiania
kodu i popopoprawianiu paru procedur w asmie program dzialal
dwa razy plynniej to warto sie uzyc i uzywac asma
> Wielkim osiÄ gniÄciem z czasĂłw FORTRANa byĹo to, Ĺźe mogĹeĹ napisaÄ
> a=b+c nie bawiÄ c siÄ w szczegĂłĹy.
>
>
> pzdr
> bartekltg
>
>
>
>
>
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
4. Data: 2012-01-29 21:08:55
Temat: Re: asm jako jezyk elitarny
Od: bartekltg <b...@g...com>
W dniu 2012-01-29 21:54, f...@g...pl pisze:
> bartekltg<b...@g...com> napisał(a):
>
>> W dniu 2012-01-29 21:14, f...@g...pl pisze:
>>
>>> kwetia jest taka czy asm (przy tej malej popularnosci)
>>> jest jezykiem elitarnym (jak patrza niektorzy) czy tez
>>> jezykiem ktory sie do nieczgo nie nadaje (jak patrza inni)
>>
>> Nadaje siÄ tylko do bardzo specyficznych zastosowaĹ.
>> JuĹź nawet programujÄ cy kontrolery przestawili
>> siÄ na jÄzyki 'wyĹźszego poziomu'. KilkanaĹcie/dziesiat lat temu;)
>>
>> Jak hcesz pobawiÄ siÄ jezykami mniej popularnymi i wymagajÄ cymi
>> zdolnoĹci intelektualnych (przez to moĹźna je rozumieÄ jako elitarne),
>> to zajmij siÄ jÄzykami funkcyjnymi,prologiem czy innymi wynalazkami
>> (moĹźe smalltalk:)
>>
> a wlasnie nie lubie takiego kombinowania, jezykow funkcyjnych nie
> umiem na dzis ni w ząb
Na tym polega nauka. Czegoś nie wiesz, a potem wiesz.
>
>> JeĹli nie budujesz kompilatora albo nie piszesz bibliteki numerycznej
>> wykorzystujÄ cej najnowsze sztuczki to siedzenie w asm jest stratÄ
>> energii.
>>
>
> co do tracenia energii to jestem w tym znakomity, akurat planuje
> pisac kompiler, ale nawet pominawszy to chyba jest sens uczyc sie
Ale wiesz, że kompilator to kawał matematyki. Znacznie bardziej
abstrakcyjnej niż całki i macierze.
> i uzywac asemblera jesli przepisanie kluczowych procedur na asm
> moze przyspieszyc aplikacje o jakis procent - z tym to nie wiem
> jak jest, zle moze pomierze to troche w najblizszym czasie
Te sytuacje nie zdarzają się tak często (np kompilator
nie używa jakeijś instrukcji, która tu pasuje).
A współczesny procesor to skomplikowana bestia,
łatwo napisać gorzej inż kompilator.
> kcalkiem niedawno przyspieszylem jedna gierke okolo 2 razy
> (ramka spadla z 30 ms do ok 15 ms) przez zamienienie czterech
> intow na floaty (czy cos takiego bo nei pamietam byc moze
> dokladnie)
Ale to jest operacja jak najbardziej możliwa w takim
'półassemblerze' jak C czy innych normalnych językach.
> - staranne traktowanie procka mysle moze miec jednak
> sens i gdyby np okazywalo sie ze przy umiejetnosci poprawiania
> kodu i popopoprawianiu paru procedur w asmie program dzialal
> dwa razy plynniej to warto sie uzyc i uzywac asma
Przy założeniu _że rzeczywiście przyspieszy_ można
zacząć o tym myśleć. Często jest to nieopłacalne,
za dużo pracy, za mało korzyści.
pzdr
bartekltg
-
5. Data: 2012-01-29 21:56:30
Temat: Re: asm jako jezyk elitarny
Od: Edek <e...@g...com>
On 01/29/2012 09:54 PM, f...@g...pl wrote:
> bartekltg<b...@g...com> napisał(a):
>
>> W dniu 2012-01-29 21:14, f...@g...pl pisze:
>>
>>> kwetia jest taka czy asm (przy tej malej popularnosci)
>>> jest jezykiem elitarnym (jak patrza niektorzy) czy tez
>>> jezykiem ktory sie do nieczgo nie nadaje (jak patrza inni)
>>
>> Nadaje siÄ? tylko do bardzo specyficznych zastosowaĹ?.
>> JuĹź nawet programujÄ?cy kontrolery przestawili
>> siÄ? na jÄ?zyki 'wyĹźszego poziomu'. KilkanaĹ?cie/dziesiat lat temu;)
>>
>> Jak hcesz pobawiÄ? siÄ? jezykami mniej popularnymi i wymagajÄ?cymi
>> zdolnoĹ?ci intelektualnych (przez to moĹźna je rozumieÄ? jako elitarne),
>> to zajmij siÄ? jÄ?zykami funkcyjnymi,prologiem czy innymi wynalazkami
>> (moĹźe smalltalk:)
>>
> a wlasnie nie lubie takiego kombinowania, jezykow funkcyjnych nie
> umiem na dzis ni w ząb
Widać, że nawet nie wiesz o istnieniu elitarnych rzeczy. Spory procent
prac na różne tematy informatyczne, jakie czytałem w ostatnim czasie,
napisane były w języku odpowiednim do tematu, co często oznaczało
Haskell. Kiedyś bardziej popularny był Lisp (lub Scheme), dzisiaj [1]
częściej jest to Haskell; często też używa się pseudokodu, który
często i gęsto upraszcza chociażby operowanie na kolekcjach,
które mają sporo syntaxu w dowolnym języku, sprowadzając je
do operowania matematycznego na zbiorach lub innych strukturach.
Widzisz, programowanie w assemblerze było wyzwaniem w czasach Atari,
Commodore'a czy może DOSa, gdzie można było tylko w ten sposób wyjść
poza ograniczenia systemowe. Nie, nie było tam nawet hexedytora
(ręki sobie nie dam uciąć, dawno to było, czy był na DOSie).
Dzisiaj faktycznie pisze się w asemblerze rzeczy typu optymalizowanie
AESa (nie było AES-NI) lub np. kodeków, czasami wykonuje się
niedostępne w C operacje typu atomic czy cpuid; czasami twardo
optymalizuje się jakieś proste operacje, ale w zasadzie tylko wtedy,
gdy profilowanie pokazuje, że nie innej opcji.
Sztuką jest raczej stworzenie czegoś pożytecznego, niż shuflin
shuflin za pomocą SSE z powodu fascynacji, która do niczego
nie prowadzi i szybko się znudzi dodając uczucie niezłej pustki
motywacyjnej we łbie.
Swoją drogą, ciekawy byłbym, do czego faktycznie używa się
assemblera dzisiaj, sam nie mam doświadczeń.
>
>> JeĹ?li nie budujesz kompilatora albo nie piszesz bibliteki numerycznej
>> wykorzystujÄ?cej najnowsze sztuczki to siedzenie w asm jest stratÄ?
>> energii.
>>
>
> co do tracenia energii to jestem w tym znakomity, akurat planuje
> pisac kompiler, ale nawet pominawszy to chyba jest sens uczyc sie
> i uzywac asemblera jesli przepisanie kluczowych procedur na asm
> moze przyspieszyc aplikacje o jakis procent - z tym to nie wiem
> jak jest, zle moze pomierze to troche w najblizszym czasie
Poleciłbym na wstęp chociażby Rats!, ale praca - chyba równoważna
magisterskiej - wymaga Haskella i trochę teorii nt gramatyk
(Chomsky itd.). Chociaż ja prawie nie znam Haskella, więc może
znajomość mechanizmów języków funkcyjnych wystarczy, przynajmniej
na moim poziomie zrozumienia tego tekstu. Bez parsera
na dzień dobry kompilatora nie napiszesz.
>
> kcalkiem niedawno przyspieszylem jedna gierke okolo 2 razy
> (ramka spadla z 30 ms do ok 15 ms) przez zamienienie czterech
> intow na floaty (czy cos takiego bo nei pamietam byc moze
> dokladnie)
Brawo. Zapewne nie był to przypadek, wynikało to z głębokiego
zrozumienia IntelOPtimisationGuide.
- staranne traktowanie procka mysle moze miec jednak
> sens i gdyby np okazywalo sie ze przy umiejetnosci poprawiania
> kodu i popopoprawianiu paru procedur w asmie program dzialal
> dwa razy plynniej to warto sie uzyc i uzywac asma
>
Traktuję procki starannie, nie dotykam nóżek tłustymi łapami
i staram się uziemić wcześniej ;) Ale i tak do składania kompa
muszę wcześniej pifko szczelić, bo mi ssie łapy częsą bez tego
ohydnie ;)
Nie będzie działał dwa razy płynniej dzięki rzeźbieniu w asm.
Edek
-
6. Data: 2012-01-29 22:35:07
Temat: Re: asm jako jezyk elitarny
Od: " " <f...@g...pl>
bartekltg <b...@g...com> napisał(a):
> W dniu 2012-01-29 21:54, f...@g...pl pisze:
> > bartekltg<b...@g...com> napisaĹ(a):
> >
> >> W dniu 2012-01-29 21:14, f...@g...pl pisze:
> >>
> >>> kwetia jest taka czy asm (przy tej malej popularnosci)
> >>> jest jezykiem elitarnym (jak patrza niektorzy) czy tez
> >>> jezykiem ktory sie do nieczgo nie nadaje (jak patrza inni)
> >>
> >> Nadaje siĂ tylko do bardzo specyficznych zastosowaÄšÂ.
> >> JuĚź nawet programujĂ cy kontrolery przestawili
> >> siĂ na jĂÂzyki 'wyĚźszego poziomu'. KilkanaÄšÂcie/dziesiat lat
temu;
> )
> >>
> >> Jak hcesz pobawiĂÂ siĂÂ jezykami mniej popularnymi i wymagajĂÂ cymi
> >> zdolnoÄšÂci intelektualnych (przez to moĚźna je rozumieĂ jako
elitarne
> ),
> >> to zajmij siĂÂ jĂÂzykami funkcyjnymi,prologiem czy innymi wynalazkami
> >> (moĚźe smalltalk:)
> >>
> > a wlasnie nie lubie takiego kombinowania, jezykow funkcyjnych nie
> > umiem na dzis ni w zÄ b
>
> Na tym polega nauka. CzegoĹ nie wiesz, a potem wiesz.
>
> >
> >> JeÄšÂli nie budujesz kompilatora albo nie piszesz bibliteki numerycznej
> >> wykorzystujĂÂ cej najnowsze sztuczki to siedzenie w asm jest stratĂÂ
> >> energii.
> >>
> >
> > co do tracenia energii to jestem w tym znakomity, akurat planuje
> > pisac kompiler, ale nawet pominawszy to chyba jest sens uczyc sie
>
> Ale wiesz, Ĺźe kompilator to kawaĹ matematyki. Znacznie bardziej
> abstrakcyjnej niĹź caĹki i macierze.
>
> > i uzywac asemblera jesli przepisanie kluczowych procedur na asm
> > moze przyspieszyc aplikacje o jakis procent - z tym to nie wiem
> > jak jest, zle moze pomierze to troche w najblizszym czasie
>
> Te sytuacje nie zdarzajÄ siÄ tak czÄsto (np kompilator
> nie uĹźywa jakeijĹ instrukcji, ktĂłra tu pasuje).
> A wspĂłĹczesny procesor to skomplikowana bestia,
> Ĺatwo napisaÄ gorzej inĹź kompilator.
>
> > kcalkiem niedawno przyspieszylem jedna gierke okolo 2 razy
> > (ramka spadla z 30 ms do ok 15 ms) przez zamienienie czterech
> > intow na floaty (czy cos takiego bo nei pamietam byc moze
> > dokladnie)
>
> Ale to jest operacja jak najbardziej moĹźliwa w takim
> 'pĂłĹassemblerze' jak C czy innych normalnych jÄzykach.
>
> > - staranne traktowanie procka mysle moze miec jednak
> > sens i gdyby np okazywalo sie ze przy umiejetnosci poprawiania
> > kodu i popopoprawianiu paru procedur w asmie program dzialal
> > dwa razy plynniej to warto sie uzyc i uzywac asma
>
> Przy zaĹoĹźeniu _Ĺźe rzeczywiĹcie przyspieszy_ moĹźna
> zaczÄ Ä o tym myĹleÄ. CzÄsto jest to nieopĹacalne,
> za duĹźo pracy, za maĹo korzyĹci.
>
jest to jakis temat: na czym polega roznica (co do
szybkosci w pisaniu i inn) w pisaniu programow np w
c# i okolicach kontra pisanie w c+asm
osobiscie jakos 'nie chwytam' tej roznicy, co do szybkosci
pisania to wydaje mi sie (z grubsza) taka sama (bo mw
tyle samo wyrazen trzeba wklepac)
co do szybkosci nauki jednego i drugiego trudno mi
powiedziec (i tu i tu trzeba sie sporo nauczyc,
troche wspolnych i sporo tez innych rzeczy, trudno
porownac)
nie bardzo widze tez na czym polega roznica w łatwosci
jednego i drugiego (obiektowe biblioteki to dla mnie
jednak swoistego rodzaju koszmar, ale api w c tez trzeba
oswoic itd)
kompletnie niestety nie umiem porownac (przynajmniej jak
na dzis) tych dwu rodzajow programowania, wyjawszy to
ze jak przypominam sobie te wysokopoziomowe jezyki i liby
to od razu mi sie robi niedobrze ( jednyna rzecza ktora
wyraznie widze jako roznice to wysoka w sensie umyslowym
jakosc c+asm kontra kiepska C# OOP itd - ale reszty
porownac i wymienic co gdzie jest inne jakos nie moge
>
> pzdr
> bartekltg
>
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
7. Data: 2012-01-29 22:54:54
Temat: Re: asm jako jezyk elitarny
Od: " " <f...@g...pl>
> Nie będzie działał dwa razy płynniej dzięki rzeźbieniu w asm.
to czy bedzie dzialal plynniej czy nie da sie sprawdzic
np tu jest kawalek kodu (niespecjalnie wyjsciowy) elementy
raytracera
http://dl.dropbox.com/u/42887985/rel29.zip
moge sprobowac przepisac to czesciowo na sma, i zobacze
ile to da; moze w tygodniu lub w weekand za tydzien
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
8. Data: 2012-01-30 01:25:38
Temat: Re: asm jako jezyk elitarny
Od: " M.M." <m...@g...pl>
<f...@g...pl> napisał(a):
> kcalkiem niedawno przyspieszylem jedna gierke okolo 2 razy
> (ramka spadla z 30 ms do ok 15 ms) przez zamienienie czterech
> intow na floaty (czy cos takiego bo nei pamietam byc moze
> dokladnie) - staranne traktowanie procka mysle moze miec jednak
> sens i gdyby np okazywalo sie ze przy umiejetnosci poprawiania
> kodu i popopoprawianiu paru procedur w asmie program dzialal
> dwa razy plynniej to warto sie uzyc i uzywac asma
Niezbyt czesto musze martwic sie wydajnoscia implementacji, z
rzadka mi sie zdarza. Wtedy najczesciej obserwuje takie
problemy:
1) brak zrownoleglenia (jesli mozna to podciagnac pod implementacje)
2) brak optymalizacj cache
3) w wiekszych programach zla struktura danych, zbyt duze straty na konwersje
Ostatnio wzialem pod lupe pewien programik do generowania lasow drzew
regresyjnych. Program jest napisany bardzo intuicyjnie, np. kazdy
rekord z pliku jest alokowany przez new i sa listy rekordow (a nie tablice
liniowe). Program uzywa (chyba) dobrego algorytmu ale ma kiepska
implementacje. Nie ma zoptymalizowanej pamieci cache i nie jest
zrownoleglony ani nie ma jednej globalnej struktury danych przyjaznej
dla wszystkich procedur, tylko robi konwersje.
No wiec zaczalem go przyspieszac. Zadnego z przyspieszen nie dokonczylem,
co bylem bliski ukonczenia, to wpadalem na jeszcze jedno udoskonalenie :D
Jednak z wstpenych pomiarow czasow wykonania podprocedur moge juz oszacowac
ze wersja finalna przyspieszy 200 razy (slownie dwiescie), czyli okolo 40
razy jakby nie liczyc zrownoleglenia. Obie wersje programu sa napisane w
proceduralnym C++.
Wiec mam ta sama watpliwosc co Bartek: czy trzeba uzywac asemblera zeby
przyspieszac programy? Bym zyskal przyspieszenie 400 razy w asemblerze?
Pozdrawiam!
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
9. Data: 2012-01-30 03:05:43
Temat: Re: asm jako jezyk elitarny
Od: bartekltg <b...@g...com>
W dniu 2012-01-29 23:35, f...@g...pl pisze:
>
> jest to jakis temat: na czym polega roznica (co do
> szybkosci w pisaniu i inn) w pisaniu programow np w
> c# i okolicach kontra pisanie w c+asm
>
> osobiscie jakos 'nie chwytam' tej roznicy, co do szybkosci
> pisania to wydaje mi sie (z grubsza) taka sama (bo mw
> tyle samo wyrazen trzeba wklepac)
A próbowałeś coś napisać?
Pomińmy sprawy GUI, interfejsy... Jakieś proste
zadanka algorytmiczne (wejscie i wyjście z konsoli)?
http://potyczki.mimuw.edu.pl/user.phtml?op=zadania
Mam napisane wie, pec, wsp, prz, sis
oraz pal i plo z jakimiś głupim błędami.
Żadne z nich nie ma ponad 100 linii, sporo ma 30~40.
Implementacja też nie trwała zbyt długo (choć
rozwiązanie zadania nieraz wymagało zastanowienia:).
Wybierz jakieś spokojniejsze zadanie i porównamy
włożoną pracę.
BTW, przyjemny konkursik, tylko czasu nigdy nie ma.
pzdr
bartekltg
-
10. Data: 2012-01-30 06:39:25
Temat: Re: asm jako jezyk elitarny
Od: Borneq <b...@a...hidden.pl>
W dniu 2012-01-30 02:25, M.M. pisze:
> Ostatnio wzialem pod lupe pewien programik do generowania lasow drzew
> regresyjnych. Program jest napisany bardzo intuicyjnie, np. kazdy
> rekord z pliku jest alokowany przez new i sa listy rekordow (a nie tablice
> liniowe). Program uzywa (chyba) dobrego algorytmu ale ma kiepska
> implementacje. Nie ma zoptymalizowanej pamieci cache i nie jest
> zrownoleglony ani nie ma jednej globalnej struktury danych przyjaznej
> dla wszystkich procedur, tylko robi konwersje.
Czy alokowanie przez new rzeczywiście tak nieefektywne? W C# i Javie
chyba nie można się bez tego obyć, tylko że tam new jest szybsze.
Listy rekordów chyba są dość szybkie