De ce Python pentru chestii serioase?

Si nimeni nu a zis de comunitatea universitara care scoate idei in Python si care ajung cateodata in productie sau in trend: machine learning, AI, etc. Mi se pare ca acesta este un “selling point” mai important decat sintaxa sau uneltele cu care vine. As invata orice sintaxa dar nu as implementa matematica din spatele AI. Decat platit bine :slight_smile:

Nu sunt folosite .dll scrise in C++ pentru chestii de A.I./Machine learning in Python?

3 Likes

Sigur ce produce academia nu ajunge in acea forma in productie.

Nu are punct și virgulă la fiecare linie. In rest e o bătaie de cap ca oricare alt limbaj dacă vrei cod de calitate.

Eu am doua limbaje care îmi displac și anume Java și PHP. Nu sunt rele, dar sunt unii care fac asta de 10 ani și fac niște abstracții sau teste de stai și îți tai venele până înțelegi că ăla nu avea de muncă și în loc să scrie 2 linii de cod a scris 200 in 10 fișiere. PHP-ul pur si simplu arătă urât după ce știi node și JS. În plus se simte foarte tare că orice se poate face cu alt limbaj in PHP întra ca un fel de adaos.

Python nu e super abstractizat ca Java, e mai frumos ca PHP și a început sa fie folosit când JS încă nu era un limbaj serios.

Python e super pentru data wrangling (filtrare și normalizare), boți, teste și automatizare. La machine learning îți trebuie data wrangling și matematica/statistica ceea ce python face foarte bine.

1 Like

Ce e asa rau in PHP?

using App\Lib\Sofa;

class Dog extends Animal implements WoofInterface
{
  public function bark(string $woof): bool
  {
      // ...
  }

  /**
   * Bad sofa!
   *
   * @param Sofa  $sofa       Bad sofa!
   * @param float $numOfChews We use float because the chews are more than 4 billion
   *
   * @return bool We know the sofa is going to be dead. Always!
  **/
  public function chewSofa(Sofa $sofa, float $numOfChews): bool
  {    
    $chews = 0;

    while ($chews < $numOfChews) {
       $chew++;
       
       if ($chew % 5 == 0) {
          $this->bark("Bad sofa!");
       }
    }

    // Has sofa survived?
    if ($sofa->isBrandNew()) {
       return false;
    }

    // Actually it doesn't ever survive
    return false;
  }
}

$dog = new Dog();
$dog->bark();
2 Likes

Apropo … eu dupa o vreme am ajuns la concluzia ca aspectul vizual al unui limbaj de programare este ca si cum am discuta despre Care este culoarea cea mai frumoasa la o masina?.
Fiecare dintre noi are o parere proprie. Unora le place cum arata C/C++, altii prefera verbozitatea lui Java, altii prefera stilul PHP.
Daca ar fi sa ma intrebati ce-mi place vizual cel mai mult, eu as vota pentru PHP, in special de la versiunea 7 incoace.
Dar in ultimii 3 ani am programat in PHP, JavaScript, TypeScript, Python si Java, plus o gramada de BASH. In toate poti face frumos si organizat ce este nevoie de facut, sau poti face urat si indescifrabil.
Cum s-a mai mentionat si mai sus, anumite programe au anumite puncte forte si ecosisteme potrivite pentru anumite tiputi de aplicatii.
Desigur, poti sa scrii o aplicatie web in C/C++, dar mai bine l-ai folosi la scris drivere si librarii de system de operare.
Desigur, poti face in PHP backend pentru o aplicatie web care coordoneaza un system de operare UNIX like, asa cum am facut noi, dar mai bine te-ai limita la Web <-> Baza de date.
In momentul de fata Python pare a fi “the magic bullet” pentru ca are un ecosistem ce permite sa faci aplicatii web simple, microservicii care interactionaza pe API-uri, integrare stransa cu systemele de operare, si ceea ce vom face noi in curand trecere pe “Event Driven Architecture” bazat in cazul nostru pe etcd.
Cu alte cuvinte, Python este potrivit la toate nivelele unei aplicatii, mai putin frontend. Acolo “JavaScript rulez!”.

7 Likes

wow. that code. it looks like java with $ :slight_smile:

Mie nu imi place python dar il recomand ca 1st language.

Nu imi place pentru ca exista mult clever code si solutii oneliner. Nu imi place cantitatea industriala de whitespace. Nu ma deranjaza lipsa de curly braces dar prefer limbajele care au asa ceva.

Si python nu mi se pare lent…e super lent in comparatie cu …well…orice in afara de ruby :slight_smile:

Clar are multe use case-uri in industrie. AI,ML, data science, scripting.
Dar eu personal nu il recomand si nu l-as folosi pentru solutii(site-uri) web sau microservicii. Mai ales acolo unde performanta e un punct important.

Nu dati cu parul.

A auzit cineva de OOP și de faptul că în funcție de ce vrei să faci, se recomandă anumite limbaje pentru că sunt mai eficiente/mai ușor de folosit/mai [fill the blanks]?
E normal ca dacă nu cunoști python să scrii mai greu cod în el chiar și pentru taskurile la care excelează. Chiar de curând am scris ceva automatizare pentru un Google sheet și m-am chinuit la declararea și apelarea unei funcții.
Suntem prea obișnuiți, din cauză că natura jobului nostru e detail oriented, să intrăm într-un rabbit hole în analiza unei probleme. Prea mulți învățăm programare cu abordarea bottom-top (de la detalii la ansamblu) în loc de top-bottom (de la ansamblu la detalii).
Legat de întrebarea topicului, nu înțeleg ce sunt chestiile serioase, sau mai degrabă cele neserioase. Dacă dați o vizită pe pagina limbajului să vedeți pentru ce se poate folosi, veți vedea că este pus lângă “the almighty C”. Și asta e numa un feature.

Nu stiam. :slight_smile:
Faza de unde mi-a ramas in minte:
[Se intalneste cu un exec de la Microsoft in lift. Ii zice ceva foarte misto :P)

3 Likes

Darn, mult hate* pe Python pe thread si e pacat.

Python 3.x e chiar un super limbaj pentru application development, systems scripting/devops, si data science. Nu-i tot ce e sub soare, dar e o “nisa” mare.

Multa vreme a fost limbajul meu preferat pentru side-projects si hacking. Apoi am trecut la Node+TypeScript. Dar recent m-am intors la Python. Si cat nu ma uitam au bagat type annotations si async/await (motivul pentru care plecasem de fapt la Node).

Acum, Python nu-i perfect. Are 30 de ani si se vede. E un limbaj din cele “mari”, libraria standard are mici imperfectiuni, iar povestea de packaging nu-i atat de grozava pe cat ar putea fi (OTOH, cam niciunul din limbajele enumerate nu straluceste - unele fie n-au nimic (C++), fie au si ele mai multe standarde in diverse stadii de maturizare).

*hai poate nu chiar hate, dar cu siguranta nu iubirea pe care o merita.

2 Likes

Cred ca acum majoritatea limbajelor de programare si-au reparat bubele :slight_smile:

In combinatie cu ide-urile si alte tool-uri, este chiar o placere sa le folosesti.

Nu neaparat python, dar am vazut ca citesti o opinie naspa pe net despre X si in cele mai multe cazuri, X este naspa. Am cazut si eu in acesta capcana, dar dupa ce am mai vazut si alte opinii si am experimentat, mi-am mai schimbat parerea.

E sportul nostru national. Oricum, deschide thread nou despre orice limbaj( in afara de php ) si o sa isi primeasca la fel de mult hate.

PHP-ul o sa isi primeasca de 2x mai mult.

4 Likes

Citisem candva pe undeva ca Java e limbajul care poate fi folosit in orice arie, inclusiv Data Science. Acum ca nu e prea raspandit, e alta poveste :smiley:

Inainte sa incep sa lucrez in programare, ca hobby imi cream siteuri personale in php. Apoi, am ajuns sa lucrez in C# la o firma mica, si cand am vazut cat de curat si elegant poate sa fie fata de php, am zis la naiba, cine are nevoie de dolarei $$$$ in aproape fiecare linie de cod? e oribil, il urasc. :crazy_face: // asta pentru ca n-apucasem sa invat ceva framework, unde parca mai apar si @@@ pentru ca toate-s facute pe mvc.

Eh, dupa C#, am trecut la Scala, unde cum ai spus tu, poti definii functii pe o linie, mie mi s-a parut ceva wow sa nu te oblige sa folosesti acolade acolo unde te poti lipsi de ele, sau “return-uri”, sau alte “imbunatatiri”. Dar, in cazul oneline-urilor imi pare ca se pierde putin din claritate si eleganta codului (plusuri si minusuri :)). Ma uitasem foarte putin pe Django pentru ca am vrut sa compar cu Scala, sunt destul de asemanatoare in scriere, dar sigur Python e mult mai updated. Mi se pare ca in comparatie cu C#/Java, Python/Scala sunt mult mai permisive

$x->, $_REQUEST, $_GET, ; , new/obiecte peste tot, X::Z , serializare/deserializare JSON, += la array, ini_set, <?php, $fn = fn(&$x) => $x++

si mult legacy in tutoriale, trebuia apache/nginx in față. Wamp/lamp ascunde complexitatea în configurare. Composer nu ai pe shared hosting. Accesarea directa a fișierelor php prin rewrite și rutare în loc de un server/un fișier main.

Pe cand în Python ai self si după ce ai înțeles pattern-urile ești good to go. Puterea lui Python consta in librarii. E.g Pandas

1 Like