hirthwork 24.01.2013 16:53 mcabber

Одним из величайших шагов вперёд в джаве является отсутствие тайпдефов. int — это всегда int, и он никогда не будет от тебя прятаться под псевдонимами типа apr_status_t, ngx_err_t и пр. Читать код становится несравнимо легче

Recommended by: @Crazy_Owl, @zw0rk
1. Crazy_Owl 24.01.2013 16:55 Azatoth

в этом треде будут рваться жопы плюсистов *ванга.jpg*

2. ulidtko 24.01.2013 17:34

пиздец ты тупой, категорически не согласен с оп-постом.

3. hirthworkulidtko /2 24.01.2013 17:35 mcabber

а никто и не ожидал, что ты согласишься. поэтому тебя никто и не спрашивал

4. Crazy_Owlulidtko /2 24.01.2013 17:37 Azatoth

первый пошел

5. ulidtkohirthwork /3 24.01.2013 17:38

мало того! я через пару минут смогу аргументировать.

6. ulidtkoCrazy_Owl /4 24.01.2013 17:38

в этом треде я буду не плюсистом.

7. hirthworkulidtko /5 24.01.2013 17:38 mcabber

как будто кому-то не похуй

8. Crazy_Owlulidtko /5 24.01.2013 17:39 Azatoth

как анус потушишь?

9. ulidtkoCrazy_Owl /8 24.01.2013 17:40

да // глупый вопрос, не ожидал от тебя

10. Crazy_Owlulidtko /9 24.01.2013 17:40 Azatoth

238, перелогинься

11. ulidtko 24.01.2013 17:44

http://ecn.channel9.msdn.com/events/Goin... — слайд 24:

Keep interfaces strongly typed
– Avoid very general types in interfaces, e.g.,
• int, double, …
• Object, …
Because such types can represent just about anything
– Checking of trivial types find only trivial errors
– Use precisely specified interfaces

12. ulidtkoulidtko /11 24.01.2013 17:44

(btw, советую слайды 44-45, они найс)

13. ulidtkoulidtko /11 24.01.2013 17:46

так вот. Юзая везде definition типосинонима вместо самого синонима, ты теряешь:
а) выразительность
б) гибкость кода (полиморфизм путем замены одного дефайна)

14. Crazy_Owlulidtko /11 24.01.2013 17:46 Azatoth

>very general types
>int, double
>very general
>int, double
>very general
Обосрался.

15. Crazy_Owlulidtko /13 24.01.2013 17:47 Azatoth

>б) гибкость кода (полиморфизм путем замены одного дефайна)
Гибкость кода уровня C++

16. hirthworkCrazy_Owl /15 24.01.2013 17:47 mcabber

бинарная совместимость уровня С++

17. ulidtkoCrazy_Owl /14 24.01.2013 17:55

Да, int — это very general. Интом у тебя может быть порядковый номер (индекс), может быть количество (длина в итемах), может быть степень многочлена, может быть просто принятые из ебеней 32 бита. Просто голый int может означать compile-time value. Он может означать счётчик ссылок на инстанс с атомарным инкрементом и атомарным декрементом — и недоступной остальной арифметикой. Много чего; голый int мало что говорит о *типе* переменной. По крайней мере, любой синоним говорит больше.

18. Cthulhu 24.01.2013 17:55 Miranda

И трёхэтажная неведомая ёбаная хуйня всегда останется трёхэтажной неведомой ёбаной хуйнёй.

19. ulidtkoCrazy_Owl /15 24.01.2013 17:56

иди сюда и смотри на вот эту строчку, плюсофоб ты наш: http://hpaste.org/69747#line47

кококо-кококо, зачем нам синонимы для типов? кудах

20. ulidtkoCthulhu /18 24.01.2013 17:56

снова соглашусь

21. Crazy_Owlulidtko /19 24.01.2013 17:56 Azatoth

ебать тебе бомбануло

22. ulidtkoCrazy_Owl /21 24.01.2013 17:57

вот здесь охуенные примеры ещё, прямо для самых тупых в точности то что имеется ввиду: http://en.wikibooks.org/wiki/Haskell/Typ...

23. Crazy_Owlulidtko /22 24.01.2013 17:58 Azatoth

ахаха, плюсофаг ссылается на книгу по haskell. Пойду пацанам покажу, никто не поверит ведь.

24. ulidtkoCrazy_Owl /21 24.01.2013 18:00

понимаешь?
отказываясь от синонимов типов, ты отрезаешь себе огромное подпространство исходников, в которых типы можно переименовывать; в которых есть статические переменные-типы. Через аналогию: это как програмить на прибитых гвоздями именах регистров eax, ebx, esp, esi, и т.д. — вместо того чтобы назначать им свои, удобные и понятные, имена.

25. ulidtkoCrazy_Owl /23 24.01.2013 18:01

я предупреждал. (/6)

26. ulidtkoCrazy_Owl /23 24.01.2013 18:21

во, ещё одну наглядность нашёл.

Скажем, если ты преаллокейтишь какой-нибудь массив фиксированного размера в каком-нибудь, а давайте-ка, паскале:

const MAX_PATH = 300;
type Path = array [1..MAX_PATH] of char;

— зачем ты этой константе даёшь символическое имя, MAX_PATH?
Отвечу сам: а) затем чтобы у этой сущности было ЕДИНСТВЕННОЕ место определения, которое в дальшейшем можно будет легко изменить (это называется ГИБКОСТЬ); б) затем чтобы детали реализации сущности были скрыты за АБСТРАКЦИЕЙ, и можно было бы писать циклы for i := 1 to MAX_PATH do ... — пользуясь ею и не переживая за (будущие) изменения, скрытые под ней.

И тут же второй вопрос: зачем ты этому ТИПУ даёшь символическое имя, Path?
Ответ: затем же. Чтобы можно было в функциях параметры писать, не задаваясь деталями того, как реализован тип. (или выстраивать устойчивые иерархии вложенных типов данных, этц)

procedure chdir(target: Path);

Синонимы типов — очень простой, но крайне важный механизм абстракции данных. То, что в жабе его нет — это позорнейший ОТСОС, ДНИЩЕ и говноедство.

27. ulidtkoulidtko /26 24.01.2013 18:24

и если вы меня ещё не подогреете — то я ничего больше писать не буду.

тащемта, и так уже всем понятно, кто соснул итт.

28. hirthworkulidtko /27 24.01.2013 19:33

паяльничком себя подогрей

29. DZhon 25.01.2013 05:05 Miranda

Плохо зделоли: нет unsignedю

30. DZhonDZhon /29 25.01.2013 05:11 Miranda

ИТТ не соснул только @ulidtko. Типы должны ограничивать домен, а более того, во всех нормальных языках можно юзать dependent types (даже в тамком говне, как плюсы).

Do you really want to delete ?