To máte pravdu, ale opačně než myslíte. Láďa Zajíček psal slavný článek o lepičích kódu a programátorech, a tehdy pronést něco jako "tak se koupí rychlejší procesor" nebo "sice je to pomalejší, ale dokáže v tom něco napsat i cvičená opi^H^H^Hjunior", tak už někdo přes NMT nebo prvního Dancalla objednává sanitku-
Go. V tom se pomalu nedá programovat. Samé if err != nil kam se člověk podívá, vše se řeší forem.
Porovnejte:
b := []int{1, 2, 3, 4, 5}
var a int[]
for _, v := range b {
tmp := v + 3
if tmp % 2 == 0 {
a = append(a, tmp)
}
}
a
let b = vec![1, 2, 3, 4, 5];
let a: Vec<i32> = b.iter()
.map(|x| x + 3)
.filter(|x| x % 2 == 0)
.collect();
Já tedy považuji za čitelnější to druhé. Prostě vidím co to dělá. Tamto nahoře mi zda, jaksi kostrbaté.
Tak co s tím Go všichni mají?
Spíš by mě zajímalo, jak bude který produkt udržovatelný. Přijde mi, že jsou jazyky, kde se dá rychle něco nabušit (a ještě úžasnější je, že je ten jazyk "snadno pochopitelný" a může v něm psát "skoro každý"), ale když se objeví větší problém nebo potřeba rozšíření daného produktu, z výhody se může stát nevýhoda.
Jelikož pokud se něco napíše tak, že to "nějak" drží pohromadě a "nějak" se to otestuje za aktuálních podmínek, je to poněkud jiný případ než když typový systém nebo nějaký jiný mechanismus (ale jaký jiný?) nutí vývojáře postavit systém tak, aby v něm byl jenom minimální prostor pro nejistotu. A když se dělá refaktorizace, systém opět dává bacha, aby kód neujel někam, kde vzniká prostor pro neošetřené méně běžné situace.
Ano, obecně je větší problém IO. Procesor, hlavně když má data v cache, počítá prakticky zdarma. Většina reálných problémů ale není limitovaná ani tak implementací jazyka, jako spíš hloupým algoritmem, hloupou infrastrukturou a leností/ nevědomostí programátora.
Třeba do databáze se holt musí chodit opatrně, protože databáze je holt pomalejší než psaní do nějaké mapy v paměti. Kdyby tomu tak nebylo, tak by spousta softwaru nebyla buď vůbec potřeba, nebo by byl mnohem jednodušší. Málokdo by se zabýval SQL, protože by nebylo potřeba psát složité dotazy, aby se to poskládalo šikovně v databázi tak, aby to mělo co nejmenší IO impact + aby to bylo nějak obšírně zamykáno pro integritu. Ta integrita by se nejspíš řešila nějakým COW způsobem + software transactional memory přímo v programovacím jazyce. Žádné DSL jako je SQL by nebylo už potřeba. (No a teď jsem v podstatě popsal Datomic :-))