Programátorův pohled na svět

k

Re:mysleni pana Programatora
« Odpověď #120 kdy: 08. 01. 2016, 22:41:12 »
Nikdy jsem to nepouzil, ale web workers vypadaji, ze bezi v jinem vlaknu.

Po tom, co se hodne zajimavych veci z CoffeeScriptu dostalo do JS, verim, ze nemusi byt uplne nerealne, ze se dockame nejake obdoby backcallu i v JS :).

Workers je možná implementováno jako samostatné vlákno, ale z hlediska JS funguje jako samostatný proces, jeden, nikoliv jediný, rozdíl je v tom že se nekoná sdílení dat mezi vlákny.
V JS je zcela nereálné dočkat se čehokoliv podobného Erlangu a spol.

Dlouhé řádky také nepoužívám - mám softlimit někde kolem 65 znaků.

To už víme, máš malý monitor :) Dneska je normální vidět na šířku 120 znaků najednou.


k

Re:mysleni pana Programatora
« Odpověď #121 kdy: 08. 01. 2016, 22:43:39 »
Async a await dosud enginy nepodporujou, až budou, budeš moct tudle kokotinu použít pro pozastavení aktuálního tasku, spuštění ostatních tasků z event fronty zatímco engine bude čekat na výsledek async volání. Node.js něco podobnýho už má díky C++ pluginu.

Node.js nic takového nemá, nejde pozastavit vykonávání funkce. Funkce musí doběhnout, aby se mohl zavolat callback/lambda.

Kit

Re:mysleni pana Programatora
« Odpověď #122 kdy: 08. 01. 2016, 22:56:19 »
Dlouhé řádky také nepoužívám - mám softlimit někde kolem 65 znaků.

To už víme, máš malý monitor :) Dneska je normální vidět na šířku 120 znaků najednou.

Tak uveď důvod, k čemu jsou dobré řádky programu delší než 80 znaků. Zhoršuje to čitelnost - oko se na tak dlouhém řádku prostě neudrží.

Už jsi někdy přemýšlel o tom, proč se noviny sází do sloupečků?

hu

Re:mysleni pana Programatora
« Odpověď #123 kdy: 08. 01. 2016, 23:06:57 »
Dlouhé řádky také nepoužívám - mám softlimit někde kolem 65 znaků.

To už víme, máš malý monitor :) Dneska je normální vidět na šířku 120 znaků najednou.

Tak uveď důvod, k čemu jsou dobré řádky programu delší než 80 znaků. Zhoršuje to čitelnost - oko se na tak dlouhém řádku prostě neudrží.

Už jsi někdy přemýšlel o tom, proč se noviny sází do sloupečků?

Mne zase na 80znakovych radcich prijde klicova moznost zobrazit na fullhd displeji tri takove soubory vedle sebe.

Kit

Re:mysleni pana Programatora
« Odpověď #124 kdy: 08. 01. 2016, 23:17:02 »
Mne zase na 80znakovych radcich prijde klicova moznost zobrazit na fullhd displeji tri takove soubory vedle sebe.

Ano, to je další možnost využití, pokud někdo nemá plochu zleva i zprava oblepenou nástrojovými lištami. Tři kompletní třídy na jedné ploše - to se prostě vyplatí.


Zelenac

Re:Programátorův pohled na svět
« Odpověď #125 kdy: 08. 01. 2016, 23:35:36 »
Mě zase příjde, že dodržování 80 znakových řádků zhoršuje orientaci v kódu, prostě se mi nelíbí, když se tam kvůli tomu zalamuje funkce, nějak se mi v tom potom hůř orientuje.
Někteří píšou kvůli tomu funkce takhle:

pom = funkce(jedna,
                    dva,
                    tři,
                    čtyři,
                    pět,
                    šest);
pom12345 = funkce(jedna,
                           dva,
                           tři,
                           čtyři,
                           pět,
                           šest);

Na mě to působí docela neesteticky, když je program takhle roztahaný na hodně řádků. Potom někteří dělají:

if( podminka )
{
   jedna;
   dva;
};

misto

if( podminka ) {
   jedna;
   dva;
}

Zároveň mi příjde o ničem nadužívat zkracování jmen proměnných. Každé ide dneska má našeptávání, podle mě rpoměnné by se mohly psát klidně bez jakýchkoliv zkratek. Ztejně tam pak musíte valit komentáře, lepší je samopopisná proměnná. Nejspíš nějaký pozůstatek z doby dávno minulé u starých pardálů.


Kit

Re:Programátorův pohled na svět
« Odpověď #126 kdy: 08. 01. 2016, 23:59:28 »
Mě zase příjde, že dodržování 80 znakových řádků zhoršuje orientaci v kódu, prostě se mi nelíbí, když se tam kvůli tomu zalamuje funkce, nějak se mi v tom potom hůř orientuje.

Dlouhou funkci s mnoha parametry zalamuji jinak:
Kód: [Vybrat]
vysledek = funkce(
    jedna,
    dva,
    tři,
    čtyři,
    pět,
    šest
);
Zároveň se vyhýbám víc než 3 parametrům metody. Obvykle stačí jeden nebo dva. Jinak se čtenář ztrácí v tom, "co ten čtvrtý parametr znamená?".

"if" také zarovnávám jinak:
Kód: [Vybrat]
if (podminka) {
   jedna;
   dva;
}
(za klíčovým slovem mezera, závorka obepíná podmínku, větev else zpravidla není žádná)

Citace
Zároveň mi příjde o ničem nadužívat zkracování jmen proměnných. Každé ide dneska má našeptávání, podle mě rpoměnné by se mohly psát klidně bez jakýchkoliv zkratek. Ztejně tam pak musíte valit komentáře, lepší je samopopisná proměnná. Nejspíš nějaký pozůstatek z doby dávno minulé u starých pardálů.

Zkratky v názvech proměnných (kromě uznávaných) jsou zlo. Obvykle stačí jedno slovo, slepence nebývají potřebné. Název proměnné - podstatné jméno, název metody - sloveso, název rozhraní - přídavné jméno. Dodržování těchto pravidel krásně zpřehlední aplikaci, čte se to jak pohádka.

Kit

Re:Programátorův pohled na svět
« Odpověď #127 kdy: 09. 01. 2016, 00:58:16 »
Když si vytáhnu z manuálu funkci s pěti parametry, tak místo zalamování se dá napsat třeba takto:
Kód: [Vybrat]
<?php
$filename 
"source.txt";
$usePath false;
$context stream_context_create();
$offset = -1;
$maxlen 100000;
$content file_get_contents($filename$usePath$context$offset$maxlen);

Přestože má ta funkce 5 parametrů, poslední řádek s jejím voláním má celkem 78 znaků. Navíc jsou všechny parametry pojmenovány tak, že je evidentní jejich účel a plní roli komentářů.

Re:Programátorův pohled na svět
« Odpověď #128 kdy: 09. 01. 2016, 06:08:51 »
Když si vytáhnu z manuálu funkci s pěti parametry, tak místo zalamování se dá napsat třeba takto:
Kód: [Vybrat]
<?php
$filename 
"source.txt";
$usePath false;
$context stream_context_create();
$offset = -1;
$maxlen 100000;
$content file_get_contents($filename$usePath$context$offset$maxlen);

Přestože má ta funkce 5 parametrů, poslední řádek s jejím voláním má celkem 78 znaků. Navíc jsou všechny parametry pojmenovány tak, že je evidentní jejich účel a plní roli komentářů.

V tomhle mi teda přijde lepší využít defaultní parametry:

Kód: (Python) [Vybrat]
content = file_get_contents(
    filename="source.txt",
    usePath=False,
    context=stream_context_create(),
    offset=-1,
    maxle=100000,
)

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Programátorův pohled na svět
« Odpověď #129 kdy: 09. 01. 2016, 07:39:53 »
Pojmenovane parametry jsou fajn, napr. Scala je podporuje "out of the box", neni ani treba je nejak specialne resit.
Kód: (Scala) [Vybrat]
def someFunction(firstParam: Int, secondParam: String, thirdParam: Boolean) {}

someFunction(
  1,
  "",
  true
)
someFunction(
  firstParam = 1,
  secondParam = "",
  thirdParam = true
)

V JS jsem to videl vetsinou resene pres options objekt, coz ve spojeni s kratkou syntaxi vytvoreni objektu je IMO celkem hezke:
Kód: (JavaScript) [Vybrat]
function someFunction(options) {}
someFunction({
  firstParam: 1,
  secondParam: '',
  thirdParam: true
});

Jsem nasel i nejaky udelator pro JS, ktery prevede funkci s nekolika pojmenovanymi parametry na funkci akceptujici options objekt.
Kód: (JavaScript) [Vybrat]
// using http://stackoverflow.com/a/11796776/1017211
var someFunction2 = parameterfy(function (firstParam, secondParam, thirdParam) {
  console.log(firstParam + ' ' + secondParam + ' ' + thirdParam);
});

someFunction2(
  1,
  'x',
  true);
someFunction2({
  firstParam: 1,
  secondParam: 'x',
  thirdParam: true
});



A po pravde nevim, co vam vadi na vyrazu pres nekolik radku. FP varianta na nekolik radku, kde kazdy dela jednu jednouduchou operaci se mi libi podstatne vice, nez mit nekolik cyklu na jeste vice radcich s ruznymi, nejlepe propletenymi, side-effecty jen proto, ze nekdo nezna zaklady FP v jeho jazyce.

Dokonce i ten trivialni priklad se mi libi vice FP stylem:
Kód: (Scala) [Vybrat]
val redCars = cars
  .filter(_.id == "ID2376")
  .map(c => {c.color = "red"; c})

var redCarsNonFp = Seq[Car]()
for (car <- cars) {
  if (car.id == "ID2376") {
    car.color = "red"
    redCarsNonFp :+= car
  }
}

A co vic, FP zapis se da casto krasne napsat na jeden radek, druha varianta je vetsinou necitelna.
Kód: (Scala) [Vybrat]
val redCars = cars.filter(_.id == "ID2376").map(c => {c.color = "red"; c})
var redCarsNonFpShort = Seq[Car](); for (car <- cars) { if (car.id == "ID2376") {car.color = "red"; redCarsNonFpShort :+= car}}

Re:mysleni pana Programatora
« Odpověď #130 kdy: 09. 01. 2016, 08:32:47 »
Spíše měl asi na mysly dlouhé výrazy. Zalomení dlouhého výrazu na 2-3 řádky se, alespoň u mě, čitelnosti moc nepomůže, možná spíš naopak. Pro někoho (včetně mě) je lepší, když se to rozloží na více menších kroků.
To je čistě věc vkusu/názoru a zkušenosti s tím daným jazykem. Ve FP neexistuje rozlišení výraz/příkaz, takže "jeden výraz" je všechno, i celý program je "jeden výraz". Pojmenovávat mezivýsledky je možný, ale mně to přijde většinou zbytečný:

Kód: [Vybrat]
red_cars = cars |> Enum.filter(&(&1[:id]==XXXX)) |> Enum.map(&(Map.put(&1,:color,:red)))

red_cars = cars
                 |> Enum.filter(&(&1[:id]==XXXX))
                 |> Enum.map(&(Map.put(&1,:color,:red)))

cars_with_id = cars |> Enum.filter(&(&1[:id]==XXXX))
red_cars = cars_with_id |> Enum.map(&(Map.put(&1,:color,:red)))

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:mysleni pana Programatora
« Odpověď #131 kdy: 09. 01. 2016, 08:40:09 »
Spíše měl asi na mysly dlouhé výrazy. Zalomení dlouhého výrazu na 2-3 řádky se, alespoň u mě, čitelnosti moc nepomůže, možná spíš naopak. Pro někoho (včetně mě) je lepší, když se to rozloží na více menších kroků.

Ale pokud se to rozdeli na vice radku, tak pak v podstate korespenduje radek s krokem. Naopak zavadeni pomocnych promennych, ktere se nasledne ihned pouziji prave jednou me prijde jako obfuskace kodu.

Radovan.

Re:mysleni pana Programatora
« Odpověď #132 kdy: 09. 01. 2016, 08:55:42 »
Dlouhé řádky také nepoužívám - mám softlimit někde kolem 65 znaků.

To už víme, máš malý monitor :) Dneska je normální vidět na šířku 120 znaků najednou.

Tak uveď důvod, k čemu jsou dobré řádky programu delší než 80 znaků. Zhoršuje to čitelnost - oko se na tak dlouhém řádku prostě neudrží.

Už jsi někdy přemýšlel o tom, proč se noviny sází do sloupečků?

K tomuhle ;D
Kód: [Vybrat]
for (printf("1+1 Kalkulačka\n");3==scanf("%f%1[+-*/]%f",&x,&z,&y);printf("%.3f %c %.3f = %.3f\n",x,z,y,'+'==z?x+y:'-'==z?x-y:'*'==z?x*y:y&&'/'==z?x/y:NAN)) while ('\n'!=getchar());

Noviny jsou čtivo na jedno použití, knihy s trvalejší hodnotou se do sloupečků netisknou. Nezačínal jsi náhodou s FORTRANem?

Re:mysleni pana Programatora
« Odpověď #133 kdy: 09. 01. 2016, 08:57:05 »
Noviny jsou čtivo na jedno použití, knihy s trvalejší hodnotou se do sloupečků netisknou. Nezačínal jsi náhodou s FORTRANem?
Velkoformátové knížky se samozřejmě sází taky do sloupečků. S trvalostí to nemá co dělat.

Trident

Re:mysleni pana Programatora
« Odpověď #134 kdy: 09. 01. 2016, 09:15:07 »
Myslim si, ze vetsina programatoru ma (pri nejmensim na zacatku kariery) sklony k bipolarnimu vnimani sveta.
Programator zpravidla nezna "je tam trochu vody". Programator formuluje otazky jako:
je tam nejaka voda? (1 kapka staci k odpovedi ano).
je ta sklenice plna(neexistuje pro nej skoro plna)? Zkratka tak, aby bylo mozne odpovidat ano - ne stejne jako mu to vyhodnocuje pocitac.

Programator, ackoliv je v ramci IT sveta v podstate delnicka profese, tak jiste znaky analytickeho mysleni potrebuje.

Rekl bych, ze obecne bude mezi programatory relativne malo lidi vericich (ve smyslu nejakeho nabozenstvi).

A ano, programator je clovek ktery rad vidi nejaky cil, konec, reseni problemu. Na rozdil od tech mene prirodnich vet kde 50 popsanych stranek nemusi znamenat vubec zadny zaver(ackoliv penize z grantu prozrany byly)
V zasade s tebou souhlasim. Ten bipolar zustava nekterym az do pozdni dospelosti. Je to urcitym zpusobem i profesne omezujici nebot takovy clovek neni prilis schopen nejakeho kompromisu nebo sebekritiky.
Ale nechapu co se ti na prirodnich vedach tak nezamlouva. Vetsinou tam je nejaky vysledek jako ze na zaklade statistiky a pozorovanim se dana zvirata chovaji protoze...  Nebo posledni vysledky optickych jevu kolem cerne diry jsou taky dost cool. A vice konkretni jsou vyzkumy z fyziky a chemie.

Kdysi davno kdyz jeste matematika byla na skolach modlou a jistym politickym nastrojem presvedcovani vericich na ateismus se matematika radila mezi prirodni vedy (na me byvale skole jsem kvuli tomu byl taky nejak prirazen k teto sekci neb socialismus skolstvi stale obchazi...)
Matematika spise je hromadou nejakych myslenkovych konstrukci(zjednodusenych) ktere by mely popisovat realne deje ve svete. Spis se jedna o velice abstraktni jazyk na popisovani deju. Avsak umele vytvoreny.