argon bulletin board

Факултети => Факултет по математика и информатика => Темата е започната от: artanis в 03.12.2004, 19:08:00

Титла: логическо и функционално програмиране
Публикувано от: artanis в 03.12.2004, 19:08:00
Здравейте колеги,

Бих искал да помоля тези от вас, които пазят упражненията си по логическо и функционално програмиране (програмите на лисп и пролог), да ги постнат във форума. Благодаря предварително!

поздрави:
Атанас Чанев
Титла: логическо и функционално програмиране
Публикувано от: del в 03.12.2004, 19:24:00
Това не ти ли върши работа
http://www.fmi-plovdiv.org/bg_ver/edu/lfp/prolog.pdf (http://www.fmi-plovdiv.org/bg_ver/edu/lfp/prolog.pdf)
http://www.fmi-plovdiv.org/bg_ver/edu/lfp/lisp.pdf (http://www.fmi-plovdiv.org/bg_ver/edu/lfp/lisp.pdf)
Титла: логическо и функционално програмиране
Публикувано от: artanis в 03.12.2004, 19:33:00
И още как. 10x  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: TeeRexX в 04.12.2004, 22:56:00
kato mi mine izpita po tazi disciplina 6te izpolzvam tozi topic za da izrazq mnenieto si za neq :+) (ako mi pozvolite)
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 05.12.2004, 16:44:00
TeeRexX : hahaa ... a ve vij LIsp-a ne beshe zle..  (http://forum.argon.acad.bg/html/smile.gif) ama prologa..... tztztz .. :+) pochti sichko razbrah osven kak se programira :P xaaxa
Титла: логическо и функционално програмиране
Публикувано от: TeeRexX в 05.12.2004, 22:15:00
ma to verno li moje da se programira na Prolog?!?
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 06.12.2004, 03:39:00
Може ако си мазохист  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 08.12.2004, 12:43:00
TeeRexX : na chist prolog apsurd ! obache sigurno ima ezici koito sa firmeni ezici i sa hibridni mejdu prolog i neshto obektno orientirano ili procedurno primerno prolog+java i na nego moje BI eventualno bi ti bil ot pomosht tova che si znael prolog makar che se samnqvam.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 08.12.2004, 14:06:00
Може....обаче има 2 пътя:

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

2. Да пишеш програми НАИСТИНА ти прави кеф, съответно повечето от свободното ти време отива в четене на разни интересни неща, свързани с програмиране. Ако това е така в повечето случаи стигаш до извода, че наистина ти ТРЯБВАТ езици като C, Prolog, Lisp, Python, Ruby и т.н., за да можеш по-лесно да изразяваш това, което се случва в главата ти.

Всичко е въпрос на необходимост - ако нямаше необходимост, нямаше да има ни Prolog, ни Lisp, ни Python... а щеше да има нещо, наречено примерно "Pliok" и всички щаха да драскат на него.

Joke, м/у другото мисля си, че когато стигнеш момента, в който ТИ ще определяш архитектурата на някаква система ще осъзнаеш колко е полезно да ги знаеш тези неща... това е друг, различен начин на мислене.

"It is impossible to get out of a problem by using the same kind of thinking, that it took to get into the problem"
Albert Einstein, Nobel Laureate, Physics
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 09.12.2004, 17:05:00
Heh tova me razsmia na edno miasto da slagat C i Prolog. Prolog v chistia si vid e edno nedorazumenie. Tova che 90% ot "programistite" na Java i .Net tyrsiat helpa za edin cikyl ne znachi che sa neseriozni ezici. Lichno az kritikuva ezici koito poznavam. V chist vid Prolog izvyn universitetite niama. Elementarena zadacha - naj-efektivno da se opredeli dali estestveno chislo e tochna stepen na 2. Mnogo iskam reshenie na Prolog ili Lisp syotvetno da vidia predimstvoto na tozi ezik. Naj-smeshnoto obiasnenie e kolko lesno se pravi backtracking na Prolog - pravi se lesno na vseki ezik, za smetka na tova za edin cikyl ili "if" se pishat izlishni predikati i koda e v pyti po-nechetim.

quote:
Originally posted by Phyz:
Може....обаче има 2 пътя:

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

2. Да пишеш програми НАИСТИНА ти прави кеф, съответно повечето от свободното ти време отива в четене на разни интересни неща, свързани с програмиране. Ако това е така в повечето случаи стигаш до извода, че наистина ти ТРЯБВАТ езици като C, Prolog, Lisp, Python, Ruby и т.н., за да можеш по-лесно да изразяваш това, което се случва в главата ти.

Всичко е въпрос на необходимост - ако нямаше необходимост, нямаше да има ни Prolog, ни Lisp, ни Python... а щеше да има нещо, наречено примерно "Pliok" и всички щаха да драскат на него.

Joke, м/у другото мисля си, че когато стигнеш момента, в който ТИ ще определяш архитектурата на някаква система ще осъзнаеш колко е полезно да ги знаеш тези неща... това е друг, различен начин на мислене.

"It is impossible to get out of a problem by using the same kind of thinking, that it took to get into the problem"
Albert Einstein, Nobel Laureate, Physics



Титла: логическо и функционално програмиране
Публикувано от: Phyz в 09.12.2004, 18:02:00
Не знам човеко... говоря ти за езици, които по принцип не се търсят много много, затова съм ги сложил всички в кюпа. Ти май въобще не си схванал за какво говоря... идеите, които са довели до появата на Prolog и Lisp могат да се реализират (сравнително) лесно на Java или C++. Можеш да си имаш класове Predicate или Function със съответната функционалност. И с тях да си решаваш проблеми, които са лесни на Prolog и Lisp, а е голям гърч да ги правиш директно. Обаче ако не знаеш за тези концепции ще си се гърчиш...
Нали ти казах, всичко е въпрос на нужда. Ако нямаш нужда от тях - не ти трябват. Ти явно се оправяш доста добре и без тези неща. Тогава те нямат смисъл за тебе. Това е, като да занесеш телевизор на някой туземец и да му обясняваш на дълго и на широко колко е хубаво тфа нещо. Ми той си живее не зле и без телевизора. За кфо да се занимава с него? И в същото време има хора, които без телевизор не могат да живеят...

Дам... такива ми ти работи...

И на мен Prolog а не ми се нрави много много... и на мен не ми се занимава с телевизори... виж Lisp а си е друга работа... обаче това не значи, че не трябва де се учи. Току виж се намери някой, за който Prolog а ще е най-доброто нещо, което е виждал.

М/у другото имам една позната, която пишеше на Prolog (може и още да пише) за някаква фирма. Предполагам, че не е в "чист" вид...
Титла: логическо и функционално програмиране
Публикувано от: Nikolay Manchev в 10.12.2004, 09:22:00
quote:
Originally posted by Phyz:
М/у другото имам една позната, която пишеше на Prolog (може и още да пише) за някаква фирма. Предполагам, че не е в "чист" вид...



GraphTalk - на OBS измислиците най-вероятно.
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 10.12.2004, 10:05:00
Може би не бях достатъчно ясен - основната ми идея е: посредствени програмисти има и на C, C#, Java, но не езика е този който ги определя като такива. При тези езици винаги има какво да научи човек. Съгласен съм че за някой Lisp, Prolog са по-подходящи - главно хора за които да напишеш 1000 реда код значи да си най-великия програмист /още по-смешно е когато въобще броя на редовете се счита за критерий за сложност/. Специализираните езици са си добри в тяхната област, но колкото по-голям е проекта толкова предимствата им избледняват, а недостатъците им нарастват.
PS чакам отговор на задачата си ;-) интересно ми е какви решения ще се предложат за различни езици.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 10.12.2004, 13:15:00
Ето едно решение:
#include "stdafx.h"

int main(int argc, char* argv[])
{
   __int64 number = 1152921504606846976;//2^60
   while(number > 0){
      if((number % 2) && (number!=1)) {
         printf("Ne\n");
         return 0;
      }
      else{
         if (number==2 || number ==1){
            printf("Da\n");
            return 0;
         }
         else{
            number >>= 1;
         }
      }
   }
   return 0;
}
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 10.12.2004, 13:39:00
Lisp:

(defun blah (numb)
...(cond
......((<= numb 0) nil)
......((= numb 1) t)
......((/= (mod numb 2) 0) nil)
......(t (blah (/ numb 2)))
...)
)

Python:

def blah(numb):
   if numb <= 0: return False
   if numb == 1: return True
   while numb % 2 == 0:
      if numb == 2: return True
      numb = numb / 2
   return False

Ей ти и тестче:

print [x for x in range(1000000) if blah(x)]

Честно казано Lisp ското по ме кефи. И е по-бързо :)
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 10.12.2004, 13:41:00
Оплесках indentation a :) sorry...

Lisp:

(defun blah (numb)
...(cond
......((<= numb 0) nil)
......((= numb 1) t)
......((/= (mod numb 2) 0) nil)
......(t (blah (/ numb 2)))
...)
)

Python:

def blah(numb):
....if numb <= 0: return False
....if numb == 1: return True
....while numb % 2 == 0:
........if numb == 2: return True
........numb = numb / 2
....return False

Ей ти и тестче:

print [x for x in range(1000000) if blah(x)]

Честно казано Lisp ското по ме кефи. И е по-бързо :)
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 10.12.2004, 13:44:00
Вероятно това е първото което и на мен ми хрумна. Само малка забележка - няма нужда да проверяваш за 2 - на следващата итерация ще стане 1 което е по-бързо, но малко по-бързо ;-) Чакам други предложения - интересно е по колко начина може да се реши задачата. Особено с какво език като Listp, Prolog, Python или Ruby помагат. Това Ruby ме разби - даже идея си нямам какво е, но сигурно това го знаят сериозните програмисти. Да няма грешни изводи: не пиша на .Net или Java.
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 10.12.2004, 13:52:00
Докато си напиша пост-а се появиха и други мнения, предния ми отговор беше за sasquatch. Към Phyz: радвам се че се включи, но не смяташ ли че итеративното решение е по-бързо? Най-малко не слагаш EIP в стека. Но и с цикъл е бавно.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 10.12.2004, 14:00:00
Не е... комерсиалните компилатори на Lisp правят програми, които са най-много 2 пъти по-бавни от аналозите на Цъ... а Питона (колкото и да не ми се иска да го призная) в общия случай е около 50 пъти по-бавен (всъшност от 2 до 100 пъти).

Колкото до Ruby - www.ruby-lang.org (http://www.ruby-lang.org) Хората казват, че ще е следващия Python... не знам. Пък и не ми се занимава. Просто знам, че има огромна тълпа почитатели. Езика е абсолютно ОО. В смисъл, че можеш да пишеш такива неща:

5.times {print 'blah'}

Обаче няма мощната поддръжка на списъци, това дет най ме кефи в Питона и Lisp а.
Титла: логическо и функционално програмиране
Публикувано от: Nikolay в 10.12.2004, 14:19:00
Pascal

program check;
var
    n:longint;
 
begin
    writeln("n=");
    readln(n);
  if  (Log(n)/Log(2)) - trunc(Log(n)/Log(2))=0
  then writeln("true")
  else writeln("false")
                     
end.

Титла: логическо и функционално програмиране
Публикувано от: ;-) в 10.12.2004, 14:52:00
Към Phyz - малко се отплеснах - идеята не беше да покажа предимство на С компилаторите.
За Nikolay - идеята е интересна, но не съм сигурен дали няма за някои n да има проблем с представянето на реални числа. Ако можеш да провериш за всяко n от 1 до 2000000000 и да изписва само тези които са точни степени би било интересно да се види резултата. Иначе се радвам че и ти се включи, за да дадеш такава насока на разсъждение.
Всъщност доколкото мога да се сетя има само още съвсем минимална възможност за подобрение. Нямам предвид козметики, а избягване на реални числа.
Титла: логическо и функционално програмиране
Публикувано от: Nikolay в 10.12.2004, 16:14:00
Privet, otnovo!

Za greshkata si prav, ponezhe ln(1 + 2^(-k) ) kloni mnogo
byrzo kym nula. Naj-opasni sa chislata v "blizost" do 2^k.
Eto edna modifikaciq:

program check_1;

var
    n:longint;
 
begin
    writeln("n=");
    readln(n);
       
 if  2^( trunc( Log(n)/Log(2) ) )-n=0
  then writeln("true")
  else writeln("false")
                     
end.

Neka n=2^k +r, r<2^[k/t] (t e est. parametyr opisvasht opasnata zona, mozhe
da se izchisli!).
Togava [Log_2(n)], pri golemi k  e  k (priemame, che sme poluchi mashinna nula).
(Predstavi si Log_2(2^k +1), pri k=500)
togava 2^k -(2^k +r)=-r, razlichno ot nula.
Tuka izpolzvam slednoto prosto svojstvo:
2^[Log_2(n)] - n = 0 <=> n e stepen na 2, kydeto
a Log_2(n) e logaritym pri osnova 2.

Izvinqvam se, che postyt mi e s latinsko pismo, no ne mozhah da kiriliziram
Solaris-a si.

S pozdrav:
Nikolay D.

[This message has been edited by Nikolay (edited 10-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 10.12.2004, 16:32:00
Според мен това решение е по-близо, но се появява допълнителен проблем - ако приемем в първия вариант Log(n)/Log(2) не се изчислява два пъти това е еквивалентно на: frac(X) = X - trunc(X). Проблема е в допълнителното повдигане на степен, което не е толкова тежко когато е целочислено и е степен на 2, но все пак е по-неефективно.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 10.12.2004, 16:50:00
Леле... абе хора вий друга работа нямате ли си  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: Nikolay в 10.12.2004, 20:09:00
quote:
Originally posted by Phyz:
Леле... абе хора вий друга работа нямате ли си  :)



Здравейте, Phiz !
Поне аз имам работа в изобилие. В понеделник тряба да предадем проектите си (4 задачи за BCH-Codes), но този път лекторът надмина себе си -
задачите са зверски. Явно си прави някакви експерименти. Решил съм само 2.
Ако някой е чел сериозно BCH-Codes, да пише (в темата Алгебра).

Поздрави
Nikolay D.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 11.12.2004, 14:18:00
Направих няколко експеримента - на Николай вариантите и двата работят при мен, но само ако логаритмите са десетични с натурални явно поради някакви грешки при изчисляването на натурален логаритъм с библиотеката на C още на 8 дава неверен резултат. Другото което е интересно итерационния вариант работи поне 5 пъти по-бързо (за по-големи числа още повече) - изглежда е така защото няма работа с реални числа.

[This message has been edited by sasquatch (edited 11-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 11.12.2004, 15:43:00
samo iskam da kaja che nqamam nishto protiv LIsp / Prolgo mislq che prosto miastoto ne im e v 3ti kurs a i otdelno pone kato sa slojeni v 3ti kurs pone da uchim interesni neshta primerno v referance-a na NewLISP zabelqzah ludi raoti primerno socket clienti i etc   (http://forum.argon.acad.bg/html/smile.gif)
kolkoto do Java i C# ... kvo losho ima v tova da rabotish i da se napivash sqaka vecher s bira primerno   (http://forum.argon.acad.bg/html/smile.gif) a i kolkoto "da si pishehs programi za koito naistina ti pravi kef" ami moga da ti kaja che kato pisha na java naistina mi e kef a kato pisha na C++ ( tupata bibliteka na microsoft ( MFC 6.0 ) .. male as sanuvam koshmari i posle nemgoa da se orientiram zakvo stava vapros da ne goovrim che Microsoft Press edna hubava kniga nqamat se edno gi izbirat po nekadyrnost.
ideqta mi e che moje bi hubavo v 1vi krus da se uchi C++ .. kakto si e sega dobre neka tama da ima nqakvi bazovi znaniq i da sme vijdali ot sichki ama posle 2ri kurs i 3ti mesto da seu chat neshta kato Lisp i Prolog ( po novata programa ima i Ezici za programirane kadeto ima osnovi na Lisp i Prolog ) t.e. gubim veche 1 semstar mojeshe da se sipe iako Java i C# a
apak mi e pisnalo ot izkazvaniq che horata deto pishat na C# i Java ne sa programisti ..   (http://forum.argon.acad.bg/html/smile.gif) nachi tova che pishem/pishat na udobni ezici izmisleni na baza drugi ezici e glupavo ? taka li ?
che daite da pishem iako na C to 71va godina ili na Fortran i Lisp i Pascal i Prolog .. mai tva sa tama 1vite ezici oo ili asembler za PDP11.

[This message has been edited by JOKe (edited 12-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 11.12.2004, 22:26:00
samo da obqasnq neshto principno sichki predmeti mi haresvat e na nqakoi predmeti prepodavaneto moje da e po dobro ama predmetite ne sa zle prosto ot sichki predmeti naistnia
Lisp i Prolog mi biaha nai bezinteresni ne vsashnost mi biaha interesni ama nemislq che shte gi polzvam inache naisitna biaha dobri i beshe dobre da gi spomenat ( v ezici za programirane predmeta a ne da gi uchim oshte 1 semestar ).


[This message has been edited by JOKe (edited 12-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 12.12.2004, 03:11:00
По-добре отвори отделна тема, в тая не му е мястото за подобни словоизлияния   (http://forum.argon.acad.bg/html/wink.gif)
Сам се сещаш колко общо има ЛФП , програмата по която се учи и начина на преподаване във факултета  (http://forum.argon.acad.bg/html/wink.gif)

[This message has been edited by sasquatch (edited 12-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 12.12.2004, 15:07:00
o ne ne neiskam otdelna tema prikliuchvam temata  (http://forum.argon.acad.bg/html/smile.gif) as go postvan tva samo shtoto nqakak si ne mi haresva ideqta nqkoi da kazva che koito pishe na java i C# e edi kyv si apak ako pishesh na ruby ili lisp ili prolog se edno si geroi.  (http://forum.argon.acad.bg/html/smile.gif) tva e.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 12.12.2004, 21:22:00
Колкото до това и аз съм на същото мнение - в смисъл че не е важно на какво програмираш, а каква работа ти върши това.
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 10:53:00
Започна малко да се размива темата. Има едноредово решение, което използва само цели числа. Явно това го няма в документацията на никой език, тази задача най-вероятно не я учат в никой университет. И какво правим тогава?
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 13.12.2004, 11:50:00
JOke пак нeщо не си разбрал човеко... ама мен не ми се обяснява повече. Не съм казал, че програмистите на Java и C# са тъпи. Казах само, че болшинството от програмистите на Lisp са умни.
Познавам няколко изключително способни програмисти на Java. Странно, обаче повечето от тях не използват Java за собствените си проекти...  Както и да е. Пиши си на квото ти е кеф, на кфото там ти е удобно... Извинявай ако съм те обидил с нещо. Аз ще си чаткам на Python и Lisp, на мен на тях ми е кеф :) Нещо като хоби :) Когато няма с кой да се наливаме с биричка :)

Не ме разбирай погрешно. И аз, както повечето от вас си изкарвам кинтите с Жава... както и около 2 милиона безработни програмисти, които до преди 10 ина години си изкарваха кинтите с COBOL и си мислеха, че са хванали господ за шлифера кат са толкова добри коболаджии... Я сега си напиши в CV то, че рабираш от COBOL :) хората ще се спукат от смях. Това май е съдбата на "бизнес" езиците - много бързо им минава модата... А пък Lisp е направен 60 те години... И бая голяма част от AutoCad е писан на Lisp :) Някой да си мисли, че AutoCad няма приложение?

М/у другото иди на Google и погледни обявите за работа:

http://www.google.com/jobs/eng/sw.html (http://www.google.com/jobs/eng/sw.html)

Пусни едно търсене на страницата за Python... Някой да е на мнение, че Google са lamer и? "Търсим Жавар, ама да знае Python..." - а защо ли? Има защо...

А колкото до това с какъв точно език да почнеш в 1 курс - едва ли има по скапан избор от C++. Че дори и Java. Да не говорим за C#. И въобще за езици, които са статично типизирани (statically typed)... За да почнеш да работиш на нещо такова, трябва първо да обясниш на нещастното студентче защо кат напише програмата и тя не тръгва (а трябва първо да се компирира, а после оди обяснявай кфо е тфа компиратор и къф е смисъла от него...), защо не мога да напиша a = 5, като всъщност точно това имам в предвид, защо не мога да напиша една функция за събиране на числа, а трябва да напиша по 1 за int и long (които правят едно и също - return a + b) или да предавам параметрите с един дебел cast, а ако искам и стрингове да събирам - работата става още по заспала... template и, интерфейси, рефлекшън и т.н. и т.н. проблеми, произтичащи само от факта, че езиците от които се почва са статично типизирани... тези езици трябва да се учат бая по-нататък...
Ама тфа е съвсем друга тема, която може и да започна във форума, ако ми остане повечко време...

М/у другото sasquatch, Nikolay и ;-) ето ви една offtopic задачка. По долу има функция, която събира 2 числа (независимо какви, дори и комплексни) или стрингове или въобще обекти, които могат да се събират:

Python:

def add(a, b):
...return a + b

Lisp:

(defun add (a b)
...(+ a b)
)

Искам най-краткия аналог на горната функция, който се сетите на статично типизиран език - Pascal, C/C++, Java или C#. Най ми е интересно, как ще го направите на Java - аз едвам успях с един интерфейс и с интроспекция на подавания Object :) И изглежда гроооозно. Ама аз Java та много много не я разбирам... може и да има по-лесен начин :)
Титла: логическо и функционално програмиране
Публикувано от: Nikolay в 13.12.2004, 12:15:00
Здравейте!
Съгласен съм, че решението което публикувах не е най-бързо, просто изложих
най-ясното математическо решение (според мен). Този метод има предимство само,
 ако степента на 2-та в каноничното разлагане на n е най-голяма (примерно
n=2^500 . 3) Ако примерно n е нечетно, метода деление на 2 още на първата
итерация ще установи, че числото не е степен на 2.
Друго (НО от мат. гледна точка еквивалетно на интеративното) решение е следното:
За дадено [n] викаме функция, която го представя от десетичен в бинарен запис
(мисля че в Pasacl има такава функция). Ест. число [n] е степен
на 2 точно тогава, когато бинарният запис на [n] е от вида 100000...000
(броят на 0-те е [log_2(n)]-1 ).

С поздрав:
[Nikolay D.]
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 13:31:00
На кой би му трябвало да прави функция за събиране на две числа? Ако вземем друг пример - функция която определя броя на единиците при двоично представяне на числото? Или друг пример - смятам сумата на всички продажби - за какво ми е да го правя за типове които не са реални? Това е несериозно просто. Към Nikolay - макар и чисто математическо твоето решение е по-близо до отговора - няма цикъл.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 13.12.2004, 14:04:00
Не е въпроса в събирането... Идеята е да приложиш произволна операция, върху 2 (или повече) обекта и да вземеш резултата.
Просто го направи. Направи го за 2 Object а. Или за List от Object и ако искаш. Искам малко да се погърчиш... да понапишеш 2-3 класа за нещо, което се прави на 1 ред...

А за броя на единиците и за обръщане на свързани списъци... тфа са тъпи задачи, които се дават на тъпи интервюта за програмисти... от които работодателя ни най-малка представа не добива за умствените способности на кандидата. За 2 седмици написах по разни интервюта поне 3 версии на ltrim, поне 2 версии на lpad, един път писах strip, един път броих нули в long, eдин път умножавах 2 произволно дълги числа, един път обръщах string на място и т.н. и т.н. простотии. Много ми е чудно къде в приложение, в което се налага да намериш сумата на X продажби (SELECT SUM(bla) FROM blah GROUP BY bla...) ще ти се наложи да броиш единици в двоично представяне. Виж за събирането мога веднага да ти кажа поне 10 приложения.

Аз направих твоята задачка без да твърдя че е безсмислена. Вземи и ти напиши моята. Още повече, че моята е супер лесна - събираш 2 обекта без да ти пука какви са :) Защити си тезата. Покажи, че на Жава е по-лесно.

Моята функция освен числа събира и низове, и вектори, и наредени N торки, и списъци, и речници, и множества, и web сървъри ако щеш...:)
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 13.12.2004, 14:07:00
М/у другото sasquatch, Nikolay и ;-) ето ви една offtopic задачка. По долу има функция, която събира 2 числа (независимо какви, дори и комплексни) или стрингове или въобще обекти, които могат да се събират:

Python:

def add(a, b):
...return a + b

Lisp:

(defun add (a b)
...(+ a b)
)

Искам най-краткия аналог на горната функция, който се сетите на статично типизиран език - Pascal, C/C++, Java или C#. Най ми е интересно, как ще го направите на Java - аз едвам успях с един интерфейс и с интроспекция на подавания Object  (http://forum.argon.acad.bg/html/smile.gif) И изглежда гроооозно. Ама аз Java та много много не я разбирам... може и да има по-лесен начин  (http://forum.argon.acad.bg/html/smile.gif)[/B][/QUOTE]

Теоретично на C++ ще го направя като си направя един абстрактен клас и го наследя n-пъти за всички типове обекти които искам да събирам, поне това е първото което ми идва наум, може доре да не ползвам функция а да предефинирам оператора(ите) за събиране, ама ти ни закопа 2 педи в асфалта, сещаш се колко време ще трябва да се мъча с C++  (http://forum.argon.acad.bg/html/smile.gif)

Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 13.12.2004, 14:09:00
@Phyz
Теоретично на C++ ще го направя, като сздам един абстрактен клас и го наследя n-пъти за всички типове обекти които искам да събирам, поне това е първото което ми идва наум, може доре да не ползвам функция а да предефинирам оператора(ите) за събиране, ама ти ни закопа 2 педи в асфалта, сещаш се колко време ще трябва да се мъча с C++  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 14:36:00
Забавно стана...Идеята ми за единиците беше точно в това - нещо произволно което го няма реализирано в езика. SQL знам - това беше пример че не винаги ти трябва да реализираш 100 неща когато ти трябва 1. А ако ми трябва да сметна сумата на 3 числа 100% съм сигурен че няма да го направя така: Res = add(add(a, b), c), когато мога просто: Res = a+b+c;  Всъщност великата функция само повтаря това което вече го имаш - какво правиш когато не е така? Какво е било най-голямото нещо което си писал някога? А задачата не си я решил - искаше се най-ефективно решение.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 13.12.2004, 14:57:00
Нали това беше идеята бре :) Аз го имам на Lisp и Python, ти го нямаш на Жава... и теб те е яд, щото аз пък имам всичко, което ти имаш на Жава, и на Ц++ и на Ц# и т.н. :)
И все пак искам да го напишеш, а не да ми се измъкваш... 3 числа се събират така : (+ 1 2 3), а 4 така (+ 1 2 3 4)... смятам че можеш да се сетиш как се събират 5, 6 и т.н.
М/у другото точно в Жава ми се налага да правя 100 неща, като ми трябва 1. Въпроса е, че ти не знаеш какво е това 1 и затова си мислиш че 100 те неща са оптималния вариант и по-умно не може да се измисли...
Човеко измъкваш се... аз ти дадох 2 задоволителни решения... ти не ми даваш нито едно. Дай ми първо решението, пък после ще продължим да се джафкаме... :)
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 15:52:00
Хех - имаш нещо което се пише лесно на Lisp и Python. Въпрос: колко игри има писани на тези езици и защо? Искаш от мен да напиша какво? Как се прави функция за нещо което го имам в езика? Покажи нещо което внася нова функционалност. Аз утре ще напиша език в който тази функция е вградена или хайде да не е вградена но да се дефинира с "define Phyz", и какво доказва това? Задачата която дадох е елементарна, но използва побитови операции които уж ги разбират много хора. Всички мои примери се реализират еднакво лесно на всички езици. И не се джафкаме спокойно...само така изглежда ;-) Наистина искам да знам какво е най-голямото нещо което си писал /по едно за всеки език/ и как оценяваш какво би спечелил и загубил от друг език? Това че 90% от програмистите на известните езици са зле е нормално - с всеки популярен език ще се случи.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 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. И си готов...

И не ми говори за игри... когато ми направиш събирането както трябва на Жава, тогава ще разбереш най-големите неща, върху които съм работил. Искам да видя дали можеш да пишеш код или можеш само да говориш празни приказки.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 13.12.2004, 16:26:00
Е значи за да е точна степен на 2 числото трябва да има вдигнат само един бит, ако са повече не е точна степен. В крайна сметка каква е ползата от това изобщо?

[This message has been edited by sasquatch (edited 13-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 16:55:00
Незанам на какво говориш - искаш да направиш нещо ако вече го имаш направено. Не разбрах защо ми е да викам add(a, b), ако мога същото с a+b?
Код няма да ти пиша защото примера няма смисъл. За примера с интерфейсите - кажи реалния пример в който ти трябва това? Аз може и да не разбирам много, но все някой ще разбере спокойно ;-) Или преди малко изписа половината си програми? Искаш от Java да направиш Lisp и резултата е грозен. Обяснявам пак - в дребни проекти такива предимства на даден език са големи, в по-големи проекти се губят. ;-)) Значи всеки който може да напише функция за събиране може да ти разбере сложните проекти...И не говорех за игри - говоря за performance.
sasquatch, смисъла е да се види може ли човек който претендира да е програмист да измисли такава тривиална задача извън стандартните решения - т.е. може ли да мисли самостоятелно за повече от 5мин. И да - как се устонавява че е вдигнат само един бит? Може би на Лисп става като го попитаме дали е сам?
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 13.12.2004, 17:12:00
Добре бе човеко... напиши квото и да е... няма значение някъф код... ти си избери... искам да видя. Интересно ми е. Обаче не ми го paste вай от някъф сайт с готини фрагментчета код... искам сам да го напишеш...
Най-голямото парче код, което съм писал сам е една програма за запис на телефонни разговори. Около 15000 реда код на C. Записва от звуковата карта директно в .mp3 формат. Без да минава през wav. Raw данните от звуковата карта се кодират в реално време и кодирания stream се записва на харда. Има си и palyer че, със звуков компресор за изравняване на гласовете (щото тоя, с който говориш обикновено се чува много тихо, пък ти - много силно). Има и търсачка за разговорите и нещо като малка home-made база от данни с индексиране по няколко полета за по-бързо търсене. Има си и доста интуитивен GUI, с потребители, права на достъп и т.н. Ако си мислиш за какво по дяволите може да служи това... една бърза помощ в Пловдив (6-150) и една в София работят с него от август миналата година. И не е мръднало  (http://forum.argon.acad.bg/html/smile.gif) чак не мога да повярвам, че се получи толкова стабилно...
Иначе на C съм писал и около 27000 реда - един бая advanced Tetris, обаче тфа не се брои, тъй като не мога да покажа кода. Затри ми се харда  (http://forum.argon.acad.bg/html/smile.gif) Имам само компилирана версия...
Колкото до проекти в екип - sorry, обаче не мога да ти кажа... ама нещата са бая по големи  (http://forum.argon.acad.bg/html/smile.gif)

А да... НЕ МОЖЕШ просто с a + b... и точно незнанието на този факт ме кара да мисля, че си нямаш на идея за какво говоиш...
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 13.12.2004, 17:27:00
Баси, колко време си загубих с тебе днес не е истина... направо не мога да повярвам... ако си бях в Пловдив сигурно щях да те поканя на биричка... ама нейсе... повече няма да пиша, така че не се хаби да ми отговаряш.
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 17:36:00
;-) такаа...сега вече може да се говори с теб, но защо трябваше да те предизвиквам така? Споко, аз не изпитвам нужда да се докажа, но говориш смислено така че сменям тона. Разби ме обаче, ако си писал това на С защо хвалиш толкова други езици? Защо не го на писа на Лисп? За твоята задача - останах с впечатление че даваш решението на Лисп и искаш такова на друг език?
(defun add (a b)
(+ a b)
)
Ако това е целия код това работи за такива параметри за които оператора "+" е дефиниран. Ако искаш и за други - не знам Лисп предпологам имаш предвид че лесно се дефинират? Може и така да е, но какво от това?
Страничен въпрос: WAV формата не е ли почти Raw формат? Като изключим някой друг header.
А работата в екип - не се брои.
Какво те кара да си мислиш че съм в Пловдив? Знам че няма да пишеш, но ще го прочетеш.
И още един off-topic: къде бачкаш?
Не нерви повече - чешит съм си малко, но целта на занятието беше изпълнена. Може все пак ако имаш път към "Халбите" да се обадиш.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 13.12.2004, 18:19:00
@;-)
Пробвах няколко варианта с побитови операции, но така и не стана по-бързо от първия ми вариант с деленето.
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 13.12.2004, 18:29:00
sasquatch, би ли ги постнал и ако може сравнение между тях. Благодаря.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 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% има и по-добър начин, но аз поне не мога да сетя засега.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 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 (http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html) - (n & -n) == n
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 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 в 13.12.2004, 22:25:00
tva vikam dan e go pastevam zatva go delnah  (http://forum.argon.acad.bg/html/smile.gif) neka sedi taka

[This message has been edited by JOKe (edited 13-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 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 реда само за да отвориш някакъв файл сам ще дойдеш на моята...

Ай стига вече... кво ще кажеш?
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 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 в 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 в 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.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 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>

Да не мислиш че си фанал господ за шлифера     (http://forum.argon.acad.bg/html/smile.gif)    (http://forum.argon.acad.bg/html/smile.gif)    (http://forum.argon.acad.bg/html/smile.gif)    (http://forum.argon.acad.bg/html/smile.gif)   (http://forum.argon.acad.bg/html/smile.gif)

[This message has been edited by sasquatch (edited 14-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 15.12.2004, 10:20:00
sasquatch,  съвсем не смятам че съм гений само защото съм се сетил за хубаво решение. Никога не съм изпитвал нужда да се доказвам колко съм добър защото няма смисъл - от това че ще се похваля няма да стана велик програмист.  Просто ми е смешно когато някой каже че език като Пролог помагал защото бил логически и т.н. Явно в случая какво решение ще ти хрумне не зависи от езика. Важното е като се захванеш с нещо да го изучиш добре и тогава ще ти станат ясни предимствата и недостатъците му. В началото Phyz ме заблуди че е от хората които са чули че нещо е хубаво и повтарят като папагали. Изглежда човека все пак знае за какво говори и ако си остави mail или icq предложението ми все още е в сила.
С предния пост исках да кажа че темата за мен е приключена. И не смяташ ли че ако исках да се похваля щях да държа да се разбере кой съм?
sasquatch, google също е решение - важното е да се сетиш да го използваш - аз не се сетих с което не се гордея.
Благодаря на всички за интересната дискусия и ако съм се заяждал малко то е било да се получи по-активна дискусия.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 15.12.2004, 20:06:00
Бля... тук имаше един бая-дълъг пост към JOke, обаче се отказах да го пост вам... нека си живее човека в розовите си бля бла, където SUN мислят здраво само за Жаварите и Жава та била направена, за да им е лесно... ако пък толкова държиш да го пост на, само кажи...

;-) Направо заби Prolog 3 метра в асфалта... твоето е толкова ясно и четимо, че веднага разбрах кфо си имал предвид... пък мойто е грозно и неясно... отивам в ъгъла да се срамувам и повече Prolog няма да пипна... убеди ме от всякъде :) Ей ти mail : sergei.georgiev [at] gmail [dot] com
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 15.12.2004, 23:31:00
Allohaa!Спокойно!Тука пък кой е казал че обича Prolog (http://forum.argon.acad.bg/html/smile.gif) (http://forum.argon.acad.bg/html/smile.gif) (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 15.12.2004, 23:45:00
Phyz : dai da ne zanimavame horata temata ne e za java  (http://forum.argon.acad.bg/html/smile.gif) .
utre imam izpit po prolog da mi stiskate palci da fana 3ka :>
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 16.12.2004, 04:32:00
Спокойно ако си при Сомова - тя го разбира Prolog по-малко от теб  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 16.12.2004, 09:46:00
JOke слушай sasquatch, знае какво говори  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: ;-) в 16.12.2004, 10:07:00
Phyz, смяташ ли че ако тръгна да пиша подобен пример ще го пиша на asm? Ако компилатора е достатъчно ефективен ще генерира този код. Достатъчно е да напишеш n & (n-1) > 0, което е кратко и ясно. Не съм твърдял че не можеш да го напишеш на Пролог. Лошото на Пролог-а е че кара хората да забиват твърде много по рекурсии и не забелязват тривиалните нерекурсивни решения. Ако реша да обхождам граф ще го правя рекурсивно, но не смятам че за всяка задача такова решение е по-добро. Стана ми странно че слагаш С и Пролог в една категория, а Java в друга.
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 16.12.2004, 13:38:00
А що не? От къде знаеш какъв ми е критерия?

C, Python, Lisp, Ruby та дори и  Perl и PHP са от едната страна
Java, C#, VB .Net та дори и COBOL са от другата  (http://forum.argon.acad.bg/html/smile.gif)

А сега познай какъв е критерия  (http://forum.argon.acad.bg/html/smile.gif) И една подсказка, не е разделение на езиците, които знам от тези, които не знам.

През последните месец и полвина практически цялото ми свободно време отива в четене на процеси. Софтуерни процеси (Ася Стоянова би се гордяла с мен  (http://forum.argon.acad.bg/html/smile.gif) И колкото повече задълбавам в процесите и разбирам как работят тлъстите IT корпорации, толкова повече се убеждавам, че когато една голяма фирма застане зад някаква технология, значи тя има интерес от това. А интересите на фирмите, по дефиниция са бизнес интереси. Не технологични.
SUN (според мен, може и да бъркам) не са застанали зад Java от любов към технологията, ами от любов към финикийските знаци... пари... кинти... авоари... cash  (http://forum.argon.acad.bg/html/smile.gif)
А глобалната рекламна кампания за .Net, която струва милиарди $ също (според мен) не е от любов към технологията, ами пак към горепосочените "roots of all evil".

Та така... аз ги деля на "бизнес езици" и "езици, които някой хакер е направил, за да му паснат на акъла".

И ако се замислиш малко, на кой Жавата е по-удобна - на програмистите или на Project Manager ите?

Идва клиента и ти му казваш:
- Направихме страхотна ахитектура, направо перфектно решение, супер евтино и стабилно е и можем да го направим много бързо.
- А каква технология използвахте, моля?
- Zope application server.
- Кфо???
- Zope application server, доста иновационна и гъвкава платформа, писана на Python.
- Ама аз не съм чувал за нея...
- Ами за какво сте чували?
- Java, J2EE, ASP .Net, Oracle и SQL Server
- А знаете ли какво представляват тези неща?
- Не, обаче всички ми ги хвалят... искам на Java и Oracle...
- Ама ще е доста по-скъпо и по-тромаво и ще отнеме повече време и ще трябва да наемете сертифициран от съответните фирми персонал да ви го поддържа...
- Нищо, аз ще си платя колкото трябва и ще чакам. Щото после ще мога да си лепна на Web сайта "Powered by Java & Oracle" и хората ше ми имат повече доверие...

Та така... и ти повече не се опитваш да правиш иновации... използваш това, което в момента всички са чували... което се рекламира в момента... това, в което се наливат яки кинти... то може и да е много добро, обаче на теб ти се НАЛАГА да го ползваш, щото такваз е видиш ли пазарната конюнктура ф момента...
Да не мислиш, че много ми се учи Java  (http://forum.argon.acad.bg/html/smile.gif) Ама нали тряа да ям и да плащам сметки... НАЛАГА ми се... как искаш тогава да я харесвам?

И само ме е страх, че Zope нещо бая се разрастнаха напоследък и да не вземат да правят яка реклама на Python а, че отиде тогава хубавият език... (http://forum.argon.acad.bg/html/smile.gif)

Може вече да ме оплюете, да ми се смеете да ме наругаете, да ме посочите с пръст и да ме замеряте с камъни. Това е моето мнение за Жава и тям подобните и езици. Не, че кат не я харесвам няма да се хвана да я изуча из основи де  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 16.12.2004, 20:03:00
Zope applicaton server-a ne e zle :P i Plone sashto  (http://forum.argon.acad.bg/html/smile.gif) makar che predpochitam da si code-na iako na java edin servlet.
пък и я ми обяасни тия хора дето ти кажат направи ми портал/нещо на Зопе после тоя съпорт от каде ша го тарсят ? пак от теб нали  (http://forum.argon.acad.bg/html/smile.gif) тоя Зопе дето кои знае кои го знае или пък тва PHP дето после съпорт-а е няква пълна магия щото е супер лесен за четене и ето тук идват корпоративните езици като Java/C# ( .nET ) лесно се пише и бол фирми и хора дето могат да ти го поддаржат после .. ако не те харесват след 5 месеца веднага те сменят докато с тоя Zope се обвързват прекалено много. Разбирам ги аз чесно казано фирмите .. .
мене пък ме дразни че се тъп4ат : искаме PHP .. искаме PHP искаме МySQL въри им обясняваи че JSP е по добро и PostreeSQL e по добро ..  (http://forum.argon.acad.bg/html/frown.gif).
всеки с проблемите си  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 17.12.2004, 11:10:00
Човеко хора винаги ще се намерят да ти го поддържат... това ти е последната грижа... обаче аз не продавам сертификати за Zope, нито пък за Python... Усещаш ли къде е разликата? Ей ти я разликата:

http://suned.sun.com/US/certification/java/java_progj2se.html (http://suned.sun.com/US/certification/java/java_progj2se.html)

И затова ме е яд, че напоследък Zope почнаха много да комерсиализират цялата история... и те почнаха с training и certification програми и т.н. и т.н.
Баси и аз сега трябва да чета яко за J2SE сертификат, щото така си повишаваш вероятността да си намериш по-престижна работа... пък и така си отварям пътя към SCEA то  (http://forum.argon.acad.bg/html/smile.gif) Ми какво ще стане когато Java излезе out of scope? Какво ще правя с тези сертификати? Каквото направиха коболаджиите преди 10 ина години  (http://forum.argon.acad.bg/html/smile.gif) ще си ги навра о...ад и ще почна да харча яко за други сертификати...
Това е един вид принуда да играеш по техните правила... не ми харесва... може правилата им да са много добри, обаче всеки си има своя истина... и моята не съвпада с тяхната  (http://forum.argon.acad.bg/html/smile.gif)
Ако искаш можеш да отвориш тема по въпроса за фирмите, сертификатите, клиентите, проектите и т.н. ... щото аз не искам да се регистрирам. Пък искам да разбера мнението на други хора по въпроса  (http://forum.argon.acad.bg/html/smile.gif)

Колкото до предимствата на JSP пред PHP 100% съм убеден, че sasquatch e на друго мнение по въпроса  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: Емил Дойчев в 17.12.2004, 16:22:00
Phyz, диалога в твоя пост м/у клиента и разработчика е правдоподобен. Също съм съгласен за интересите на Sun, Microsoft и т.н. В интерес на истината интересите на повечето хора са ориентирани пряко или косвено също към $.

Обаче ето ти един друг също толкова правдоподобен диалог. Клиентът (К) е голяма компания. Разработчикът (Р) е малка фирма, която може да пише едва ли не на всичко.

К: Искам да ми разработите ето това приложение (прилага пълна спецификация на изискванията).
Р: Добре, можем да го направим.

След 1-2 седмици Р изпраща предложение за реализация - архитектура, спецификация и т.н.

К: Ама чакайте малко. Вие подигравате ли се с нас? Какъв е този app server тук, какъв е този DB сървър mySQL?
Р: Е какво им е? Това са open source продукти. Ще Ви излезе по-евтино.
К: Ок, не искам да ми излиза чак толкова евтино. Все пак с експлоатацията на този продукт ще правим пари. Не може ли да сменим app server-а с IBM WebSphere, а базата с Oracle.
Р: Еми може, ама за какво Ви е. Толкова много системи си работят благополучно и с нашите предложения...
К: Така е, но Вие можете ли да поемете гаранции, че този DB сървър ще работи безотказно и е подходящ за нашите цели, а за app server-a?
Р: Не разбира се - да не съм го правил аз, но едва ли ще имате проблеми. Пак Ви казвам има много успешни проекти разработени с тези продукти и те са се доказали на практика.
К: А какво ще стане след 1-2 години когато решим да разширим системата? Гарантирате ли, че тези продукти все още ще се разработват и ще са съвместими с кода за старите версии?
Р: А аз да Ви приличам на врачка?
К: Е щом е така, ще си ги напазарим от там от където ще получим подобни гаранции и където ще ни осигурят навременна поддръжка при евентуални проблеми. Искам когато плащам за нещо да съм сигурен, че то ще функционира достатъчно дълго за да се изплати и да ми донесе подобаваща печалба. В противен случай ще ми изстине мястото в компанията. Така, че ще почакам малко повече за реализирането му.

Този диалог е само една гледна точка, твоят е друга... а има и още много...

И въобще Java, Python, PHP, ASP... има ли значение средството? Всички съвременни езици са на такова ниво, че повечето цели могат да бъдат постигнати с кой да е от тях. Професионалният програмист би трябвало да може да се съобразява с изискванията на клиента и неговите желания ако иска да си остане професионален. Иначе ще пише единствено за себе си и минава в графата - хобист.
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 17.12.2004, 17:00:00
@Phyz:
Много интересна абревеатура има в тея сертификати - SCMAD - сертфициран луд   (http://forum.argon.acad.bg/html/smile.gif)
Иначе майтапа на страна но в контекста на един твой предишен пост и този на emil не виждам кое е странното в това че Zope искат да популяризират Python и да го направят по-комерсиален. Нали в крайна сметка всичко опира до пари в един момент? На какво се крепят компании като Sun и Microsoft ако не на добър маркетинг и реклама? Факт е че повечето хора нямат доверие на софтуера с отворен код поради една или друга причина и предпочитат изпитани неща със затворен код (Oracle vs PostgreSQL примерено), но от друга страна се забелязва известно раздвижване - IBM и HP дадоха рамо на Linux при сървърите (едва ли е безкористно), Novell купиха SuSe (първата сделка за 1 милиард $ свързана със софтуер с отворен код), Oracle по едно време обявиха че Linux е предпочитана платформа за тях ... Ако нещата продължават така може би ще дойде момент когато на клиентите ще им е все тая, но пък ще се получи както и с всичко останало - ще си има сертификати и т.н. Ти спомена че ползваш RedHat - те са още един чудесен пример, както ти е известно Fedora е безплатна, но не и останалите продукти на RedHat, не знам дали си се интересувал но разните курсове и сертификати за RedHat са на безумни цени.
Аз май се отплеснах  (http://forum.argon.acad.bg/html/smile.gif)
Айде до скоро!

[This message has been edited by sasquatch (edited 17-12-2004).]
Титла: логическо и функционално програмиране
Публикувано от: Phyz в 17.12.2004, 18:24:00
Няма ли някой най-после да я пусне тая тема... че тука само offtopic и взеха да се пишат...
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 17.12.2004, 21:03:00
sasquatch : vsashnost fedora ne e na redhat samo se sponsorira ot redhat imashe golemi sporove i problemi zaradi taia fedora na cialata kompania ama v momenta se poluchava taka che comunityto ush poddarja fedora kato redhat gleda otgore kvo stava i si go opravq v EE servite.
perfektna politika mnogo po dobra ot starata im s redhat linux ili ot politikata na suse.
p.s. apak fedora v momenta si e ... male male.
Koito iska da puska onazi tema za sertifikatite as neznam kak stoqt neshtata taka che nemoga da q pusna shtoto ne sym "vehst v zanaqta" kakto se kazva as sam mlad i zelen  (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 17.12.2004, 21:08:00
Ами именно де Fedora остана безплатния (и спонсориран) вариант на RedHat.
Титла: логическо и функционално програмиране
Публикувано от: TeeRexX в 17.12.2004, 22:38:00
momci, ako vlezne pak da 4ete foruma doc. Stoianov pak 6te mu se vdigne nastroenieto  (http://forum.argon.acad.bg/html/smile.gif)
prosto ne moga da povqrvam, 4e ima inteligentni hora koito vse o6te sporqt "koi e nai-dobriq ezik za programirane". Vse edno da sporite koi e nai-dobriq doamkinski ured...
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 18.12.2004, 00:46:00
Ние не спорим кой е най-добрия език за програмиране, просто си говорим.
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 19.12.2004, 14:10:00
vsyshnost kakto beshe kazal edin chovek koito ne mu znam iemto i vodishe nqakvi uprajneniq po asembler : v kraina smetka sichko stiga do asembler  ili interpretator pisan na asembler taka che daite da si buchim na asembler za i386  (http://forum.argon.acad.bg/html/wink.gif)
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 19.12.2004, 17:34:00
Асемблер ли ? Не направо на машинен език ще програмираме  (http://forum.argon.acad.bg/html/smile.gif) (http://forum.argon.acad.bg/html/smile.gif) (http://forum.argon.acad.bg/html/smile.gif)
Титла: логическо и функционално програмиране
Публикувано от: JOKe в 19.12.2004, 21:11:00
sasquatch : mnogo iasno  (http://forum.argon.acad.bg/html/smile.gif) kato istinski muje :P haha
Титла: логическо и функционално програмиране
Публикувано от: Райчо Мукелов в 19.12.2004, 22:24:00
Мисля че се сещам кой ти е бил на упражненията по асемблер, вероятно е Кирчо - един такъв висок и слаб, леко е взел да оплешивява.