0xd34df00d 14.08.2012 17:59 Azoth_primary

QTabBar *NavBar_;
QListWidget *NavButtons_;
Оба класса наследуются от QWidget.

QWidget *widget = useTabs ? NavBar_ : NavButtons_;
Хуй там.

Recommended by:

@pooq: моча съела говно

and @ulidtko
1. gelraen 14.08.2012 18:00

qobject_cast?

2. 0xd34df00dgelraen /1 14.08.2012 18:00 Azoth_primary

Тут и статик-каста хватит, ибо апкаст по иерархии.

3. hirthwork 14.08.2012 18:06 mcabber2214D5B2

и? апкаст сделать западло?

4. 0xd34df00dhirthwork /3 14.08.2012 18:07 Azoth_primary

Да.

5. hirthwork0xd34df00d /4 14.08.2012 18:08 mcabber2214D5B2

а какого хуя тогда не auto widget = ... написано?

6. 0xd34df00dhirthwork /5 14.08.2012 18:09 Azoth_primary

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

7. hirthwork0xd34df00d /6 14.08.2012 18:10 mcabber2214D5B2

напиши плугин к гоцацэ, который будет уметь разруливать подобные ситуации. ты ведь любишь плагины

8. zz 14.08.2012 18:11

Плохой язык. Баш лучше, в нём нет таких пробем.

9. 0xd34df00dzz /8 14.08.2012 18:12 Azoth_primary

Нет типов — нет проблем, да.

10. zz0xd34df00d /9 14.08.2012 18:13

Тип есть!

11. zz 14.08.2012 18:22

Есть красивое решение

QWidget *widget = useTabs ? NavBar_ : true ? NavButtons_ : widget;

12. hirthwork 14.08.2012 18:24 mcabber2214D5B2

интересно, какого поведения ты ожидаешь, если у двух классов найдётся два общих предка в разных линиях наследования

13. 0xd34df00dhirthwork /12 14.08.2012 18:35 Azoth_primary

И даже тут система типов плюсов соснула, как ты видишь.

14. 0xd34df00dzz /11 14.08.2012 18:36 Azoth_primary

Не, это пиздец какой-то.

15. hirthwork0xd34df00d /13 14.08.2012 18:37 mcabber2214D5B2

пока я вижу только как ты соснул.

16. bormanhirthwork /7 14.08.2012 20:50

> плугин к гоцацэ
А ты добрый.

17. ulidtko0xd34df00d /9 14.08.2012 22:39 lunatic asylum

> нет типов
какое распространённое заблуждение о динамической типизации!

>>> x = 42
>>> x()
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'int' object is not callable

> TypeError
> Type
> Error
> Type

18. gelraenulidtko /17 14.08.2012 22:41

о чём ты вообще? тут про питон или динамическую типизацию никто и не вспоминал.

19. ulidtkogelraen /18 14.08.2012 22:42

нет, вспоминали, /8, /9.

20. 0xd34df00dulidtko /19 14.08.2012 22:43 Aedalus

Говорили о статической типизации. Причем тут питон с его динамическим кококо?

21. gelraenulidtko /19 14.08.2012 22:43 imax

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

22. gelraenulidtko /19 14.08.2012 22:44 imax

по-моему ты просто слишком озабочен питоном...

23. ulidtkogelraen /21 14.08.2012 22:48 lunatic asylum

ох не пизди, в нормальных (юзабельных) шеллах есть даже асоциативные массивы

24. ulidtkogelraen /22 14.08.2012 22:48 lunatic asylum

у меня просто ещё не высохли волосы и мне скучно

25. gelraenulidtko /23 14.08.2012 22:50 imax

ну тогда шеллом почти что угодно обозвать можно :3 в /8 таки говорится о bash, но я без понятия что там из типов данных есть (да-да, я сраный неосилятор)

26. ulidtko0xd34df00d /20 14.08.2012 22:50

> Плохой язык. Баш лучше, в нём нет таких пробем.

при том, что статикобляди ВНЕЗАПНО соснули у динамикобогов :cf:

27. gelraenulidtko /24 14.08.2012 22:50 imax

ты хуй.

28. ulidtkogelraen /25 14.08.2012 22:50

ну вот в баше асоциативные (и обычные) массивы и есть. Так что не пизди мне тут про строки.

Вот в тикле — да, строки.

29. 0xd34df00dulidtko /26 14.08.2012 22:51 Aedalus

Ты упорот.

30. gelraenulidtko /26 14.08.2012 22:51 imax

на следующую днюху тебе надо подарить чай для похудения.

31. ulidtkogelraen /27 14.08.2012 22:51

ты

32. 0xd34df00dgelraen /30 14.08.2012 22:51 Aedalus

Питон для поблядения.

33. ulidtkogelraen /30 14.08.2012 22:51

поздно, DOEN by @jtootf

34. ulidtko0xd34df00d /32 14.08.2012 22:51

тоже DOEN, лол.

35. gelraenulidtko /28 14.08.2012 22:52 imax

в sh таки строки, а про bash я уже сознался что не знаю.

36. gelraenulidtko /33 14.08.2012 22:52 imax

fuck

37. ulidtkogelraen /36 14.08.2012 22:58

ничего, твой подарок тоже охуенный :3

38. kbulidtko /17 15.08.2012 06:20

Это не ошибка типизации, это в рантайме выкинутое исключение, волею судьбы названное TypeError. Ты тоже можешь выкинуть его где угодно, но типизацией у меня это язык не поворачивается называть.

39. gelraenulidtko /37 15.08.2012 09:16 imax

но чая подаренного @jtootf'ом тебе явно оказалось мало

40. ulidtkokb /38 15.08.2012 10:41 lunatic asylum

wait a minute. С философией названий мы можем далеко зайти.
Ты отрицаешь, что там в рантайме есть типы?

41. 0xd34df00dulidtko /40 15.08.2012 10:41 Azoth_primary

В этом вашем петушоне же в рантайме можно добавлять-удалять методы какие-нибудь, да?

42. hirthwork0xd34df00d /41 15.08.2012 10:46 mcabber889C84D9

хуй с ними, с методами. они поля добавляют-удаляют на лету

43. 0xd34df00dhirthwork /42 15.08.2012 10:48 Azoth_primary

Кококо.

44. ulidtko0xd34df00d /41 15.08.2012 10:53 lunatic asylum

да, можно. «Тип» при этом меняется просто :cf:
Вроде эдакий каст, но только не ради тайпчекера, а по делу.

45. kbulidtko /40 15.08.2012 10:55 04a3831c

если честно, я себе достаточно давно ломаю голову над тем, что же такое "типы в рантайме". то есть это ведь совершенно не то, чем типы являются в философском (ну ок, моем интуитивном) понимании, а это лишь "метка", которая навешивается на данное, и рантаймом же проверяется всё, что он захочет. эдакий type-tags обыкновенный. но это ведь (type-tags) скорее о динамической диспетчеризации, а не о типизации в привычном мне виде.

46. kb0xd34df00d /41 15.08.2012 10:56 04a3831c

можно в цикле метаклассы создавать. ну и хуй?

47. gelraenkb /45 15.08.2012 10:57 imax

SURPRISE! при статической типизации это тоже просто метка для кучки байтиков, только её ещё компилятор проверяет.

48. kbhirthwork /42 15.08.2012 10:57 04a3831c

всё так. иногда это стреляет в ногу, иногда помогает.

49. kbgelraen /47 15.08.2012 10:58 04a3831c

собственно, для меня разница в том, что не только "компилятор проверяет", но и "можно строить рассуждения о корректности программы, и операций над типами (их слияние, поглощение, объединение и прочая хуйня)". понимаешь?

50. gelraenkb /49 15.08.2012 11:00 imax

собственно, никто не мешает делать то же самое и при динамической типизации, только это сложнее

51. 0xd34df00dulidtko /44 15.08.2012 11:01 Azoth_primary

Хуита.

52. 0xd34df00dkb /45 15.08.2012 11:01 Azoth_primary

Не хуита, нормик сказал.

53. 0xd34df00dgelraen /47 15.08.2012 11:01 Azoth_primary

Так рано или поздно все равно все — типизация, ибо что-нибудь да проверит. Херовый дефинишен.

54. 0xd34df00dgelraen /50 15.08.2012 11:02 Azoth_primary

Мешает halting problem.

55. ulidtko0xd34df00d /54 15.08.2012 11:02 lunatic asylum

что ты несёшь

56. 0xd34df00dulidtko /55 15.08.2012 11:02 Azoth_primary

Питонобляди не понять. Напиши еще один декоратор да сосни гвидца.

57. gelraen0xd34df00d /54 15.08.2012 11:03 imax

а при статической типизации не мешает, да?

58. ulidtko0xd34df00d /56 15.08.2012 11:03 lunatic asylum

покукарекай мне тут

59. ulidtkogelraen /57 15.08.2012 11:04 lunatic asylum

да он просто со знающим видом спизданул крутой термин, хвост распустил и расхаживает.

60. 0xd34df00dgelraen /57 15.08.2012 11:04 Azoth_primary

Система типов языка не обязана быть тьюринг-полным языком.

61. 0xd34df00dulidtko /59 15.08.2012 11:04 Azoth_primary

Поумерь свой бугурт уже.

62. gelraen0xd34df00d /60 15.08.2012 11:05 imax

а при чём здесь динамическая/статическая типизация?

63. ulidtko0xd34df00d /60 15.08.2012 11:05 lunatic asylum

лолда, система типов должна ограничивать программиста так, чтобы время на написание кода / тайпчекинг разделялось ПРИМЕРНО ПОРОВНУ

64. ulidtko0xd34df00d /61 15.08.2012 11:05 lunatic asylum

поумерь чсв

65. 0xd34df00d0xd34df00d /60 15.08.2012 11:06 Azoth_primary

Хотя, впрочем, иногда бывает. Отсюда получаем темплейты в плюсах и счастье с ними, отсюда же довольно тривиальные факапы в System F и и ей подобных, которые решаются усилением системы типов и усложнением тайпчекера, но далеко не все.
Зато можно численно интегрировать на тайпчекере.

66. ulidtko0xd34df00d /65 15.08.2012 11:06 lunatic asylum

всё, пиздец, я не могу это читать.

67. 0xd34df00dgelraen /62 15.08.2012 11:06 Azoth_primary

Мы говорили про статический анализ кода для проверки корректности программы, нет?
Или как ты предлагаешь доказывать корректность программы с такой-то динамической типизацией, кроме КОКОКО ПРИШЛО ВРЕМЯ НАПИСАТЬ ЕЩЕ ТЕСТОВ?

68. 0xd34df00dulidtko /66 15.08.2012 11:06 Azoth_primary

БУГУРТ ГЛАЗА ЗАСТЛАЛ

69. 0xd34df00dulidtko /63 15.08.2012 11:08 Azoth_primary

Еще один все понял
!

70. ulidtko0xd34df00d /67 15.08.2012 11:09

хватит уже под статическим анализом подразумевать исключительно проверку типов. Есть ещё data flow analysis, есть символическое исполнение и прочее.

71. ulidtko0xd34df00d /68 15.08.2012 11:09

саси

72. 0xd34df00dulidtko /70 15.08.2012 11:11 Azoth_primary

Расскажи мне про символическое исполнение.
И я не подразумеваю исключительно проверку типов. Просто без нее никуда. Ты опять путаешь необходимое и достаточное?

73. ulidtko0xd34df00d /72 15.08.2012 11:13 lunatic asylum

> проверку типов. Просто без нее никуда.
олололоол, а мне было уже показалось, что ты наконец спустился до содержательной дискуссии.
> без нее никуда.
как насчёт тикля или js?

74. 0xd34df00dulidtko /73 15.08.2012 11:14 Azoth_primary

А што насчет них? Они оба говно. Вон, не зря в dart водят что-то статикоподобное, и в v8 пытаются выводить метки во время этакой конпеляции.

75. ulidtko0xd34df00d /72 15.08.2012 11:15 lunatic asylum

алсо, почитай что-нибудь о внутренностях PyPy, мне ехать надо

76. ulidtko0xd34df00d /74 15.08.2012 11:16 lunatic asylum

то, что они говно — не принципиально. Главное, что мы оба о них знаем, и что в них практически нет проверок типов, без которых «никуда».

77. 0xd34df00dulidtko /75 15.08.2012 11:21 Azoth_primary

Да ты же и так уже ПОЕХАВШИЙ.

78. 0xd34df00dulidtko /76 15.08.2012 11:21 Azoth_primary

Блядь, я говорил, что для статического анализа без проверок типов никуда, нахуй ты там квантор всеобщности поставил?

79. kbgelraen /50 15.08.2012 11:53 04a3831c

объяснюсь на более конкретном примере: в статической типизации тип — это не только тег для диспетчеризации, но и набор методов и свойств (возможно он им не является, но всегда при статической типизации имеются проверки компилятора о доступе к несуществующему полю и т.п.).

то есть, при статической типизации — взятие отсутствующего свойства у объекта (или вызов несуществующего метода) — это ошибка типизации, в то время, как в динамическом ЯП взятие свойства у объекта — точно такая же динамическая функция, которая может выкинуть TypeError, может не выкинуть и вообще как захочет так себя и ведёт. то есть по сути можно сказать, что тип никак не несёт в себе информацию о полях/свойствах. на этом моменте у меня голова и ломается, мол, и там типизация, и там типизация, но в реальности понимаешь, что в динамических ЯП она попросту отсутствует (ну, точнее присутствует только в качестве type tags).

а про halting problem — да, хуйню дедфуд какую-то несёт, но аналогию унюхать можно.

80. kb0xd34df00d /72 15.08.2012 11:55 04a3831c

> И я не подразумеваю исключительно проверку типов. Просто без нее никуда. Ты опять путаешь необходимое и достаточное?

а вот это — полная хуйня. про "КОКОКО БЕЗ ПРОВЕРКИ ТИПОВ НИКУДА". просто нужно понимать, что иногда типы скорее мешают, нежели помогают. и иметь дешёвую возможность на время теста подменить вызов методов с сайд-эффектами, или же у объекта сделать хитрый __get__ иногда очень даже клёво.

81. kbulidtko /75 15.08.2012 11:55 04a3831c

не понял, при чем здесь?

82. kb0xd34df00d /65 15.08.2012 11:56 04a3831c

извольте, уж лучше лисп и макросы.

83. kbkb /48 15.08.2012 12:11 04a3831c

но вообще, если смотреть на объект как на функцию, замыкающую внутри себя состояние (и возвращающую функцию-диспетчер сообщений) — уверен, что дальнейший вызов define внутри неё считался бы крайне плохим тоном (в отличии от set! (присвоения)) и даже сложен для прочтения / восприятия, в то время как в ООП, присутствующем во всяких там питонах, в которых в инициализаторе ты делаешь self.foo = 'bar', наоборот как бы подталкивает "ну давай, добавь потом еще чего-нибудь в рантайме". ну а в купе с питоновской привычкой (большинства ORM) хитро запихивать всё в статические дескрипторы (о которых мало кто знает, и которые уже дальше работают с self'ом, но простой программист Вася этого не видит, потому потом еще и городит туда же статические переменные, которые предназначались быть прибинджены к объекту, а не классу)

что-то вроде:
class Person(Model):
name = StringField()
foo = '' # ← а надо было в __init__ сделать self.foo = ''

короче я давно уже считаю, что в питоне надо было этот синтаксис оставить для self.foo-свойств всяких там, а для членов класса придумать что-то иное. тогда бы докидывали атрибуты вообще крайне редко.

84. techpriestulidtko /63 15.08.2012 12:31 tkabber

Я сейчас думал, как бы поехидней на это ответить и внезапно грокнул CLOS. Спасибо.

85. ulidtkokb /81 15.08.2012 12:32

там статический анализ питонокода. Говорят, оче хороший, во всяких частных случаях догоняет сишечку.

86. kbulidtko /85 15.08.2012 12:33 04a3831c

там нет никакого питона, это RPython, который является его сильно подмножеством. или ты про jit-компиляцию вообще?

87. ulidtkokb /86 15.08.2012 12:48

ну да, там RPython и всё такое, но он же делает неплохой такой whole program analysis. Скажем, счётчики в простых циклах превращает в нативные инты, и т.п.

88. kbulidtko /87 15.08.2012 12:53 04a3831c

чё? еще раз, счётчики в простых циклах превращает в нативные инты их tracing jit, при этом ни о каком статическом анализе речь не идёт. речь идёт об анализе интерпретатора (написанного на статически-типизированном ЯП RPython, затем транслирующимся в код на Си), при этом в местах, где эта самая переменная (int) может поменять тип (и вообще везде где нужно) аккуратно расставляются guard'ы, при недостижении которых все эти оптимизации посылаются нахуй и интерпретатор возвращается к старому доброму медленному интерпретатору. короче говоря это всё про jit'ы хуё-моё, но никак не про статическую типизацию. ну и whole program analysis там нету, там вообще program analysis происходит не по отношению к твоей питонопрограмме, а по отношению к интерпретатору, написанному на RPython'е.

89. ulidtkokb /88 15.08.2012 12:56

аааа. епт. Tell me moar.

90. 0xd34df00dkb /80 15.08.2012 12:57 Azoth_primary

Хуита.

91. kbulidtko /89 15.08.2012 12:57 04a3831c

да я лох, лучше почитай сам их на readthedocs и на ютубе глянь.

92. 0xd34df00dkb /79 15.08.2012 12:58 Azoth_primary

Кстати, да. Stringly-typed можно писать хоть на х-ле.

93. kb0xd34df00d /92 15.08.2012 13:04 04a3831c

ну канэшно. и иногда, наверное, даже нужно.

94. ulidtko0xd34df00d /90 15.08.2012 13:24

дедфудота.

95. ulidtko 15.08.2012 13:24

кстати, Паша просил передать, что плюсы говно.

96. kbulidtko /95 15.08.2012 13:24 04a3831c

Паша — это Crazy Owl?

97. ulidtkohirthwork /12 15.08.2012 13:26

ожидаю диагностики CANNOT RESOLVE AMBIGUITY; и компилирующегося кода в случаях отсутствия неоднозначности, как в /0.

98. ulidtkokb /96 15.08.2012 13:26

нет :3

99. 0xd34df00dulidtko /95 15.08.2012 13:32 Azoth_primary

Передай Паше, что он мог бы просто пройти мимо.

100. 0xd34df00dulidtko /94 15.08.2012 13:32 Azoth_primary

R.

101. 0xd34df00dulidtko /97 15.08.2012 13:33 Azoth_primary

Я про то же уже писал.

102. ulidtko0xd34df00d /99 15.08.2012 13:44

да сколько уже можно батхертить, дедфуд. Почему ты такой злопамятный?

103. 0xd34df00dulidtko /102 15.08.2012 13:45 Azoth_primary

Я не бугурчу, я просто пользуюсь его же логикой. Зачем передавать, что плюсы говно, когда можно просто пройти мимо?

104. ulidtko0xd34df00d /103 15.08.2012 13:45

ты именно что бугуртишь.

105. 0xd34df00dulidtko /104 15.08.2012 13:45 Azoth_primary

Зачем ты такой примитивный?

106. ulidtko0xd34df00d /105 15.08.2012 13:45

што

107. 0xd34df00dulidtko /106 15.08.2012 13:46 Azoth_primary

То.

108. ulidtko0xd34df00d /107 15.08.2012 13:46

> То.
кто примитивный — ты примитивный, епт.

я просто улиточка, мне можно :3

109. 0xd34df00dulidtko /108 15.08.2012 13:49 Azoth_primary

Ну у тебя кроме бугурта других эмоций нету просто, вот и примитивный. Да, хоть я и уважаю Пашу как программиста и музыкоёба, его позиция в отношении социальных интеракций мне не импонирует, и я ему лишний раз показываю ее абсурдность.
Схлопывать это со всеми оттенками в слово «баттхерт» — примитивно.

110. 2383280xd34df00d /41 15.08.2012 15:09

нет, только на этапе компиляции

111. 238328kb /46 15.08.2012 15:12

АБСТРАКТНЫЕ БАЗОВЫЕ МЕТАКЛАССЫ

112. kb238328 /111 15.08.2012 15:12 04a3831c

например. а можно вообще отрендерить темплейт, а потом скомпилировать и выполнить.

113. 238328gelraen /47 15.08.2012 15:12

а в питоне вообще никто ничего не проверяет и всем норм

114. 238328ulidtko /63 15.08.2012 15:15

ты забыл про БУЛЬОН^W%another_programming_cool_buzzword_here%

115. ulidtko0xd34df00d /109 15.08.2012 15:16

нихуя, есть :3

116. 238328kb /79 15.08.2012 15:16

цитата_из_матрицы.тхт

117. ulidtko238328 /114 15.08.2012 15:16

> бульон
> buzzword
што.

118. kb238328 /116 15.08.2012 15:17

которая именно?

119. ulidtkokb /118 15.08.2012 15:20

он не скажет, слишком илитарий

120. 238328kb /118 15.08.2012 15:22 1432567391134540624445329

которая более всех сюда подходит

121. kb238328 /120 15.08.2012 15:24 04a3831c

ну хотя бы кто сказал?

122. 238328ulidtko /119 15.08.2012 15:24 1432567391134540624445329

слишком гельминтарий

123. ulidtko238328 /122 15.08.2012 15:25

ЧЕРВЬ

124. 0xd34df00dulidtko /123 15.08.2012 15:25 Azoth_primary

ЧРЕВ

125. ulidtko0xd34df00d /124 15.08.2012 15:25

ВЕЧР

126. 238328kb /121 15.08.2012 15:28 1432567391134540624445329

человек за компьютером

127. 2383280xd34df00d /124 15.08.2012 15:29 1432567391134540624445329

Чiрвь!

128. ulidtko238328 /127 15.08.2012 15:30

Хробак!

алсо, у тебя плохая, неправильная і.

Do you really want to delete ?