argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: логическо и функционално програмиране  (Прочетена 20089 пъти)

;-)

  • Гост
логическо и функционално програмиране
« Отговор #40 -: 13.12.2004, 15:52:00 »

Хех - имаш нещо което се пише лесно на Lisp и Python. Въпрос: колко игри има писани на тези езици и защо? Искаш от мен да напиша какво? Как се прави функция за нещо което го имам в езика? Покажи нещо което внася нова функционалност. Аз утре ще напиша език в който тази функция е вградена или хайде да не е вградена но да се дефинира с "define Phyz", и какво доказва това? Задачата която дадох е елементарна, но използва побитови операции които уж ги разбират много хора. Всички мои примери се реализират еднакво лесно на всички езици. И не се джафкаме спокойно...само така изглежда ;-) Наистина искам да знам какво е най-голямото нещо което си писал /по едно за всеки език/ и как оценяваш какво би спечелил и загубил от друг език? Това че 90% от програмистите на известните езици са зле е нормално - с всеки популярен език ще се случи.
Активен

Phyz

  • Гост
логическо и функционално програмиране
« Отговор #41 -: 13.12.2004, 16:24:00 »

Добре бе... баси на китайски ли говоря, на патагонски ли? Как ще я имаш тази функционалност... ми покажи ми я, че да ми отвориш очите... аз я търся от как се хванах да уча Жава... Напиши ми метод:

Object add(Object a, Object b) {
...return a + b;
}

и го накарай да се компилира..., че и да върши работа...

Ей ти и един конкретен пример, с който се боря в момента:

Имаш един обект, който изпълнява даден интерфейс. Имаш и още 20, изпълняващи същия интерфейс. Трябва да направиш така, че когато се викне метод от външния обект, да се извикат същите методи на всички вътрешни обекти, докато някой от тях върне true. Тогава спираш итерацията и спираш външния метод...
Баси тфа на Lisp мога да го напиша точно на 2-3 реда... А на Жава както и да го въртя, както и да го суча, все е грозно... или се налага да пиша едно и също във всеки метод или ми се налага да направя един дебел switch с един куп константи... еми извинявай, ама ако на теб такъв код ти харесва... не знам...

def method(name, *args, **kwargs):
...for x in objects:
......if getattr(x, name)(*args, **kwargs): break

И в обграждащия клас предефинираш __gettatr__ така, че всички атрибути, които започват с примерно 'send' се map ват на method. И си готов...

И не ми говори за игри... когато ми направиш събирането както трябва на Жава, тогава ще разбереш най-големите неща, върху които съм работил. Искам да видя дали можеш да пишеш код или можеш само да говориш празни приказки.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
логическо и функционално програмиране
« Отговор #42 -: 13.12.2004, 16:26:00 »

Е значи за да е точна степен на 2 числото трябва да има вдигнат само един бит, ако са повече не е точна степен. В крайна сметка каква е ползата от това изобщо?

[This message has been edited by sasquatch (edited 13-12-2004).]
Активен

;-)

  • Гост
логическо и функционално програмиране
« Отговор #43 -: 13.12.2004, 16:55:00 »

Незанам на какво говориш - искаш да направиш нещо ако вече го имаш направено. Не разбрах защо ми е да викам add(a, b), ако мога същото с a+b?
Код няма да ти пиша защото примера няма смисъл. За примера с интерфейсите - кажи реалния пример в който ти трябва това? Аз може и да не разбирам много, но все някой ще разбере спокойно ;-) Или преди малко изписа половината си програми? Искаш от Java да направиш Lisp и резултата е грозен. Обяснявам пак - в дребни проекти такива предимства на даден език са големи, в по-големи проекти се губят. ;-)) Значи всеки който може да напише функция за събиране може да ти разбере сложните проекти...И не говорех за игри - говоря за performance.
sasquatch, смисъла е да се види може ли човек който претендира да е програмист да измисли такава тривиална задача извън стандартните решения - т.е. може ли да мисли самостоятелно за повече от 5мин. И да - как се устонавява че е вдигнат само един бит? Може би на Лисп става като го попитаме дали е сам?
Активен

Phyz

  • Гост
логическо и функционално програмиране
« Отговор #44 -: 13.12.2004, 17:12:00 »

Добре бе човеко... напиши квото и да е... няма значение някъф код... ти си избери... искам да видя. Интересно ми е. Обаче не ми го paste вай от някъф сайт с готини фрагментчета код... искам сам да го напишеш...
Най-голямото парче код, което съм писал сам е една програма за запис на телефонни разговори. Около 15000 реда код на C. Записва от звуковата карта директно в .mp3 формат. Без да минава през wav. Raw данните от звуковата карта се кодират в реално време и кодирания stream се записва на харда. Има си и palyer че, със звуков компресор за изравняване на гласовете (щото тоя, с който говориш обикновено се чува много тихо, пък ти - много силно). Има и търсачка за разговорите и нещо като малка home-made база от данни с индексиране по няколко полета за по-бързо търсене. Има си и доста интуитивен GUI, с потребители, права на достъп и т.н. Ако си мислиш за какво по дяволите може да служи това... една бърза помощ в Пловдив (6-150) и една в София работят с него от август миналата година. И не е мръднало   чак не мога да повярвам, че се получи толкова стабилно...
Иначе на C съм писал и около 27000 реда - един бая advanced Tetris, обаче тфа не се брои, тъй като не мога да покажа кода. Затри ми се харда   Имам само компилирана версия...
Колкото до проекти в екип - sorry, обаче не мога да ти кажа... ама нещата са бая по големи  

А да... НЕ МОЖЕШ просто с a + b... и точно незнанието на този факт ме кара да мисля, че си нямаш на идея за какво говоиш...
Активен

Phyz

  • Гост
логическо и функционално програмиране
« Отговор #45 -: 13.12.2004, 17:27:00 »

Баси, колко време си загубих с тебе днес не е истина... направо не мога да повярвам... ако си бях в Пловдив сигурно щях да те поканя на биричка... ама нейсе... повече няма да пиша, така че не се хаби да ми отговаряш.
Активен

;-)

  • Гост
логическо и функционално програмиране
« Отговор #46 -: 13.12.2004, 17:36:00 »

;-) такаа...сега вече може да се говори с теб, но защо трябваше да те предизвиквам така? Споко, аз не изпитвам нужда да се докажа, но говориш смислено така че сменям тона. Разби ме обаче, ако си писал това на С защо хвалиш толкова други езици? Защо не го на писа на Лисп? За твоята задача - останах с впечатление че даваш решението на Лисп и искаш такова на друг език?
(defun add (a b)
(+ a b)
)
Ако това е целия код това работи за такива параметри за които оператора "+" е дефиниран. Ако искаш и за други - не знам Лисп предпологам имаш предвид че лесно се дефинират? Може и така да е, но какво от това?
Страничен въпрос: WAV формата не е ли почти Raw формат? Като изключим някой друг header.
А работата в екип - не се брои.
Какво те кара да си мислиш че съм в Пловдив? Знам че няма да пишеш, но ще го прочетеш.
И още един off-topic: къде бачкаш?
Не нерви повече - чешит съм си малко, но целта на занятието беше изпълнена. Може все пак ако имаш път към "Халбите" да се обадиш.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
логическо и функционално програмиране
« Отговор #47 -: 13.12.2004, 18:19:00 »

@;-)
Пробвах няколко варианта с побитови операции, но така и не стана по-бързо от първия ми вариант с деленето.
Активен

;-)

  • Гост
логическо и функционално програмиране
« Отговор #48 -: 13.12.2004, 18:29:00 »

sasquatch, би ли ги постнал и ако може сравнение между тях. Благодаря.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
логическо и функционално програмиране
« Отговор #49 -: 13.12.2004, 18:35:00 »

Ще постна само един (другите бяха по-зле):
bool mask_check(long num){
................long mask = 1;
................for(int i=0;i < sizeof(long)*8;i++){
................................if((mask | num)!=1){
............................................if((mask & num)==1)
.........................................................return false;
................................}
................................else return true;
................................num >>= 1;
...............}
............... return false;
}
100% има и по-добър начин, но аз поне не мога да сетя засега.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
логическо и функционално програмиране
« Отговор #50 -: 13.12.2004, 19:11:00 »

Тука един познат е чел темата и ми прати това по ICQ-то :
Здрасти. Гледам че дискусията за степента на 2 във форума стана много интересна - но не ми се пише там. А пък видях едно решение в google като потърсих малко (еднократно  - с "algorithm power 2")  - и първия резултат беше класа Random - http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html - (n & -n) == n
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
логическо и функционално програмиране
« Отговор #51 -: 13.12.2004, 22:20:00 »

btw samo shte kaja 2 neshta polovinata moduli v python koito idvat zaedno s sdk-to sa pisani na java ,c,c++ .. bez commentar poveche.
p.s. daje na google module-a za python det e e pisan na java.
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
логическо и функционално програмиране
« Отговор #52 -: 13.12.2004, 22:25:00 »

tva vikam dan e go pastevam zatva go delnah   neka sedi taka

[This message has been edited by JOKe (edited 13-12-2004).]
Активен

Phyz

  • Гост
логическо и функционално програмиране
« Отговор #53 -: 14.12.2004, 10:14:00 »

Joke душата мерси, че сам ми доказа тезата :)
Като полвината модули са писани на C (на C++ не можеш, нито пък на Java на чистия Python, зa Java та има Jython), защо хората не си пишат направо на C? Или пък направо на Java? Защо им трябва да се занимават с друг език? Що не си използват готовите модули директно от Java, ами ги правят за Python? А знаеш ли колко от Java та е C++? А колко от C++ а е Assembly?
М/у другото нямаш си идея колко от Java програмите използват Jython,  за да си правят .class файлове от Python програми... и знаеш ли защо? Защото е по-лесно... и около 5 пъти по-бързо :) И не се налага да компилраш всеки път като пипнеш 2 букви в някой файл :)

Колкото до Google - Google няма модул за Python. Google има SOAP WEB Service, който може да се използва и от Lisp ако щеш (artanis - за Perl има SoapLITE :).
Обаче има специален модул за Java... и знаеш ли защо? Защото на Java рите за да използват Web Service а им трябва един тон код. И хората са им написали Wrapper, щото Java рите обикновено без Wrapper не могат :) А на Python ти трябват 4-5 реда... всъщност 3 реда...
Иначе си прав, че web sеrvice а е някакъв Java байткод, обаче не съм много убеден, че байткодът се е получил от компилиране на .java файл :) Свиквай вече, че не всичко що е '.class' е '.java' :)

Без коментар повече... и въобще къф е смисъла? Нито аз мога да те убедя, нито ти мене... когато ти втръсне да изписваш по 3 реда само за да отвориш някакъв файл сам ще дойдеш на моята...

Ай стига вече... кво ще кажеш?
Активен

;-)

  • Гост
логическо и функционално програмиране
« Отговор #54 -: 14.12.2004, 10:21:00 »

sasquatch, падаш си малко cheater - това решение не ми беше известно, но тъй като е много близко до моето: n & (n-1) > 0,  или за да е по-близо - (n & (n-1)) == n приемам че просто има две добри решения, за да е по-ясна разликата между двата показвам примерен код за двата случая/Phyz много държеше да види два реда код от мен/:

mov eax, n
mov edx, eax
neg edx
and edx, eax
cmp eax, edx
je ok
--
mov eax, n
lea  edx, [eax-1]
test eax, edx
je ok
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
логическо и функционално програмиране
« Отговор #55 -: 14.12.2004, 20:08:00 »

Phyz : 4ove4e shte kaja samo zasho java e "Ezikyt"
edna biblioteka + prenosimost . v C/C++ daje tupite kompilatori deto si polzvat standartnata biblioteka imat prekalenmo mnogo razliki .
zashto e ezikyt ?
pishe se lesno i byrzo vsichko( horata sa go izmislili na programisite da im e lesno ).
dai mi kod na Python 1vo za vzimane na FreeRam Space-a v momenta kakto i na zaetiq ram.
dai mi s kolko reda sha napriash buton + textField i kato natisnesh butona da se smenq teksta v text fielda i da bachka na sqaka komers OS ? ( moje bi bibliotekata za grafichni neshta na python e pak pisana na java ili na C++ ? izbshto neshto pisano li e v python na python ? ) .
napravi mi portal izcialo na python + HTML.
dai mi analog na HttpSesion.
dai mi analog na Appletite ? tezi gadni neshta deto ush sa bili neudobni ama spored men sa nai hubavo neshto za sajelenie neshto Flash veche gi mesti ot pazara ( I C# de ).
da ti updatena edno real prilojenie na java koeto se pishe za 1 chas i ti da mi napishesh analgoa na python za 1 chas stava li ? ( predi tova ti davam da mislish ako triabva i cial den ? )i da vidim redove / chetimost / lekota na pisane / "KEF".
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
логическо и функционално програмиране
« Отговор #56 -: 14.12.2004, 20:20:00 »

aide da sprem spora kakto kaza doc. Stoianov :
"sporovete ot roda na koi ezik e nai hubav sa glupavi nai hubaviq ezik e tozi koito znaesh nai dobre" neshto takova a drugata misal koqto neznam koi beshe kazal "seki ezik e izmislen zaradi razlichno neshto i s razlichna cel taka che vsichki ezici sa prekaleno razlichni za da se sravnqvat izobshto" .
samo che Java pokriva primerno 15 ot 40 aspekta a Python kolko 3 ? 4 ? a C++ kolko ? moje bi 20 ot 40 ama na cena cial jivot uchi i nakraq nishto neznaesh shtoto tiq det pishat bibliotekite nemislqt za tebe.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
логическо и функционално програмиране
« Отговор #57 -: 14.12.2004, 22:47:00 »

<BLOCKQUOTE><font size="1" face="">quote:</font><HR><font face="" size="2">Originally posted by ;-):
sasquatch, падаш си малко cheater - това решение не ми беше известно, но тъй като е много близко до моето: n & (n-1) > 0,  или за да е по-близо - (n & (n-1)) == n приемам че просто има две добри решения, за да е по-ясна разликата между двата показвам примерен код за двата случая/Phyz много държеше да види два реда код от мен/:

mov eax, n
mov edx, eax
neg edx
and edx, eax
cmp eax, edx
je ok
--
mov eax, n
lea  edx, [eax-1]
test eax, edx
je ok
</font><HR></BLOCKQUOTE>

Да не мислиш че си фанал господ за шлифера                  

[This message has been edited by sasquatch (edited 14-12-2004).]
Активен

;-)

  • Гост
логическо и функционално програмиране
« Отговор #58 -: 15.12.2004, 10:20:00 »

sasquatch,  съвсем не смятам че съм гений само защото съм се сетил за хубаво решение. Никога не съм изпитвал нужда да се доказвам колко съм добър защото няма смисъл - от това че ще се похваля няма да стана велик програмист.  Просто ми е смешно когато някой каже че език като Пролог помагал защото бил логически и т.н. Явно в случая какво решение ще ти хрумне не зависи от езика. Важното е като се захванеш с нещо да го изучиш добре и тогава ще ти станат ясни предимствата и недостатъците му. В началото Phyz ме заблуди че е от хората които са чули че нещо е хубаво и повтарят като папагали. Изглежда човека все пак знае за какво говори и ако си остави mail или icq предложението ми все още е в сила.
С предния пост исках да кажа че темата за мен е приключена. И не смяташ ли че ако исках да се похваля щях да държа да се разбере кой съм?
sasquatch, google също е решение - важното е да се сетиш да го използваш - аз не се сетих с което не се гордея.
Благодаря на всички за интересната дискусия и ако съм се заяждал малко то е било да се получи по-активна дискусия.
Активен

Phyz

  • Гост
логическо и функционално програмиране
« Отговор #59 -: 15.12.2004, 20:06:00 »

Бля... тук имаше един бая-дълъг пост към JOke, обаче се отказах да го пост вам... нека си живее човека в розовите си бля бла, където SUN мислят здраво само за Жаварите и Жава та била направена, за да им е лесно... ако пък толкова държиш да го пост на, само кажи...

;-) Направо заби Prolog 3 метра в асфалта... твоето е толкова ясно и четимо, че веднага разбрах кфо си имал предвид... пък мойто е грозно и неясно... отивам в ъгъла да се срамувам и повече Prolog няма да пипна... убеди ме от всякъде :) Ей ти mail : sergei.georgiev [at] gmail [dot] com
Активен