Top 5 Worst Programming Languages

He also has another top:

4 Likes

Mare dreptate are omul. Toate limbajele adoptă funcționalități din alte limbaje și devin un singur limbaj cu care nu mai poți face nimic.

Mare dreptate și cu PHP, copiezi fișierul prin FTP in www _root și ai terminat.

1 Like

Si cand se strica ceva la configurare, primeste clientul toata sursa PHP in browser, eventual si cu parola pentru baza de date :crazy_face:

nu sunt de accord cu GO, gets shit done daca shit-ul, e mic si simplu, pt chestii mai complexe, iti dai seam ca nu prea e cool sa scriii 20 linii de boilerplate pt 5 linii de business logic

1 Like

Cred ca articolul este un pamflet.

4 Likes

Totusi, cine te obliga sa folosesti toate functionalitatile?

Din pacate programarea e sport de echipa, si multi colegi de-a lungul timpului au scris cod criptic doar pt ca li se parea ca sunt mai profi daca fac asta. Unul din elementele favorite era chiar asta, constructe obscure de care nu ar fi nevoie in veci, si de care afli citind cu mirare cod de productie.

5 Likes

Codul de go are un avantaj major, evita abstracțiile fiindcă sunt greu de făcut.

Scopul lui go e multithreadingul simplu, ceea ce e ridicol de greu cu orice limbaj. Inclusiv cu go e greu, dar nu te mai ocupi tu de thread-uri.

Dacă îți trebuie structuri complexe go e enervant, dar încerca inversul, structuri complexe, reflection din clase, spring în java și multithreading.

În Kotlin e ok, am folosit Ktor, dar nu mai e compilabil cu GraalVM fiindcă folosește fiecare ciudățenie din JVM. Go se compileaza rapid și sigur, Kotlin are nevoie de JVM și chiar și așa are ciudățenii cu companion object-uri.

Readability este una din ideile care a stat la baza dezvoltarii limbajului Go. Asta pentru ca cele mai multe proiecte in diverse alte limbaje sunt aproape imposibil de citit sau inteles cu eforturi rezonabile. Eu cred ca e mai confortabil din toate punctele de vedere sa scrii 20 de linii pe care le intelege toata lumea (char daca redundanta e uneori enervanta) decat 5 criptice sau care sunt greu de modificat sau depanat fara eforturi semnificative de intelegere. Inclusiv structura proiectului este una mult mai accesibila.
Eu cred ca cineva care stie Go la un nivel acceptabil poate citi si intelege apoape orice proiect dezvoltat chiar si de cei mai avansati programatori din domeniu (sa zicem ca excludem unsafe sau reflection dar consideram concurenta). Nu stiu daca acest lucru se poate spune despre prea multe alte limbaje.

1 Like

Poti evita abstractiile daca ai un domeniu mai simplu, altfel ajungi sa ai sute the structuri, multe overlapping aceeasi zone / field-uri, dar cu mici differente, primul instinct pe care l-am vazut in go, e sa mai faci o structura, interfata, functie, si poate de aia pare la incept fun si productiv, e usor sa scrii cod nou, si apoi schimbi job-ul / proiectul.

go routines sunt cool insa nu mi s-au parut asa folositoare cum ai crede, pt ca mereu depinzi de alta resursa, degeaba poti faci 10,000 thread-uri daca baza de data suporta doar 100 connexiuni, asa ca faci un pool cu 100 cu ai fi facut oricum in java.

Cum e mai citibil sa citesti 20 linii decat 5, plus ca trebuiie sa fii atent si la boilerplate pe langa, aaa ai uitat cumva sa faci un return la err, sau capturezi alt err, sau ai uitat sa faci defer, sau ai un for si capturzi nu stiu variabila, codul golang e plin the for si if, nu mai zic de panic-uri care omoara tot procesul.

2 Likes

Se poate scrie cod criptic si in brainfuck, si ala e un limbaj foarte simplu, fara multe ‘functionalitati din alte limbaje’.

Sau daca nu-ti place limbajul, ia un lisp minimal (poate fi redus la sub 10 instructiuni) si da-l pe mana unei echipe de-aia meseriasa de programatori lisp, sa vezi ce iese in final.

Da-mi voie sa nu fiu de acord. Cand vreau sa aflu ca o metoda alege toate produsele distincte din niste facturi, le ordoneaza dupa data introducerii si le stocheaza in alta parte in grupe de cate 3, prefer sa citesc

invoices.flatMap(_.products).distinct.sortBy(_.introduced).grouped(3).foreach(storeBatch)

Decat vreo 20 de linii de solutie plina de for si if imaginata de cineva, care poate mai arunca si un bubble sort custom acolo.

1 Like

Am vrut sa spun ca se poate scrie cod readable si in java[1], dar ma opresc aici.


  1. ca si in alte limbaje de programare ↩︎

Funny thing, noi convertim încet încet tot ce e nodejs în go. Și n-aș zice că e f ușor de citit nodejs…

1 Like

Inteleg ca tie iti place sa vezi cod de-asta:

Stii de ce am lasat comentat si codul cu mai multe linii si comentarii pentru fiecare linie deasupra?
De-aia, pentru ca linia aia ar fi mai greu de inteles fara.

1 Like

Fun fact: se scrie cod mai putin datorita sintaxei moderne dar se adauga comentarii ca sa se explice codul.

2 Likes

Are un algoritm acolo si este normal sa explice ceea ce face.

Dar daca ai ceva de genu

/**
Construcor
*/
public MyClass {}

Asta este un comentariu inutil.

Compilatorului/intepretorului il doare fix in cot ca sunt 20 de linii sau 100 de linii de cod. Oricum la fiecare executie, cel putin in PHP, sunt parse-ate sute de mii de linii (vendors/ directory).

Iar apoi toate abstractizarile astea, map(), filter() sau cele peste SQL (->select(), ->where(), etc.) adauga un overhead. Mai rapid e sa scrii query-ul de mana si sa-l trimiti bazei de date decat sa instantiezi un ORM si sa executi metodele care la final genereaza acelasi query.

2 Likes

Alea au treaba cu colecții. Array-uri, liste, dicționare samd.

Pacat ca suntm prea putini care mai stiu asta.

3 Likes