qw
Ambitny: CZY KTOŚ O TEJ GODZINIE ZNA JAVASCRIPT? MAM JEDNO KRÓTKIE PYTANIE
22 lis 23:46
jc: No to pytaj, może akurat ...
23 lis 00:03
Dziadek Mróz: pisz Panie
23 lis 00:14
bezendu:
Cześć Dziadek, długo zajęło Ci ogarnięcie js?
23 lis 00:18
Dziadek Mróz:
Tylko ogarniałem budowę poszczególnych klas, bo reszta jest jak w C#
23 lis 00:20
Ambitny: już chwilka
23 lis 00:23
23 lis 00:24
Ambitny: czy dobrze myśle @Dziadek
?
23 lis 00:25
Ambitny: u nas na uczelni muszę się uczyć 5 języków równolegle XD
więc przechodzę zarówno szybki kurs C++ jak i JS'a
23 lis 00:27
Ambitny: Dziadek, jeszcze jedna sprawa, każą nam się nauczyć x86 asm, jakieś rady, książki − gdzie jest
opisana przystępnie ta całą architektura, tak żebym nie przerabiał po nocach 5k dokumentacji?
23 lis 00:28
Ambitny: przerobiłem już mikrokontrolery 8 bitowe AVR, pobieżnie (bardzoooo) 32 bitowe mikroprocesory
AVR, ciut STM32
23 lis 00:31
Ambitny: i procesory 80x86
23 lis 00:31
Ambitny: ale ten cały x86 intelowski, to jest mega spore cholerstwo, nie takie proste, CAŁKOWICIE INNE
TRYBY ADRESOWANIA
23 lis 00:32
Dziadek Mróz:
Nie trawię ASM, ktoś na forum coś pisał, że zagryza go do śniadania
23 lis 00:33
Ambitny: haha, mam nadzieję że odpisze kiedyś, o ile w ogóle jeszcze tutaj jest
23 lis 00:33
Ambitny: no ja muszę się nauczyć większości rozkazów na pamięć
23 lis 00:34
Ambitny: a i jeszcze mam test ze znajomości SCRUMa, Agile (metody zwinne i klasyczne), znasz jakieś
dobre opracowanie, takie streszczenia streszczeń
, wiem że to brzmi naiwnie, ale siedze do 4
nad ranem i ciężko mi się wyrobić
23 lis 00:35
Ambitny: Dziadek − jak myślisz, dobrze to rozkminiłem ? link w 00:24
23 lis 00:39
23 lis 00:47
Dziadek Mróz:
Zauważyłem przy tym zadaniu, że JS działa jak Python
function a() {
alert('a');
}
var obj1 = a; // obj jest zamiennikiem funkcji a bez jej wywołania
var obj2 = a(); // obj jest tym co zwróci a, musi wywołać a
var x = 10;
function square(x) { return x*x; }
function double(x) { return 2*x; }
function fp1(f1, f2) {
function fw(value) {
return f1(f2(value));
}
return fw; // function fw(value) ...
}
function fp2(f1, f2) {
function fw(value) {
return f1(f2(value));
}
return fw(x); // fw(10)
}
var obj1 = fp1(square, double);
alert(obj1); // function fw(value) ...
var obj2 = fp2(square, double);
alert(obj2); // fw(10)
23 lis 00:54
Ambitny: do C# trochę mu daleko , tak mi się wydaje
23 lis 00:54
Ambitny: nie rozumiem, chwilka
23 lis 00:57
Ambitny: dobrze to wymyśliłeś, naprawdę
Pythona dopiero będę miał na przedmiocie AI, także dopiero za semestr się go nauczę.
23 lis 00:59
Ambitny: dziękuję Ci bardzo , mógłbyś jeszcze zerknąć na te zadanie:
23 lis 01:01
Dziadek Mróz:
obj1 jest tym samym co fw, gdyby zrobić obj1(3) to wywołasz fw(3), obj1(4) −> fw(4). obj1 jest
dynamicznym rozwiązaniem
obj2 jest statycznym rozwiązaniem bo jedyne co otrzymasz to fw(10)
23 lis 01:01
23 lis 01:03
Ambitny: funkcja anonimowa to coś takiego
var funkcja = function
23 lis 01:04
kyrtap: Dziadek jak tam leci?
23 lis 01:08
Dziadek Mróz:
Jak działa to git
23 lis 01:12
Dziadek Mróz:
Kula się powoli
23 lis 01:12
Ambitny: działa, jeszcze raz dzięki
btw. Dziadek − wykładowca?
23 lis 01:13
kyrtap: to jak kula to dobrze
Pozdro
23 lis 01:13
23 lis 01:14
Dziadek Mróz:
Tak, bo masz wektor wektorów z intami, a nie wektor 10x10 z intami
23 lis 01:18
23 lis 01:22
Ambitny: chwila, bo skopiowalem kod z cpp.sh
23 lis 01:22
23 lis 01:23
Dziadek Mróz:
v1 [ vector<int> [ ... ] | [...] | vector<int> [ ... ] ]
23 lis 01:24
Dziadek Mróz:
vector<vector<double> > v1(10, vector<double>(10));
vector<double> v;
for (double i=0; i<10; i++) {
v.push_back(i);
}
v1.push_back(v);
23 lis 01:26
Ambitny: tak, ale czemu tak w pdfie ktoś napisał
23 lis 01:27
Dziadek Mróz:
Bo gdyby tak jak Ty chcesz to:
vector<double *> v1(10);
double *v = new double[10];
for (size_t i=0; i<10; i++) {
v[i] = static_cast<double>(i);
}
v1.push_back(v);
23 lis 01:29
Dziadek Mróz:
Bo nie sprawdził kodu
23 lis 01:29
jc: Oj, Ambitny, przecież Dziadek Mróz już nasz nauczył, jak się takie rzeczy pisze.
A błąd w tekście? Spytaj autora. Może podziękuje za znalezienie usterki.
23 lis 01:29
Ambitny: ok, w każdym razie jeszcze raz dziękuje za pomoc Dziadek__Mróz
@jc, wiem że najlepiej odnieść się z tym do autora, po prostu pytam, myślałem że ma to jakiś
ukryty sens, widziałem oczywiście poprzedni post Dziadka, który tlumaczył mi to, oczywiście
przyswoiłem te informację, niemniej jednak byłem ciekawy intencji autora
23 lis 01:30
Dziadek Mróz:
Jakby sobie wpisał to dostałby error, że 2−gi argument nie jest intem tylko wektorem
error: no matching function for call to 'std::vector<std::vector<int> >::vector(int, int)'
std::vector<std::vector<int> > v1(10, 10);
^
23 lis 01:32
jc: Spytam się przy okazji o JS, bo nie zrozumiałem.
Jak zdefiniować funkcję, której argumentem będzie funkcja, a wynikiem
wartość funkcji w punkcie 3?
Jak potem wywołać taką funkcję?
23 lis 01:32
Ambitny: do definiowania funkcji służy słowo kluczowe function
function naszaFunkcja(zmienna)
{ }
funkcja ma zestaw parametrów np. naszym atrybutem jest 'zmienna'
funkcję można zapisać jako wartości (zmienna zawierająca funkcje nadal jest zwykłą zmienną,
której można przypisać inną wartość.) − taką zmienną można przekazać jako parametr funkcji
np. var zmienna = function () { console.log("wypisz cos")};
zmienna = 2;
23 lis 01:38
Dziadek Mróz:
Czek, w manualu piszą:
vector (sizetype n, const valuetype& val,
const allocatortype& alloc = allocatortype());
gdzie n to rozmiar wektora a val to kopia w każdym okienku wektora, dlatego użycie dla wektora
2d tego konstruktora wywala błąd, bo nie mamy odpowiednika dla deklarowanej zawartości,
łapiesz?
23 lis 01:40
Dziadek Mróz:
vector<int> v1(10, 10);
tworzy wektor 10−okienkowy z dziesiątkami w każdym okienku, to jest wektor 1d
vector<vector<int> > v1(10, vector<int>(10));
tworzy wektor 10−okienkowy z wektorami 10−okienkowymi w każdym okienku, bez przypisanej
zawartości
23 lis 01:43
jc: To dlaczego to nie działa?
function w(f){ return f(3);}
function h(x){return x*x;}
a = w(h);
23 lis 01:46
jc: W porządku, działa!
23 lis 01:50
Dziadek Mróz:
Działa
23 lis 01:51
23 lis 01:52
Ambitny: Dziadek,
dzięki jeszcze raz, rozumiem
23 lis 01:52
jc: Ale tu jest problem.
....
function fw(value) {
return f1(f2(value));
}
Skąd wewnętrzna funkcja wie, czym jest f1 i f2?
23 lis 01:59
Ambitny: bo wcześniej przekazujesz jako parametry funkcji f1 i f2
23 lis 02:02
jc: Przepraszam, wszystko działa (nie wpisałem argumentów). Dziekuję!
23 lis 02:03
Dziadek Mróz:
f1 i f2 to zmienne globalne dla fw
23 lis 02:03
23 lis 02:04
jc: Ambitny,
function u(x){return x*x;}
function v(x){return 2*x;}
function w(f,g){
function h(x){return f(g(x));}
return h;
}
a=w(u,v)(3); // zmieniałem kod i nie wpisałem u,v
23 lis 02:05
jc: Jeszcze raz dziękuję
23 lis 02:05
Dziadek Mróz:
No, i bardzo ładnie, fajnie że znalazłeś nazwę dla tego tworu, domknięcie
23 lis 02:08
23 lis 02:09
jc: A może wiesz, czy można zapisać Twój kod bez wprowadzania dodatkowej
funkcji, tylko tworząc ją jakoś w biegu i bez nazwy po słowie return?
Zamiast tak
function w(f,g){
function h(x){return f(g(x));}
return h; }
jakoś tak
function w(f,g){
return ? ? ? ; }
23 lis 02:26
jc: Jasne, znów głupie błędy.
function w(f,g){
return function(x){ return f(g(x)); } ;
}
23 lis 02:29
Ambitny: @jc
chciałbym stworzyć dynamicznie funkcję return i ją przekazać jako argument funkcji
23 lis 19:25
Ambitny: chciałbyś*
23 lis 19:25
jc: Ambitny, dziękuję za ostatniego linka. Przy okazji nauczyłem się, jak w biegu tworzyć
funkcje. Ten przykład działa. Co więcej, możemy go wypróbować
pisząc : a = w( function(x){return x*x;}, function(x){return 2x;} )(7);
Zrozumiałem też, jak tworzyć tablicę funkcji.
23 lis 19:31
Proszeʞ: @Ambitny, co to za uczelnia?
26 lis 18:57
Juan: Proszek,
nie powie Ci, gdyz jak sie dowiedza z uczelni, ze pracuje nad jakims projektem, to go mu
zabiora
26 lis 20:55