shrike je napisao/la:OK, ne znam od kuda ti da radim C program za atomsko sklonište, ali to nije istina.
Ah, dok moram objašnjavati šale... "web aplikacija za preko 10 godina" - za koga? Eventualno za atomsko sklonište. Na skali od 10 godina paradigme se mijenjaju i nema smisla dizajnirati web aplikaciju za idućih dvoznamenkasti broj godina kad je izgledno da će se zahtjevi korisnika i okoline promijeniti (sudeći po brzini razvoja weba) i da ćeš morati mijenjati aplikaciju, odnosno najbolje - pisati je ispočetka.
shrike je napisao/la:
Nadalje, spominjanje C-a u kontekstu toga da su moderni jezici pisani u njemu je primjer da je C iskoristiv jezik, a ne potpuno beskoristan za išta kao što 4ndy kaže.
Gdje sam rekao da je "potpuno besmislen"? Kako raspravljati s tobom kad ni ne čitaš što se piše? Pričamo o web programiranju (vidi svoj naslov) i o upotrebi C-a u webu. Nisam ja nigdje tvrdio da treba pisati drivere i OS-ove u Pythonu ili Rubyju. Samo sam ustvrdio da postoji veliko područje izvan mikrokontrolora, drivera, OS-ova itd. (kao web) kojima C nije ni malo prikladan koliko god ti za njih mislio da su "idioti".
shrike je napisao/la:
Također, ako je tvoj C program sporiji od pythona, to nije zato jer je C sporiji, već jer je tvoj algoritam toliko inferioran da je i pythonova implementacija bolja. Nemoguće je da za isti algoritam python bude brži. jeb***, loše si napisao stvar, ali opet: nitko ne traži da implementiraš poznate i često korištene algoritme sam, imaš brdo GPL headera koje si mogao bez problema iskoristiti.
Da, zato što ja nisam implementirao hashtable i BTree algoritam u svoju verziju "dictionaryja" koja u Pythonu postoji "po defaultu". Kad sam naučio kako to implementirati, bio je u konačnici moj C program mnogo brži, ali sam to morao naučiti i implementirati - nisam to nikako mogao "a priori" znati. Takav problem konceptualno i dalje ostaje. Nisam se rodio sa svim znanjem svijeta da bih napisao optimalan program i uvijek ću lošije pisati programe u odnosu na one optimalne. Možeš a) programirati u C-u i pratiti razvoje svih algoritama, pristupa i ideja u računarnoj znanosti i implementirati ih u svoj kod ili b) možeš koristiti jezik više apstrakcije u kojem će netko tko ga razvija (zajednica) implementirati te ideje u njega samog bez da ti to uopće znaš, samo ćeš vidjeti da je tvoj program brz. Ako nemaš sve vrijeme svijeta, logično bi bilo da uzmeš opciju b, jer takvom logikom kojom ti ideš možeš završiti samo na asembleru kao što ti je gore jurastublic to već rekao ili još žešće na dizajniranju vlastitog hardvera. Izbor se jezika svodi na pronalazak optimalnog puta između brzine razvoja i efikasnosti/trajnost koda.
Život web aplikacija je kratak, stoga je žrtva u efikasnosti i trajnosti posve razumljiva jer je bitno da web stranice budu gotovo u roku par tjedana. Za operacijske sustave i "atomska skloništa" efikasnost i trajnost je ključna pa se zato i razvijaju u nižim programskim jezicima kao C.
Tupo slijeđenje određenih karakteristika može te dovesti do zaključka da je najbolje da sam dizajniraš sklopove. Fizički web server koji ima jednu web aplikaciju - uvijek ćeš ga moći reproducirati jer ne postoji "kompleksnost" ispod silikona.
shrike je napisao/la:
Što se tiče librirya, tu si u pravu - ali ne i za headere. Header samo ostavim u svojem direktoriju i to je to. Ništa i nitko me ne forsira da ja baš uvijek uzimam najnoviju verziju. Tak ogledavši, C program sa setom 3rf party headera će biti neusporedivo bolji. Ali pazite, ja se slažem da je inicijalno bolje koristiti python, php i slične stvari, no ako ti treba nešto dugoročno onda imaš problem. I ne, nije to arogantno ili bahato, već vidim to iz praktičnog svijeta.
Golemi, projekti koji su pisani u jezicima i frameworcima koje nitko više ne koristi i za koje nitko više ne može pomoći se napuštaju i traži rješenje. Ali koje? ruby? Php? python? Čemu? Za 10 godina češ biti u identičnoj situaciji kao danas, bez obzira koliko velika zajednica danas postoji. I to je problem. U naprijed znam da je projekt golem, jer posotji implementiran. U naprijed znam da će biti ovdje desetljećima, i u naprijed znam da će biti problem ako se implementira u popularnim jezicima jednostavno jer se već dogodilo. I to je ono: loši su primarno jer ne drže backward kompatibilnost.
Za kompliciranije programe, koristit ćeš kompliciranije biblioteke. Nećeš uzeti 2-3 headera. Uzet ćeš cijele frameworkove, npr. pogotovo ako radiš GUI aplikaciju. Uzmi neku C aplikaciju koja koristi prvi Gtk ili C++ koja koristi rani Qt i probaj je iskompajlirati pa javi rezultat

Dakle, za 10 godina bit ćeš u identičnoj situaciji koristiš li C ili Python, pa čemu uopće forsiranje C-a samo zbog tog aspekta?
Opet napominjem, da ne bi krivo shvatio (iako se često pitam čitaš li postove uopće ili samo preletiš): postoje razlozi zašto koristiti "X" u određenoj situaciji, no ako se u većini slučajeva ne koristi "X" u takvim situacijama vjerojatno onda argumenti za "X" nisu dovoljni u usporedbi s protuargumentima. Da si započeo temu "Zašto Linux nije napisan u Pythonu" vodili bi identičan razgovor, samo bi napravili supstituciju "Linux<>web" i "Python<>C".
Čini mi se da ti opet reduktivno shvaćaš stvari i onda vadiš posve sulude zaključke. Zašto jednostavno ne prihvatiš da je svijet pametniji od tebe i ako se nešto koristi u svijetu pokušaj shvatiti zašto se koristi, zašto je većina tako odlučila (zašto tvoji "razumski" razlozi ipak nisu prevladali), a ne tvrditi: "Svi su oni idioti jer to koriste - ja znam bolje jer ja vidim pravu istinu^TM."
Ne tvrdim da je uvijek većina u pravu u svakom datom trenutku, ali na veće vremenske skale, većina nađe "pravi put" i to je ovdje slučaj.