Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Garantie apartament dezvoltator

Aplicație GPS cu zoom automa...

Ipad Pro & Air 2024

Service si revizii reprezentanta
 Ati returnat produse pe aliexpres...

Certificate de nastere digitale

Fitbit sau huawei band ?

Tatuator handpoke
 Plaja de nudisti in Grecia?

Mufa microusb a telefonului mobil...

"Ciudatenii" control pasa...

Impamantare
 Apple maps pe Windows 10

Sfarsitul woke-ismului si al core...

Probleme fibra (internet ) rooter...

Renovare completa + pompa de cald...
 

Razboaie teoretice

- - - - -
  • Please log in to reply
43 replies to this topic

#1
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

 OriginalCopy, on 22 noiembrie 2014 - 08:54, said:

Toate sunt la fel de grele daca nu ai inclinatie naturala, si usoare daca o ai.

Unele par mai grele pentru un incepator, dar il obliga pe invatacel sa fie mai atent la detalii din start.
Eu nu m-as grabi la astfel de concluzii, desi partial ai dreptate (cel putin in cazul limbajelor populare).

Insa, mereu m-a amuzat sa vad cum se screm in fel si chip, sa explice adeptii limbajelor functionale (ca de ex. haskell) concepte precum "monada". La fel de caraghioase sunt si scuzele de fel si fel cand nu pot face diverse chestii care sunt relativ banale in majoritatea limbajelor, desi ei insista cu incapatanare ca limbajele "lor" (functionale) sunt si ele "de uz general".

#2
wirespot

wirespot

    Senior Member

  • Grup: Senior Members
  • Posts: 6,654
  • Înscris: 23.09.2002

 MrReason, on 24 noiembrie 2014 - 17:56, said:

Insa, mereu m-a amuzat sa vad cum se screm in fel si chip, sa explice adeptii limbajelor functionale (ca de ex. haskell) concepte precum "monada". La fel de caraghioase sunt si scuzele de fel si fel cand nu pot face diverse chestii care sunt relativ banale in majoritatea limbajelor, desi ei insista cu incapatanare ca limbajele "lor" (functionale) sunt si ele "de uz general".

Un alt strigăt de ajutor, mă grăbesc să-i răspund. Printre principalele atuuri ale limbajelor pur funcţionale:
  • Subliniază dualitatea dintre cod şi date: orice bucată de cod poate fi privit ca date şi orice bucată de date poate fi privită drept cod.
  • Cod cu zero efecte secundare. Beneficiile vor fi imediat evidente celor familiarizaţi cu conceptele unit testing.
  • Limbajul se poate auto-redefini integral, din mers. Inclusiv orice operator sau language construct (cele built-in sunt doar orientative). Se pot crea astfel mini-limbaje ultra specializate pentru rezolvarea unei probleme anume.
  • Se mulează perfect pe concepte matematice care se învaţă la liceu (funcţii şi domenii de valori).

Nu mi-e foarte clar ce înseamnă pentru tine "uz general". Orice limbaj are anumite scopuri şi lucruri la care e mai adecvat decât la altele. Unealta potrivită pentru sarcina potrivită.

#3
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

 wirespot, on 24 noiembrie 2014 - 18:41, said:

Un alt strigăt de ajutor, mă grăbesc să-i răspund. Printre principalele atuuri ale limbajelor pur funcţionale:
  • Subliniază dualitatea dintre cod şi date: orice bucată de cod poate fi privit ca date şi orice bucată de date poate fi privită drept cod.
  • Cod cu zero efecte secundare. Beneficiile vor fi imediat evidente celor familiarizaţi cu conceptele unit testing.
  • Limbajul se poate auto-redefini integral, din mers. Inclusiv orice operator sau language construct (cele built-in sunt doar orientative). Se pot crea astfel mini-limbaje ultra specializate pentru rezolvarea unei probleme anume.
  • Se mulează perfect pe concepte matematice care se învaţă la liceu (funcţii şi domenii de valori)
Tu crezi ca nu am mai citit non-argumente din astea? Nu doar ca am citit, dar sunt foarte plictisit de ele.

Majoritatea "atuurilor" nu prea sunt atuuri si/sau nu sunt caracteristice exclusive limbajelor asa zis functionale.

Eu vorbeam de monade, pe care ar trebui sa le poti explica daca tot te pretinzi un cunoscator al limbajelor functionale pure (unde haskell e cel mai cunoscut membru de departe)

Si mai vorbeam de aplicatii reale.

 wirespot, on 24 noiembrie 2014 - 18:41, said:

Nu mi-e foarte clar ce înseamnă pentru tine "uz general". Orice limbaj are anumite scopuri şi lucruri la care e mai adecvat decât la altele. Unealta potrivită pentru sarcina potrivită.
De "uz general" inseamna ca are o gama larga de utilizare: ca vrei sa faci o interfata care sa manipuleze o baza de date, ca vrei sa faci un editor foto, ca vrei sa faci un simulator grafic, ca vrei sa scrii un server, ca vrei sa faci un joc grafic, ca vrei sa scrii un database engine, etc. Adica se preteaza la majoritatea taskurilor din programare, chiar daca nu perfect in fiecare categorie.

#4
wirespot

wirespot

    Senior Member

  • Grup: Senior Members
  • Posts: 6,654
  • Înscris: 23.09.2002

 MrReason, on 24 noiembrie 2014 - 19:29, said:

Adica se preteaza la majoritatea taskurilor din programare, chiar daca nu perfect in fiecare categorie.

Nu vei găsi niciodată un limbaj pe care să-l poţi folosi la orice.

MrReason said:

Si mai vorbeam de aplicatii reale.

ITA Software are un produs folosit de multe companii aeriene şi companii de rezervări aeriene, care foloseşte Lisp. Câteva detalii. Au fost cumpăraţi de Google în 2011 pentru 700 milioane USD, cash.

"Jane Street is a proprietary trading firm that is the world's largest industrial user of Caml and OCaml [...] Caml code handles about US$20 billion of trades every business day at Jane Street." Sursa.

Tim Sweeney (Epic Games, Unreal Engine) a demonstrat cu cifre (PDF în comentarii) că viitorul limbajelor de programare pentru jocuri va trebui să fie o combinaţie de imperative şi functional, pentru că anumite lucruri pe care le face un game engine sunt 90% adecvate pentru FP.

@danzi23: Dacă eşti curios despre functional programming, The Nature of Lisp este o introducere foarte accesibilă, care adresează exact plângerile lui MrReason. (Din păcate el ori n-o înţelege, ori refuză s-o citească, nu mi-e clar care din două.)

#5
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Interesanta "demonstratia" aia. Apropo, suntem in 2014, unde mi-e procesorul cu 20+ nuclee? Posted Image
La prezentari dintr-astea ma intreb de fiecare data: omul ala ce are de vandut? In cazul de fata, ideea (deja rasuflata) ca limbajele functionale a la Haskell "rulz". Dar mie ideea ca C++ (de exemplu) este prea "periculos" si-ar trebui inlocuit cu alte Haskell (sau un derivat) imi pare la fel de logica precum cea ca SRB-ul ar trebui sa renunte la combustibilul solid, care prezinta pericol de explozie, si sa treaca la o substanta inerta. Intr-adevar, este mult mai sigur - dar nu ajungi nicaieri ;)

#6
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

 wirespot, on 24 noiembrie 2014 - 22:12, said:

Nu vei găsi niciodată un limbaj pe care să-l poţi folosi la orice.
Unde am zis eu "la orice"? Am zis la mai multe, suficient de variat si sa existe niste aplicatii reale populare.

 wirespot, on 24 noiembrie 2014 - 22:12, said:

ITA Software are un produs folosit de multe companii aeriene şi companii de rezervări aeriene, care foloseşte Lisp. Câteva detalii. Au fost cumpăraţi de Google în 2011 pentru 700 milioane USD, cash.
Cred ca te-ai pierdut printre detaliile care te interesau pe tine si ti-au scapat altele:

Date: Fri, 12 Jan 2001 15:42:34 -0500

Our web site page generation code is also largely written in Common Lisp, though there's also fair bit of Java there.

4. Because we have about 2 gigs of static data we need rapid access to, we use C++ code to memory-map huge files containing pointerless C structs (of flights, fares, etc),

11. Occasionally we've had to move code from Lisp to C++, usually because of data loading issues (Lisp garbage collectors just can't deal with gigs of data, and there's no way to rapidly load gigs of data into a Lisp).

Date: Tue, 15 Jan 2002 17:49:04 -0800
From: Carl de Marcken
Paul,
I don't have any problems with it going up on a site, but please make a note that this message is old and the world is constantly changing

Asta acu' 13 ani. Intre timp, a ajuns pe mana lui google, care are o anumita retinere pt. cam tot ce nu e C/C++/Java/Python/Go

 wirespot, on 24 noiembrie 2014 - 22:12, said:

"Jane Street is a proprietary trading firm that is the world's largest industrial user of Caml and OCaml [...] Caml code handles about US$20 billion of trades every business day at Jane Street." Sursa.
Frectie.

 wirespot, on 24 noiembrie 2014 - 22:12, said:

Tim Sweeney (Epic Games, Unreal Engine) a demonstrat cu cifre (PDF în comentarii) că viitorul limbajelor de programare pentru jocuri va trebui să fie o combinaţie de imperative şi functional, pentru că anumite lucruri pe care le face un game engine sunt 90% adecvate pentru FP.
Ce-a demonstrat nene? Ala e un articol din 2006. Azi suntem la finele lui 2014. Cine dracu foloseste limbaje functionale in programarea de jocuri?

 wirespot, on 24 noiembrie 2014 - 22:12, said:

The Nature of Lisp este o introducere foarte accesibilă, care adresează exact plângerile lui MrReason. (Din păcate el ori n-o înţelege, ori refuză s-o citească, nu mi-e clar care din două.)
Sunt familiarizat cu subiectul si plictisit sa ma contrazic cu personaje in genul celor care frecventeaza lambda the ultimate, news ycombinator, & crap.

Argumentele sunt pe langa, speculatii teoretice si exemple obscure, specializate, irelevante. Realitatea verificabila ii contrazice pe toate fronturile posibile. Lisp-ul cred ca e unul dintre exemplele cele mai naspa pe care le puteai aduce.

Arata-mi un echivalent la o combinatie din urmatoarele(ia 3-4 bucati la alegere) scrise intr-un limbaj functional: GIMP, MySQL, Hadoop, Chrome/Firefox/IE, Blender, LibreOffice, Eclipse/Netbeans, Unity/Corona, ... ma rog, ceva pe aici. N-am pus chestii masive sau complicate gen oracle database, Photoshop sau mai stiu eu ... ca sa nu exagerez. Posted Image

Edited by MrReason, 24 November 2014 - 23:35.


#7
m3th0dman

m3th0dman

    Senior Member

  • Grup: Senior Members
  • Posts: 9,269
  • Înscris: 03.01.2007

 wirespot, on 24 noiembrie 2014 - 18:41, said:

1. Subliniază dualitatea dintre cod şi date: orice bucată de cod poate fi privit ca date şi orice bucată de date poate fi privită drept cod.
2. Cod cu zero efecte secundare. Beneficiile vor fi imediat evidente celor familiarizaţi cu conceptele unit testing.
3. Limbajul se poate auto-redefini integral, din mers. Inclusiv orice operator sau language construct (cele built-in sunt doar orientative). Se pot crea astfel mini-limbaje ultra specializate pentru rezolvarea unei probleme anume.
4. Se mulează perfect pe concepte matematice care se învaţă la liceu (funcţii şi domenii de valori).
1. Şi arhitectura von Neumann subliniază dualitatea dintre code şi date şi nu are nimic de-a face cu programarea funcţională; ba din contră modelul e  imperativ.
2. N-ai cum să ai 0 efecte secundare într-o aplicaţie reală; de exemplu ai persistenţă sau funcţie care-ţi returneaza timpul curent. Principalele beneficii sunt legate de concurrency.
3. Metaprogramming e un concept diferit de programarea funcţională. Cât despre DSL, Groovy e un limbaj cât se poate de bun pentru aşa ceva (cât şi pentru metaprogramming) şi nu e un limbaj funcţional, deşi are elemente funcţionale.
4. Eu în liceu am învăţat derivate şi integrale; şi după cum am spus la punctul 2 nu ai cum avea orice funcţie idempotentă (să fie ca şi o funcţie matematică). Cât despre domeniile de valori asta are legătură cu type system nu cu programarea funcţională.

Nu susţin că programarea funcţională n-ar fi utilă; doar că utilitatea ei se aplică doar în unele domenii deşi unele concepte bune au devenit universale mai în toate limbajele (de exemplu closures).

 MrReason, on 24 noiembrie 2014 - 19:29, said:

Si mai vorbeam de aplicatii reale.
Există o grămadă de aplicaţii reale; chiar proiectul în care lucrez are o platformă scrisă într-un limbaj funcţional. Exemplu concret e WhatsApp, pe care Facebook a plătit aproape 20 mld $ sau infrastructura de la Ericsson.

 TS030, on 24 noiembrie 2014 - 23:11, said:

Interesanta "demonstratia" aia. Apropo, suntem in 2014, unde mi-e procesorul cu 20+ nuclee?
Pe placa video.

 MrReason, on 24 noiembrie 2014 - 23:33, said:

Cine dracu foloseste limbaje functionale in programarea de jocuri?
Cei care fac cel mai vândut joc din lume; bine jocul în sine e în C/C++ dar serverul pentru multiplayer e într-un limbaj funcţional.
http://www.erlang-fa...sonShooters.pdf

Avantajul mare la Erlang nu e neaparat faptul că e funcţional ci faptul că e reliable şi are un model mult mai safe pentru concurrency cea ce-l face foarte scalabil.

Edited by m3th0dman, 24 November 2014 - 23:50.


#8
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
m3th0dman:
In slide era vorba de CPU, nu-i deloc acelasi lucru. Omul nostru a fost mult prea optimist, sau poate a fost nevoit sa faca asemenea prognoze pentru a-si sustine punctul de vedere.
In industrie, limbajele functionale continua sa reprezinte un segment de nisa, iar cele clasice evolueaza. Cum ai spus si tu, vedem nu mult-trambitatul mars victorios al limbajelor functionale, ci mai degraba preluarea unor concepte. Clojures in C++, cine-ar fi crezut... lumea se transforma, si noi trebuie sa tinem pasul.

Edited by TS030, 25 November 2014 - 00:00.


#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,255
  • Înscris: 24.02.2007

Quote

Homebrew C++ server
– Single threaded
– Dispatch requests into sub processes per service
– Application logic was in C++ and used Mysql

No offence, dar cand pleaca de la cea mai proasta solutie posibila, nu ma mira ca ridica in slavi orice alternativa.

Quote

– C++ is the wrong language for concurrency
– Code was becoming impossible to maintain

Sunt de parere ca azi, cel putin, daca stii ce faci, scrii cod atat bine mentenabil, cat si adaptat pentru concurrency, in c++.

Edited by dani.user, 25 November 2014 - 00:08.


#10
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

 m3th0dman, on 24 noiembrie 2014 - 23:40, said:

Există o grămadă de aplicaţii reale; chiar proiectul în care lucrez are o platformă scrisă într-un limbaj funcţional. Exemplu concret e WhatsApp, pe care Facebook a plătit aproape 20 mld $ sau infrastructura de la Ericsson.
Nu exista o gramada deloc. Astea sunt chestii rare si de nisa. E de notorietate folosirea lui Erlang in telecom ... insa si Ericsson si-a schimbat mult cod cu c++. Si facebook l-a folosit la chat dar l-a abandonat.

 m3th0dman, on 24 noiembrie 2014 - 23:40, said:

Cei care fac cel mai vândut joc din lume; bine jocul în sine e în C/C++ dar serverul pentru multiplayer e într-un limbaj funcţional.
http://www.erlang-fa...sonShooters.pdf
Avantajul mare la Erlang nu e neaparat faptul că e funcţional ci faptul că e reliable şi are un model mult mai safe pentru concurrency cea ce-l face foarte scalabil.
Nu stiu, Poate(sau poate nu). Dar nu se preteaza la cod mare si divers iar capabilitatile sunt foarte limitate.

Edited by MrReason, 25 November 2014 - 00:10.


#11
danzi23

danzi23

    Senior Member

  • Grup: Senior Members
  • Posts: 6,072
  • Înscris: 14.08.2013

Quote

@danzi23: Dacă eşti curios despre functional programming, The Nature of Lisp este o introducere foarte accesibilă, care adresează exact plângerile lui MrReason. (Din păcate el ori n-o înţelege, ori refuză s-o citească, nu mi-e clar care din două.)

Multumesc pentru sugestie :) Dar nu cred ca o sa ma apuc de invatat lisp, are o sintaxa ciudata/urata. In schimb m-ar tenta sa invat conceptele programarii functionale folosind Scala https://www.coursera.../course/progfun

#12
wirespot

wirespot

    Senior Member

  • Grup: Senior Members
  • Posts: 6,654
  • Înscris: 23.09.2002
Nu pentru invatat Lisp ci pentru a invata conceptele functionale. Asta te va ajuta indiferent ce limbaje vei folosi.

#13
m3th0dman

m3th0dman

    Senior Member

  • Grup: Senior Members
  • Posts: 9,269
  • Înscris: 03.01.2007

 TS030, on 24 noiembrie 2014 - 23:59, said:

In industrie, limbajele functionale continua sa reprezinte un segment de nisa, iar cele clasice evolueaza. Cum ai spus si tu, vedem nu mult-trambitatul mars victorios al limbajelor functionale, ci mai degraba preluarea unor concepte.
Clojures in C++, cine-ar fi crezut... lumea se transforma, si noi trebuie sa tinem pasul.
De acord; la proiecte mari, OOP aplicat cum trebuie e superior.
Sunt curios dacă vor apărea vreodată în C deși nu prea cred că-și au rostul acolo... (se numesc closures; Clojure e limbaj de programare).

 MrReason, on 25 noiembrie 2014 - 00:05, said:

Nu exista o gramada deloc. Astea sunt chestii rare si de nisa. E de notorietate folosirea lui Erlang in telecom ... insa si Ericsson si-a schimbat mult cod cu c++. Si facebook l-a folosit la chat dar l-a abandonat.

Nu stiu, Poate(sau poate nu). Dar nu se preteaza la cod mare si divers iar capabilitatile sunt foarte limitate.
Facebook l-a abandonat fiindcă n-a găsit destui programatori buni, nu pentru că limbajul nu e bun.

Cât despre proiecte mari - complet de acord; OOP e net superior.

#14
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

 m3th0dman, on 25 noiembrie 2014 - 20:51, said:

Facebook l-a abandonat fiindcă n-a găsit destui programatori buni, nu pentru că limbajul nu e bun.
Iar faptul ca facebook (care nu-i chiar firma de apartament) nu a gasit porgramatori "buni", nu spune nimic despre "calitatile" limbajului? :rolleyes:

#15
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

 m3th0dman, on 25 noiembrie 2014 - 20:51, said:

De acord; la proiecte mari, OOP aplicat cum trebuie e superior.
Sunt curios dacă vor apărea vreodată în C deşi nu prea cred că-şi au rostul acolo... (se numesc closures; Clojure e limbaj de programare).
Corect, la 23:59 insa s-au cam amestecat lucrurile, mai ales ca se vorbea de Lisp :) - plus ca interesul meu in ale programarii functionale este pur academic, deci nu mi-am format reflexul de a tasta mereu corect termenii astia, fara proofreading. Posted Image
Apropo de interes academic, nu am studiat asa ceva in facultate, si e pacat; lucru pe care l-am realizat mai tarziu. Consider ca orice programator care se respecta trebuie sa urmeze vreun curs-doua de limbaje functionale, chiar daca nu exista nici o perspectiva de a le folosi in productie (si cu atat mai mult daca exista aceasta perspectiva!). Curiozitatea constanta este o calitate de nepretuit.

Closures in C - sunt convins ca n-o sa vedem, ce rost ar avea? Pentru evolutii majore exista C++, si partea frumoasa e ca poti folosi exact ce vrei din C++, chiar ca un "C with closures". Din acest punct de vedere, deja avem chestia asta.

#16
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

 TS030, on 25 noiembrie 2014 - 23:34, said:

si e pacat; lucru pe care l-am realizat mai tarziu. Consider ca orice programator care se respecta trebuie sa urmeze vreun curs-doua de limbaje functionale, chiar daca nu exista nici o perspectiva de a le folosi in productie (si cu atat mai mult daca exista aceasta perspectiva!). Curiozitatea constanta este o calitate de nepretuit.
Dar de ce consideri asta? Doar de dragul curiozitatii ca si "calitate de nepretuit"?

 TS030, on 25 noiembrie 2014 - 23:34, said:

Closures in C - sunt convins ca n-o sa vedem, ce rost ar avea? Pentru evolutii majore exista C++, si partea frumoasa e ca poti folosi exact ce vrei din C++, chiar ca un "C with closures". Din acest punct de vedere, deja avem chestia asta.
Ai inteles macar ce sunt? Poti explica cu cuvintele tale ce ai inteles?

Edited by MrReason, 26 November 2014 - 00:02.


#17
wirespot

wirespot

    Senior Member

  • Grup: Senior Members
  • Posts: 6,654
  • Înscris: 23.09.2002

 MrReason, on 26 noiembrie 2014 - 00:01, said:

Dar de ce consideri asta? Doar de dragul curiozitatii ca si "calitate de nepretuit"?

Unii oameni, când dau de-un concept nou, îşi spun "acum nu înţeleg dar poate voi înţelege cândva şi-mi va folosi la ceva".

Alţii zic "nu înţeleg deci e clar o prostie care nu-mi va folosi niciodată".

#18
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Nu subestima importanta curiozitatii ;) Studiul limbajelor functionale te ajuta sa intelegi mai bine anumite lucruri si concepte care deseori se regasesc si-n limbajele imperative, si chiar concepte specifice limbajelor imperative.
Sunt dintre cei ce considera ca limbajele functionale reprezinta o nisa, si nu pot indeplini promisiunile suporterilor infocati; si ca o tentativa de-a defini un limbaj "perfect" este pierdere de timp. Si totusi...

Hmm... dau lucrare de control? :P

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate