Недавно прочитал в "Компьютерном Обозрении" статью об этом языке (http://itc.ua/article.phtml?ID=26721).

Решил поэксперементировать. Итак, вычисление факториала от 5000 рекурсивным способом занимает меньше секунды.

Результат вычисления (извиняйте за столь большой результат, но согласитесь это впечетляет):

422857792660554352220106420023358440539078667462664674884978240218135

805270810820069089904787170638753708474665730068544587848606668381273

633721089377278763127939036305846216064390447898698223987192970889621

161265296832177550039924219683703146907264472878789790404754884162215

226671928410969236910449565971736352948400223840381120644820230857671

104502306174894755428309761781724040805324809927809328784055486199364

548291211876258248802189173977900050213212598043639244626460770511358

846595108675470585833924655225589035474435988347383178988034633008458

631510209091509935653820010933047965742556741930917055172805200236075

085991197635228755907902043369743123506916831211924495971556267407521

462198986233088625998302859864857578749445963115286970886710046268423

648178989905454690861391613218344174148807186234448114831209490361196

546872767755617886828720269104814092456410341835975604276458161513178

575901661071782544156980883359372729995603371371200471049437656291142

488605335299499642300699972204918120100819059439140675053265004775533

850899097945101551091486907004407119572336026243368132330218709287699

196806656569752790422258267841561083376425781032629202687211070274681

394351128601502326190649959171897364176378436491219709109840944514895

358959103804176941956657834822071749105512752639148381172052604826965

162642710094919393332661030104360530459117014557209584714353721948246

686793467375904872268133410207860903657108806376616249749507413107077

401682180585945526445171409277469230062697511346044174567946735828782

2616295842486751573791729427241787831054298582451175755118845065744248

2757466080023858837849239624736876150701576772589832112863229553704490

2516387925127590841791744640466913531047347984464996154595542013996317

3574763017400367961929199421907628954456562617670417995381611333873128

2351153415258130908791588363835166479722591294427065355714251173732380

7232632958121797916679692329687096923901003255574789055099807487061047

2306461959849552396576122086738665141716993075576918979026751573420758

6479634533844683508596549072732632191050406428971309622450516206466946

80988699171221274045040206849232662417601329102278666872703052847094525

26825496617772499645206699836925910690894082637401043498371591126455822

28060636139411534431677176993435366428492829443641476961588199366138825

55774877099370045947539078451490344345211745605940399162684446976618213

87470705325559577933196460996662145377564935474169708562389214773222865

50718249043001618614219276045230767062114296176727470412361610722000974

37586474927536651495321647808490751463300710166913134206628825626182838

65836983632108760710427516073348347788414796732427080410860761841281888

30711509898213533840661065214708704687476099542747367350945155359976904

03673533855510525716826503176824057439934148623923319814325791821933218

98940450865013610998098383993110996355981328001049731588596312131853801

20504678764291066936560043730563343198487904899852470129330078934453286

81566797628804955328463860201334802652798369463933849956750499937078147

46561543438930431384237878981847802886009971088695632988347711863122382

78596365311513237793137364739742936941149902875197222799954518261548829

89511519266821124513553184722099904353559498872999220350620398160110863

76236539782172380237846650673624510635034423187315338308212043804710999

41922782103974755271741604389016972396130554937184483611980356589606202

50090936643993601720073836133544050943290724765189095025077246758419894

12224659392163116352038147362479528539732089309533421910635702805576629

72015655651076778080593345363112182956179288767300280245093212277885296

84182082617784769556449803856912757873726780409591587117339711031652326

78060798127609246173504120182666874262805385275843979167609007743380748

42075118511910292196033937628098675366508521286925532153678793252188257

41018661370543289737358627253701785588066398513503869440396049282588201

80419178073649693885802597758398892014389747165465973510852605706234402

06963706566012953573404358296147342727580563083951066737534925965951857

56469397232182757800032505938953038205396975588705115430739208274224405

162997087395997684612062466290981123680125798912848025050940289169597650

793954371913113793144274051355996303756422145272943417972461875979640742

391478389935415658347161568584990367730566113538333670875489004130919816

763307490415103375973072468858392469417155482957307506185058815819595289

92660225626903439573313450666972952115230668696227920947779974336574472

67347140892807141128388808269337737807729310411076751363947620061085804

05960196390580157610023374638693522283858014349571781255814458629300424

79404065736859862007914604590255413929950088044710384758990326548097338

16694050008545272371357139490246382030866854180283831752766806427848956

10057558599917189667864491540635700144971942498789208597312542755675145

75206399118150736397483102490793841725653421894276769116598153430084637

08776951029541513655173467505401523970604257174600108996844049884598547

79779050316325684891565572310064997264987214808001817703577015029830088

79487243887718884416833034708723239505377642232944095773219137582371673

92470421672300225688313577923039468890066246618253265849072440676702493

95796972174674855629981831496656117439976804820941662574638796603051712

74925119226367615337524381656217330771650129520988754856467131862602387

61996433486796151440832890206108283318089122132585368285646991600795210

51669604516954306142123057430068772174071554732179575770175959676405638

12729153867513698712395570542350999228605975469962186195531354132139126

43667690046542999681168055073786677066598802706297250200188284588614534

43687714553613044144656133690928627482769819468364805509529686817587148

59972973082332924094777085275279923304892719633314751563311192746150389

21929061678060790138345113706630068437626719988551514368126613731991210

32354697867564212106248990055535640229243458312642310383634167817199083

54140411717740185950606674198348143345444247191436828225654380047860390

57592241707180267064687545421162695874679539854078446465414038175114996

52736211235408801669902801490332251394608326681709307138688265499773742

86127789417784752681328371818759103642140881783220739808059714203285309

72144304184545918300283340870578313828497328376128618292713674516189736

62072373961327909449840141544083040744053930675407671261825475971308434

70311389815695365971788564022750674237400323621850094765267521941901241

38747827988342647087361681248538444401277252105007227931585309627912113

11601677720779525726138002406844218854535371213419022363796840123852552

88607189967725694227433323948595075570839061877450159652184414998155476

10754800805419231843694819173263143060354839979078330726763672909098077

28273558543480322600674725370977854645677611818073674243673917698637580

72145859791485033700592994963793369100283444558089838054017635403737133

01931129308095828761210738037480066026976784288835826573748655678586882

20151430462496559957603797686853181923658064691995840718454936069221697

76137542662239658644989770921478134709127917460871630220821981434654245

06573126268308957903101289336078864410723018480540037313601421622915914

69920198841482900144143128009031021078333050902384357267794161772468734

11503598700003151092815700331081727415624680432977205070450456683898626

30170298930114536447741685673251233037647788174903605257260552068437061

61165397551325413693038677832672082273236642492064323630892687688266509

39691861683271739757479552993242406186992420363781929485368098035256331

09244821526927621911625914588639367703465348036788712613336711696822645

09149970554485212597518700847200256746587524039320610459030700394382520

19383102480929019684602472171298321628237994627125366359971898374425099

12067368838373829965389203066284307454755907423534527402921160609134632

76847495220460104095756073481551016772031875800892244947529220310938416

61588823584993931745149914395557357641584185479831702428523965451087525

42546477729459523036094641654199779794713680634491599877240917644313737

11785422107405721211668686921532404900803842059211926228754408982614789

08123698956367080804687628524499897440855677969456909042340530355943524

64075167787395311392869861434722757214494689189609329437547674123490779

27543383494123230600787676100899491561269340389211483702171933876178233

70358925817112869563450001367619897145400986643461922197676975930010555

22519891300212302178083193433088044659295455216591185593920257978112295

20653573629144784049464745650031154980720565803606673808895727464643754

28055819322299305089287806874537401327100274428317925355003451536693172

11208822760394280978864572730697997128564957693435400403072844058174664

83766584980399589642433701834541517202853378109041131244624329033539642

96651109482836884580127588701293156099225044518125460113274986014470437

75731388100131927612467611661483352893555750310601844978899437827461385

46517082416131676814639118700008128451443414067399854300727723037581116

13511094355614896323929750846383152930263582535361784837558519666949972

25193551595380720783861514213028445005179523976096843319829259892162322

35823963902625488568558754581983715590084478600867459457091181287932282

22051767509371866110013193625845223493949829511199280837860523506412769

33754813060959426446342507760114733420913912854162818317226214378306296

24081493919971875281063673488766784816023427432300271581924041876865458

26519361990687336892886715133840245486110982482004482721799496658712257

17442904491678119482416563156030347383331766512121805278079595822029833

06119451640194133155503796629802153576807311245305859159697099739880557

43550083279071844959752353594644354789680372126344509423070253995102864

45823745467776101355691621230975228615205321399874567303412767650336963

66823066655520515624911325289261558638685031008491809205076806582659152

76163719928694258350604859732273949286080260640627521341007801815105623

78792621203942478183343943387720639580111580908419079432019517823574019

05465959902896177117761952703540511937272297222484420804400987503694112

77686593022133010625031862085145076421052980508837197986052557750303949

60615844283884686613751096844156730983807939434957001302926517795712062

55558519513135740298975892834755253344098589114006944493084328740050155

54332587793895080241128538758725945136400838324944471346436826148195406

00411484587023407292669774063132587863479066769826618150125611769227571

52912491648217023728844163576009968511009394114446776281860070722785223

14941048564396255796808221289935799262208553889221164765220850367706476

49149613378935376153739156917782223774483761412025334262250800730051347

34227714273331063459718032402442269504580905393266891036193819988388440

36231795282435495362489670734155948067688515321073064476077859628627852

28365724456430644909627751717265695423839294195840952725328165957253453

14283896298940058865394868241171139296273569389734829358546502786894370

14798383826002058208853517073216288725214522205265969614962147884840129

00450773725242460507433966081818296029601919631412499853842201769511036

13805617010163577435425311486693699941309409083682200719364351119785927

82493491477052187226546109199597269439152400467901173602521030051886080

33708484011481024635128826398617008180488838075020352144834874084915471

87144788578095745154995050050707894288428884100278777774559811323199406

24176532148686316581736774410084063436959989519288310869124517866342559

35345824258941139051646944037756266582157784593682990967975454835051047

36337708391510338546396027534864016352046338843423467149356414291608568

46724874244782055113759168236472297793612971080302530934478115527737540

45896899035480805830938126732359356309854656437620938537105280834460718

90760033887816180198532737594985669167047034484383635034163683252664032

24174519476678140428319327482851882140344319384445475456765253419659194

33213258543227007075903856523966822717130000918912205084518526151462793

77175975288529786379317112125295294433237579100729090017035587637986124

80281463093944391916950129336315045285163539312868586427437296109446101

23560487743986329961189975596599660874904927116768526867533599129758320

90895532964095236401160600784950053778927837501473441221237779077271341

46647404489837589487675423294546899354220341669961366698976529978580795

89905586405038850708313733307683976688246368099235521972724183173512764

61891123804858831155694778881017597089776821496443403179244430851703036

92214137621194388641989508360339306459037361842937028710758321966607546

11376107636254392861431624289075402108223362001230938473731222037426903

38385799286785729394341682870537633740919381846322611317409342781179188

91642447513543478446040549455379834556163353815868441692054518698919434

17538666390033575676560326436376790672162662033087842554515720811724638

12515126698466858872090131448616325604610195133718145852499881766299251

42145014710206193190373671380347663431029705222414785030188275106347446

24125870793733908509575772431673506688509420876153616444044375586016062

58370913005741620652736709418886679645705507447247141370019681652159543

80698515999483361357521322106131884771926641942395351412233546746461491

74301347586603733817653260455740292547227936028892618938589969565687678

30171868739887638876259727439760628132634466476794136797261849333950746

65820441677989806604203937116666336696282569349097348391155869004856032

51221924153426852236931603676549104770273352154014316833887296840544329

69676840360731824353362248654338235981235441675146083407811666618587817

33980624199254577853462678039039937557802759942957205281043775666979396

83810934111895947576622019121753509363898546528307869237066251232368439

02355876362283246571611837140788076611621795178879728018415720196390844

00269037450381192797170314489871815031319992111563908303017288012610642

06200535924027827739391802639171772013612598477693398064706376302260888

53599375950790887890817918021957680333819686051204871076108748984115687

40159953020639098138993261095538868264084012160831040525974539251576403

73288908673694836640473462270856004089161078222194340517979455015534768

29668553200975019055814199145911241815010622556274112315713773586971943

74130822027383843815940638571387913337592362330440453487233047240668784

13333304789899525522146884797381356808399564453300522255132015526776889

54127703292786708274900411720766631127836381523435476816631211890868649

91380236281775275946061211813342054791801619220346912760381900528012343

97359827046149981451132461819565852823204465827008206493468025155651127

28220838115631922565099452012226666032260593962470197076685803962869755

51115189973049085051758765306785758000660424066894170620303846785860257

37063435259958688508867965400446518779020894293515321731675011373803146

60346424294890763222281337632999196413365020286272892680875600366137706

07463575515079087982099722660130472907825746908175451952405573791313113

17061732319159867397158837310816891696865770415069551294765238613481576

69675803647620052890602227445317443054984028630488508695577615286503260

80941160688570698894762046478500884303973107412774191961697450517110329

08281520127388866342263149214709022001694063650481204703601673860229067

16298164111982022686079613247395500575675645682047546190404230110623713

67395995678940884705976859514505017241517746017351430990972615509378334

72000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

17 Комментариев на “Erlang - язык серёзных технологий”

  1. GLad сказал:

    :)

    в принципе, не показатель, ибо быстрее, чем на асме не будет. Попытался на пых-пыхе посчитать - тоже быстро, правда ограничение на bcmath функции не позволили вычислить больше 1493!

  2. Rayan сказал:

    где в реальном мире это применить?

  3. GLad сказал:

    Почитал немного про ерланг. В реальном мире - например при паралельных вычислениях. Ерланг, сука, умный, может сам разбросать функции по процессорам, дабы не утруждать программиста рутинной работой. Ерланг, сука, функциональный язык с будущим :)

  4. CTAH сказал:

    2Rayan: почитай статью, много где используется, один из немногих академических языков, который используется в коммерческих проектах

  5. CTAH сказал:

    2GLad: напиши на асме, и что бы время выполнения было меньше секунды -- Саня, пора уходить от стереотипов Салапатова :-)

  6. zeroreturn сказал:

    Очень перспективный язык, как и функциональный подход в целом. Для написания веб-серверов подходит идеально, бизнес-логики, серверов приложений, вобщем достойная замена .NET и JEE ;)

  7. zeroreturn сказал:

    компилятор на 20-ти срочках кода на lisp ;)
    http://programming.reddit.com/info/jnm0/comments

  8. seagull сказал:

    Действительно интересный язык. Особенно тем, что уж очень похож на Prolog, а значит и переход на него безболезненный. Но... у него есть огромный недостаток, который повторяет недостаток Явы - принципиально возможна лишь байт-компиляция. Следовательно о нормальном распространении ПО (если это не embedded и если ErlangVM не станет такой же популярной как JavaVM).

    Для тех, кто хочет использовать функциональное программирование в своих реальных проектах рекомендую GHC (одна из реализаций Haskell).

  9. GLad сказал:

    это не недостаток. У языка свои преимущества, и своя область применения. На чистом ерланге писать софт изврат, имхо.

  10. Руслан Пилин сказал:

    Странно, но сан считает компиляцию в байт-код ПРЕИМУЩЕСТВОМ Ява. И вообще общая тенденция рынка имхо именно в сторону виртуальных машин.

  11. Руслан Пилин сказал:

    "Но самое поразительное то, что в Erlang вообще нет никаких ограничений ни на длину целых чисел, ни на глубину рекурсивных функций!"

    Может я ваще отстал от жизни, но как можно реализовать рекурсию без стека? (Кроме, конечно, совсем тривиальных вариантов вроде факториала)

    Слышал много хороших отзывов о функциональных языках. Сам к сожалению не пробовал, следовательно не могу спорить о "вкусе устриц", да и не буду. Интересна точка зрения автора статьи.

    Теперь мое скромное мнение о будущем ЯП. Я разделяю мнение Раскина, что в первую очередь ЯП должен быть человекоориентированным (а не потому, что так проще реализовать). Для меня человекоориентированность - это:

    1. Минимальное количество левых значков: запятых и всевозможных скобочек.
    (Согласитесь современные ЯП С++, Ява, ПХП по этому критерию обходят функциональные. Думаю, поэтому они и выиграли. На них удобнее программировать)

    2. Минимальное количество ключевых. (в идеале 0, ну или хотя бы 1, как в Self)

    3. Возможность назвать один и тот же объект разными словами, как мы этоделаем в естественном языке.

    (в общем должен быть очень похож на естественный язык, например Русский)

    Имхо, будушие все-таки за ОО-парадигмой. Но ОО не, как Ява, С++, До диез, а ближе к Ruby и SmallTalk. И очень близко к функциональным ЯП. Например, многие мне не поверят, но использовать перемменную больше одного раза (как функциональных), в ООП - антипатерн. Еще антипатенрны - if, for, switch, null. Реально ли их исключить из Java, PHP, C#, C++? Имхо нет. А вот из Ruby похоже можно. SmallTalk к сожалению не пробовал.

  12. seagull сказал:

    >Странно, но сан считает компиляцию в байт-код
    >ПРЕИМУЩЕСТВОМ Ява.
    А майкрософт считает Windows САМОЙ БЕЗОПАСНОЙ серверной ОС :)))
    Руслан, не все то правда, что маркетинговый ход.

    >Может я ваще отстал от жизни, но как можно реализовать
    >рекурсию без стека?
    Используется софтварный динамический стек.

  13. Руслан Пилин сказал:

    >>Странно, но сан считает компиляцию в байт-код
    >>ПРЕИМУЩЕСТВОМ Ява.
    >А майкрософт считает Windows САМОЙ БЕЗОПАСНОЙ серверной >ОС :) ))
    >Руслан, не все то правда, что маркетинговый ход.

    Сан, и не только он это обосновывает. Многие приимущества(переносимость, секьюрити, передача кода по сети и т.п.) Ява являються следствием компиляции в байткод. Я думал, что динамически стек уже везде используется и давно не считается чем-то новым, крутым и революционным.

  14. hlt сказал:

    Чес говоря, еще не встречал ни одного языка, к которому не нужно костылей ;-) - вопрос, конечно, в нужде и в экономической целесообразности. Я бы, чесно говоря, желал увидеть универсальный язык - "все в одном" - и с движком логического программирования, и функционалным, структурным, ООП подходами... - реально же сейчас нет ни одного языка, который без дополнительных средств на уровне языковой семантики позволял бы это. :(

  15. Руслан Пилин сказал:

    Каждый язык имеет свое предназначение. Взять хотя бы SQL, писать на нем запросы достаточно удобно. Причем ни Ява, ни ПХП, ни Си/Си++ его используют. Так же хмл и хтмл. Скорее всего будет просто какой-то универсальный синтаксис, который позволит встраивать в себя различные вспомогательные языки. Думаю гибридный язык в результате будет достаточно сложно применить к чему-то конкретному.

  16. hlt сказал:

    Ну вот мы с тобой общаемся, кажется, на Русском.. - человеческий язык, - применим ко всему, как видишь, причем довольно просто. Только компьютерной реализации нет ;) - пусть это сложно, но я думаю, очень даже реализуемо в некотором приближении, - пусть даже в варианте транслятора сверхвысокоуровневых семантических конструкций в реальный код современных языков, скажем C++, Java тот же SQL например.
    Считаю, что !современный! язык должен умещать в себе технологии взаимодействия с современными IT системами, и если в нем на !языковом! уровне чего-то нет - значит это фиговый язык.
    ps. Повторюсь, это все мое ИМХО.

  17. Руслан Пилин сказал:

    Тут вот какая проблема, чем больше на языковом уровне вещей поддерживаеться, тем сложнее язык, сложнее компилятор (читай дороже). Больше ентропия, больше багов. Язык должен быть максимально простым, но таким, что б на нем можно было разрабатывать. Простой язык = простой компилятор, меньше ошибок. (дешевле) В общем я где-то уже об этом писал.)





Оставте свое мнение