ulidtko 25.04.2012 12:13

#include-ы посреди файла, посреди определений функций D:

1. magog 25.04.2012 12:13 Azoth@Work

это где? в этом свиче ?

2. werehuman 25.04.2012 12:13 Psi+

а в питоне это норм

3. magogwerehuman /2 25.04.2012 12:14 Azoth@Work

что как бы намекает =)

4. werehumanmagog /3 25.04.2012 12:14 Psi+

на самом деле include и import работают немного по-разному, так что там это приемлемо

5. magogwerehuman /4 25.04.2012 12:14 Azoth@Work

а что делает import?

6. ulidtkomagog /1 25.04.2012 12:15

не важно где

это мне вообще воображение рисует, если что.

7. magogulidtko /6 25.04.2012 12:15 Azoth@Work

ааа. :-(

8. werehumanmagog /5 25.04.2012 12:17 Psi+

там модули. По сути import создаёт в локальном контексте объект с именем модуля, методы и свойства которого — всё, что описано в импортированном файле. Ну ещё некоторые манипуляции с пространством имён есть. То есть даже если в модуле при инициализации выполняется какой-то код, если ты сделал import двести раз подряд, то весь код в импортируемом файле выполнится только один раз.

А в С++, как и в PHP, include — это по сути команда скопипастить один кусок файла в другой. Гораздо более низкий уровень абстракции.

9. magogwerehuman /8 25.04.2012 12:18 Azoth@Work

да. Но гарды как раз делают то, что и твой импорт

10. werehumanmagog /9 25.04.2012 12:19 Psi+

ты про ifdef module_name? Да, они для этого. И в таком случае include ничем не отличается от import. Но тогда и смысла писать include в середине файла нету, это в питоне смысл есть, потому что язык динамический и там это один из способов оптимизации

11. magogwerehuman /10 25.04.2012 12:19 Azoth@Work

понятно

12. ulidtkowerehuman /8 25.04.2012 12:20

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

13. werehumanulidtko /12 25.04.2012 12:20 Psi+

namespaces + guards = module

14. werehumanwerehuman /13 25.04.2012 12:20 Psi+

по названию конечно нет, но по факту да

15. ulidtkowerehuman /13 25.04.2012 12:22

нет. Ты забыл еще как минимум маппинг в фс.

16. ulidtkoulidtko /15 25.04.2012 12:23

в любом случае, абстракция есть абстракция, и в случае с модулями это абстракция из разряда нужных.

17. werehumanulidtko /15 25.04.2012 12:24 Psi+

это достигается как раз теми соглашениями

18. werehumanulidtko /15 25.04.2012 12:24 Psi+

и да, у меня бугурт от умышленных американизмов. Ты мне мозги пытался запудрить понятием "маппинг в фс"? Надеялся, что я не догадаюсь, что ты говоришь о структуре файлов в проекте, что я подумаю какой ты крутой?

19. werehumanwerehuman /18 25.04.2012 12:25 Psi+

я вообще под маппингом мог понять функцию map и долго думать, что за фигню ты сказал.

20. magogwerehuman /18 25.04.2012 12:26 Azoth@Work

двачую. Это частично говорит о скудости владения своим родным языком

21. werehumanmagog /20 25.04.2012 12:27 Psi+

у него русский не родной как бы, так что норм. Но у меня бугурт

22. arts 25.04.2012 12:29 Psi+

Похапе вей.

23. DZhonwerehuman /13 25.04.2012 12:41

Ты забыл еще соглашения о выравнивании структур, размере базовых типов, etc. Т.е. практически, непротиворечивую и полную спецификацию ABI.

24. werehumanDZhon /23 25.04.2012 12:42 Psi+

о таких нюансах я даже не знаю

25. DZhon 25.04.2012 12:44

Кстати, по топику,-- инклуды в конце файла вполне неплохая практика, если ты костыляешь какой-нибудь autolink для шиндовс (#pragma lib).

#define LIB_NAME "mylib"
#include "autolink_helper.h"
#undef LIB_NAME

В начале файла помещать такое говно — значит заставлять в 99% случаев читателя интерфейса пролистывать этот кусок.

26. werehumanDZhon /25 25.04.2012 12:45 Psi+

я в qt moc-файлы цеплял инклюдами в конце, когда у меня непонятные баги с линковкой были.

27. ulidtkowerehuman /17 25.04.2012 13:18

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

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

28. ulidtkowerehuman /18 25.04.2012 13:29

"файловая система" — американизм?

нет, я не только о структуре файлов в проекте. Проектов может быть много, как и работающих над ними команд. Тебя не должно волновать, какие хэдеры либы L ты можешь подключать, а какие "приватны". Точно так же тебя не должны волновать include paths, внутренние для этой либы, по крайней мере не настолько чтобы ебаться с билдсистемой по этому поводу.

tl;dr подумай о /usr/share/python/dist-packages и /usr/include, проекты здесь ни при чем

29. ulidtkomagog /20 25.04.2012 14:33

у меня два родных языка, в работе использую третий. В данном случае меня волнует обусловленный непониманием бугурт верехумана, и не волнует твой ололо-патриотический.

30. magogulidtko /29 25.04.2012 14:35 Azoth@Work

это не мой ололо-патриотический, а нормальный взгляд на вещи. Если ты не можешь высказаться нормально на родном языке и тебе надо вставлять американские слова — то это говорит только о твоем словарном запасе

31. ulidtkowerehuman /26 25.04.2012 15:09

норм.

32. werehumanulidtko /31 25.04.2012 15:10 Psi+

был бы дедфуд в треде — он бы назвал меня тупой питоноблядью. Магог сегодня в хорошем настроении и не троллит тебя. Это не норм, srsly.

33. werehumanwerehuman /32 25.04.2012 15:10 Psi+

*не троллит меня

34. ulidtkomagog /30 25.04.2012 15:11

... или же о проигрыше по выразительности одного языка другому в конкретной языковой ситуации.

35. ulidtkowerehuman /32 25.04.2012 15:11

в рамках того, что плюсцы говно — норм :)

36. DZhonwerehuman /26 25.04.2012 15:38

Костыли же, да ты и сам, наверное, понимаешь.

37. DZhonulidtko /35 25.04.2012 15:41

38. ulidtkoDZhon /37 25.04.2012 15:59

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

АРЦ ПОЧИНИ

39. magogwerehuman /33 25.04.2012 16:21 Azoth

у магога болит голова и он сегодня няша :-(

40. werehumanmagog /39 25.04.2012 16:22 Psi+

ах вот оно тчо

41. 238328werehuman /13 25.04.2012 17:39

импорт работает не только с модулями(единичные файлы), но и с пакетами, а там уже свои фичи
Да и вообще: http://docs.python.org/dev/library/imp.h...

42. dorfe 25.04.2012 21:21

char [] kortinko =
{
#include "goatse.txt"
};

43. dorfedorfe /42 25.04.2012 21:26

по-шарпейски написал, ну да похуй

Do you really want to delete ?