@interface: o, jednak nie tylko ja marudzę na javę 9 i to jak popsuli refleksje ;/ Nie da się nawet z klasy proxy wywoływać domyślnych implementacji metod.
Na razie to obchodzę za pomocą unsafe, ale to słabe rozwiązanie bo w końcu unsafe też chcą wywalić...
Wszystkie refelksje na klasach javy są zablokowane, np nie da się już edytować finalnego pola.
@interface: na refleksjach połowa świata stoi, większośc libek używa, każdy serwer używa, wszystko tego używa. Ba, nawet java trochę tego używa sama na sobie ;)
Wszystko zależy jak tego używasz, bo wyobraź sobie taką javę EE bez żadnych refleksji, adnotacji :D
3-wymiarową przestrzeń chyba każdy zna i jako-tako ogarnia. Mało kto jednak ogarnia 4- i więcej wymiarowe przestrzenie. #matematyka sobie z tym radzi bez większych problemów, ale czy ktoś kiedyś widział 4-wymiarowy obiekt...? No, to teraz macie szansę ;)

Stworzyłem już dosyć dawno (a parę dni temu wskrzesiłem) projekt, w którym można pozwiedzać 4-wymiarowy świat. Ten projekt to 4-wymiarowy labirynt. Chodzi w nim o to, aby przejść przez zestaw tuneli i dotrzeć
Rust dla (t)opornych

Część 2. Ale, że jak bez Gówno Czujki?

W poprzedniej części dałem krótki opis czym Rust wyróżnia się na tle innych języków. Dzisiaj postaram się bardziej szczegółowo omówić system typów oraz powiązany z nim lifetime.

Rozdział 1. Typy podstawowe

Rust posiada parę typów, które są wbudowane i podstawowe (co chyba oczywiste):

+ typy całkowite ze znakiem: i8, i16, i32 i i64
+ typy całkowite bez znaku: u8
Rust dla (t)opornych

Część 1. Po kiego chu… grzyba, czyli co wyróżnia Rusta z pośród reszty.

Już jakiś czas temu napisałem wpis na Mirko gdzie porównywałem Rusta i parę innych "nowoczesnych" języków, tutaj się trochę rozpiszę i przy okazji dam małe wprowadzenie co i jak.

Rozdział 1. Niezmienność jest domyślna

W językach takich jak C, C++, C#, Java niezmienność jest wyborem. Wszystkie zmienne są w domyśle mutowalne. Ma to swoje zalety jako,
@Hauleth: N3797, §4.7/2 [conv.integral]:

If the destination type is unsigned, the resulting value is the least unsigned integer congruent to the source integer (modulo 2^n where n is the number of bits used to represent the unsigned type). [ Note: In a two’s complement representation, this conversion is conceptual and there is no change in the bit pattern (if there is no truncation). —end note ]

tl;dr: dodajesz lub odejmujesz
KrzaQ2 - @Hauleth: N3797, §4.7/2 [conv.integral]:
 If the destination type is unsigne...

źródło: comment_C8PnNdVCot3APj1U2mmCTb4Kr5mzTr8q.jpg

Pobierz
@KrzaQ2: Nie ma narzuconego mnoznika przy zwiekszaniu rozmiaru wektora (poza takim, ze k>1). Jezeli dobrze pamietam, VS uzywa k=1.5, gcc k=2. Natomiast co do domyslnego rozmiaru poczatkowego vektora, to nie spotkalem sie z innym niz 1 po pierwszym push_backu.
Ostatnio gdzieś trafiłem na opinię (chyba nawet na mirko):

Nie rozumiem, czemu wszyscy się tak jarają Go czy innymi nowymi językami,

skoro nisza jest już zajęta. Nie ma takiej rzeczy jakiej C++ nie zaimplementuje

w kolejnej wersji standardu.


Słowa mogą byś trochę inne, bo piszę z pamięci.

W związku z tym postanowiłem zrobić porównanie między #jezykc, #cplusplus, #go
i #rustlang.

Wołam jeszcze #programowanie, bo inni mogą też być
Hauleth - Ostatnio gdzieś trafiłem na opinię (chyba nawet na mirko):

 Nie rozumiem,...

źródło: comment_RUfc3dgtOJczYBlwsrFNdD5iUWEm90XO.jpg

Pobierz
@Hauleth: To jeszcze gorzej, widziałem (własny) kod w C++ gdzie naduƶywałem auto. Nie polecam. Poza tym, co z niejawną konwersją (np. Derived* do Base*)? Rozumiem, ƶe nie wszędzie trzeba uƶywać, ale dla czytelności to jednak często istotne, a wtedy #!$%@? mnie syntax :P

Rusta i tak bankowo sobie sprawdzę, bo pomijając to co powiedziałem zapowiada się fajnie, ale syntax jest dla mnie problemem, a patrząc na juƶ istniejący kod
@KrzaQ2: Rust (jak na razie) nie ma niejawnych konwersji nawet f64 ↔ f32 więc nie ma z tym problemu. Tym bardziej, że jak wspomniałem nie ma dziedziczenia.

Co do auto a HMTS to to są zupełnie dwa różne światy. w C++ typ jest ustalany "w miejscu", co znaczy, że jak przypiszesz auto a = 10; to to będzie int nie ważne co będziesz robił, natomiast w Ruscie jak zrobisz let a
Rust, an Anti-Sloppy Programming Language

Several new programming languages emerged recently. Among them, Rust particularly interests me. In this blog, I’m going to share my impressions of Rust, and compare it with some other programming languages.

https://arthurtw.github.io/2014/12/21/rust-anti-sloppy-programming-language.html

http://en.wikipedia.org/wiki/Rust_%28programming_language%29

http://www.rust-lang.org/

#programowanie #rustlang

#msqspam
@Rev: Po prostu jest to symbol nowych czasów. Właśnie brak NULLa jest największą zaletą Rusta jako języka do programowania systemowego. Option oraz Result razem z pattern matchingiem to rozwiązanie idealne, bo daje Ci możliwość zwracania "wyjątków" na najniższym możliwym poziomie bez śledzenia stacktrace czy innych skomplikowanych bzdur jak w C++ (np. niektóre projekty mają całkowity zakaz używania wyjątków jako, że nie są wszędzie wspierane).

Co do immutablity by default to może
@JURCZ91: No raczej nie podsumuje lepiej niż autor w ostatnim poście.

No ale coś dorzucę:

- W Go się dużo zmieniło od czerwca 2013, więc jest lepiej (z tego co się orientuję), ale dalej byłby nisko pod względem wymagań tego projektu.

- Autor mocno nakierował się na statyczne typowanie i nutę funkcjonalnego programowania, co zaburzyło obiektywność porównania, ale po prawdzie to ono wcale nie miało być obiektywne, tylko subiektywne do bólu.