|
|
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
maytonDima T, собери два варианта. С "IF-GOTO" и "DO-WHILE" и посмотри ассемблерный выхлоп. Тестил на Си недавно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Релиз на асме Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. Код на асме одинаковый для for, if goto и do while ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 21:10 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Везде jne. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 21:15 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
В силу специфики ассемблера, в нём циклы, привычные в ЯП высокого уровня, бывают редко нужны, эффективные конструкции далеки от привычных представлений :)) Вот нарыл свой древнейший код для PDP-11 с претезией на оптимизацию по скорости-памяти :)) (вроде без опечаток, но не уверен...) преобразования 16-разрядного числа в строку (в десятичное число). PDP-11 (зацените алгоритм). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 22:54 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
asws, Эх! PDP-11, говоришь. Вспоминаю молодость, я на ём программы для "Бурана" писал. Навигационные системы. Таки он приземлился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 23:09 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedК примеру там где программист на C будет использовать обычный массив из структур - его коллега на C++ не дрогнув рукой заюзает хешированную мапу на темплейтах и выйграет в скорости hash table O(1) против array O(n) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 23:34 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
LepsiksocimedК примеру там где программист на C будет использовать обычный массив из структур - его коллега на C++ не дрогнув рукой заюзает хешированную мапу на темплейтах и выйграет в скорости hash table O(1) против array O(n) Нет, не выиграет. Потому что массив - это тоже O(1), только ему для доступа к элементу не надо хеш функцию считать, а можно ходить напрямую по указателю-индексу. Смешной ты, Вася. Иди букварь учи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 00:07 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
LepsiksocimedК примеру там где программист на C будет использовать обычный массив из структур - его коллега на C++ не дрогнув рукой заюзает хешированную мапу на темплейтах и выйграет в скорости hash table O(1) против array O(n) при поиске элемента по признаку можно организовать бинарный поиск и из O(n) превратить в O(log(n))... то есть проиграем в производительности в считанные разы (а учитывая что худший случай для хэш таблицы это O(n), а у нас O(log(n)) и есть худший случай, возможно и не проиграем), но выиграем в потреблении памяти (и в зависимости от хэш функции потребление может быть меньше от "в несколько раз" до "в несколько десятков раз") )) Достаточно просто добавить индексацию данному массиву. P.S. Интересно, как те, кто пишут эти статьи рассчитывают значение "в среднем O(1)"... То есть бывает и меньше? ))) Это как? посчитав хэш функцию на половину, мы уже знаем где элемент? ))) тут стоит указать "чуть более чем O(1)", а не в среднем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 00:39 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
LepsiksocimedК примеру там где программист на C будет использовать обычный массив из структур - его коллега на C++ не дрогнув рукой заюзает хешированную мапу на темплейтах и выйграет в скорости hash table O(1) против array O(n) не O(1), а O(log(n)), т.к. map бинарный поиск использует http://www.cplusplus.com/reference/map/map/?kw=map Maps are typically implemented as binary search trees. У мапа есть свои плюсы и надо их учитывать. Например надо иметь большой постоянно меняющийся массив всегда готовый к поиску. Недавно подобную проблему изучал . map оказался самым оптимальным вариантом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:31 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
aswsпричём возможности управления и выхода из цикла неограничены, в отличие от ЯП высокого уровня. И какие ограничения по управлению и выходу из цикла в ЯП высокого уровня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:39 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Dima Tне O(1), а O(log(n)), т.к. map бинарный поиск использует Слово "хеш" ты пропустил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:40 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
k0rvinDima Tне O(1), а O(log(n)), т.к. map бинарный поиск использует Слово "хеш" ты пропустил? Речь была про map, а там нет слова "хеш". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:48 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Dima Tk0rvinпропущено... Слово "хеш" ты пропустил? Речь была про map, а там нет слова "хеш". Девочки, не ссорьтесь, мы тут все теоретики и про unordered_map знаем только поди из википедии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 10:18 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimed В какой безумной галактике сказано, что ты должен использовать только то, что тебе готовое дали? Так сделайте хотя бы для абстрактного примера в начале. Если вы спросите себя почему вы так сами не делаете - вы найдете ответ на свой же вопрос (подсказка - там будет понятие стоимость). Ага только, насколько я понял, там свой отдельный препроцессор для C а не макросы на стандартном препроцессоре - так? И что с того? Сам С - это ассемблер. А транслировать в него ты можешь из чего угодно - хоть стандартным препроцессором, хоть m4 расширениями. Не вижу никаких трудностей тут. Тут никаких трудностей нет. Просто вы не додумали эту мысль дальше - тогда получается во-первых, С ч точки зрения выразительных средств ничем не лучше другого Тьюринг-полного языка. Во-вторых, с точки зрения опять таки выразительности, C убог так как не позволяет себя органично расширять. Тут еще подсказка: посмотрите н lisp и nemerle (хотя извините, вас гугление не интересует :)) F#О том и речь. Ты со своим хаскелем - чисто неандерталец - тебе кто-то дал мелкоскоп, а у тебя задач для этого мелкоскопа нет. Зато обтесывание камней и разведение огней ты делаешь этим своим мелкоскопом с поздними вычислениями, вместо того, чтоб себе заточить инструмент типа Молоток и Зажигалка. Я - то как раз не говорю что надо пользоваться только хаскелем (вы меня опять с кем-то путаете я тут про хаскель вообще не писал). Честно говоря мне трудно представить человека, который будет модифицировать молоток под себя (ну может, видел обмотанный изолентой). Я за то, чтобы сначала посмотреть на готовые молотки и дорабатывать только если есть необходимость? Странно, что ты этого в упор не видишь. Несоотвествие инструмента задаче. Вы про какую задачу и какой инструмент. И как вы точите молоток? (А особенно зажигалку) Пока ты лишь как ребенок - увидел на полу "конфету", давай в рот тянуть, пробовать всякое. А ты попробуй сначала осознать свои задачи, а потом под них найти на полу инструмент, а не сначала найти инструмент, а потом искать ему применение. Я совершенно с вами согласен. Сначала найти подходящий инструмент, а потом модифицировать там где он не подходит. Только не брать всегда один и тот же молоток, потом его точить пока не получится грубая копия фабричного ножа по цене авианосца. Можешь не искать, гугление не интересно. Если тебе сказать нечего - то тебе изначально нечего было говорить, а судорожные поиски с целью сохранить лицо - кому они нужны? Вот тут мне не понятно - если вас интересует существо дела, то не очень понятно, какая разница откуда получена иллюстрация (вы же сами хотели жизненных примеров, абстрактые у вас понять не получается). А если вам интересно мое лицо зачем вы в конце написали про смысл? Еще раз для тех, кто на бронепоезде. Ты еще раз перечитай про что я написал - ты потерял нить. C тоже написан людьми понятия не имеющими о твоих задачах - выбрасываешь C и делаешь свой собственный с учетом твоих задач! С - это лишь кроссплатформенный макроассемблер. Никогда не думал, что можно СВОЙ высокоуровневый ЯП транслировать в С, а потом уже этот на 100% нагенерированный на С код - компилировать? А так оказывается можно! Это само собой разумеется, и многие так и делают. Только это просто переводит проблему на уровень того языка из которого ты генеришь С. ООП не про байты и биты а про модульность и повторное использование. Мне кажется, что если это непонятно, то вы просто не знаете о чем говорите. Пожалуйста. Вот тебе итератов для индексов и для отдельных элементов в коллекции (массиве). В чем вопрос-то? Тип элемента в коллекции-массиве неизвестен, Plain C Код: plaintext 1. 2. Поправьте меня если я не прав но: 1. Это не связанный список а непрерывный кусок памяти 2. Это подходит только для одного именно этого способа организации коллекции - со связанным списком или коллекцией например, которая в процессе выкачивания из файла это не проходит (соответственно, чтобы сказать "выведи мне на экран все строки из файла" при помощи этого макроса придется либо копировать оттуда все содержимое, либо создавать другой макрос). Отдельно забавны названия - почему перечисление индексов связывается со словом EACH а перечисление содержимого ALL - это в C традиции такие? На codereview это у меня сразу вызвало бы вопрос. Такое ощущение, что тебе очень трудно придумать сначала задачу Я не просил найти задачу - я просто говорил что человек м развитым абстрактным мышлением смог бы найти аналогию в своих готовых задачах. ЗАЧЕМ? Если еще немного подумать над этим вопросом то же самое можно спросить и о ваших задачах. Мне плевать на тон, если есть смысл. Понеслася А ты смысла пока не предоставил ни на йоту, зато говоришь крайне глупыми шаблонами вида: "Мне нужно типонезависимое обобщенное программирование" "Мне нужно в итераторе перечистить ENUM и вывести значения через reflection" Во-первых, это термины, которым много лет и в литературе ясно расжевано что это такое и зачем нужно. Признаю свою ошибку, я исходил из неверного предположения, что если человек что-то критикует, то он хотя бы знает, о чем говорит. Я тебе вроде предельно понятно пытаюсь пояснить - что это - ни разу ни задачи, это лишь способ понаписать малопонятный код. А что там непонятного. Задача - это к примеру "разбить текст, представленный как массив байт, представляющий строку UTF-8 на массив составляющих слов, с учетом многобайтовых символов пунктуации", Код: c# 1. 2. 3. 4. Если хочется массив, то можно добавить в конце .ToArray(). Правда я бы так не делал. Matches вычисляется лениво поэтому, если пользователю метода захочется только первых три слова зачем-то, то он только их и будет искать не тратя время на все остальное. В этом как раз и преимущество ООП - мы работает с абстракциями, не связываясь с лишними деталями. "выделить из слов лексемы и термы", Какая грамматика? "посчитать BF25 от переданной строки поиска". Можно ссылку, что такое BF25? И вот когда ты покажешь, как красиво можно выполнить эту задачу - порезать строку на слова, вот тогда и поговорим о мощах и языках (справочно - у меня на С это всё делается одной функцией, два параметра, а ты можешь так?) Покажете код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 10:44 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрP.S. Интересно, как те, кто пишут эти статьи рассчитывают значение "в среднем O(1)"... То есть бывает и меньше? ))) Это как? посчитав хэш функцию на половину, мы уже знаем где элемент? ))) тут стоит указать "чуть более чем O(1)", а не в среднем. http://en.wikipedia.org/wiki/Hash_table ключевые слова "worst case" "collisions" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 10:51 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Смешная дискуссия. Отрицать полезность ООП могут только упертые "..." (слово по выбору). Так же, как и языки высокого уровня. Игры в производительность тоже забавны. Если отвлечься от специального кода в виде ядер ОС, драйверов и другого подобного софта, то давно доказано, что 99% времени выполнения приходится на 1% кода. Его и оптимизируют по производительности. Никакой проблемы написать быстрый код на ЯВУ, поддерживающих ООП, нет. Не хочешь применять ООП в каком-то месте - не применяй. Отрицание стандартных библиотек тоже абсурдно - это концепция "все дураки, а я -Д'Артаньян!" Нужно их правильно применять, но это не вина библиотек. И действительно, зачем люди используют OpenGL - это же библиотека! Только на С напрямую к драйверу! Высказывания Линуса абсолютно не убеждают, они давно оспорены множеством специалистов, и их аргументы звучат намного убедительнее. По поводу собственно ООП. Многие очень слабо понимают эту концепцию, она для них либо кнопочки в Дельфи, либо примерчики с наследованием. Правильно использованное ООП повышает эффективность системы в целом. Исключения, конечно, есть. SQL - чисто декларативный язык, и примочки в виде ООП не улучшают его. Но и БД - специфическая среда. Если же брать общее программирование, то ООП - одна из лучших концепций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:52 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
AddxСмешная дискуссия. Отрицать полезность ООП могут только упертые "..." (слово по выбору). Так же, как и языки высокого уровня. Игры в производительность тоже забавны. Если отвлечься от специального кода в виде ядер ОС, драйверов и другого подобного софта, то давно доказано, что 99% времени выполнения приходится на 1% кода. Его и оптимизируют по производительности. Никакой проблемы написать быстрый код на ЯВУ, поддерживающих ООП, нет. Не хочешь применять ООП в каком-то месте - не применяй. Отрицание стандартных библиотек тоже абсурдно - это концепция "все дураки, а я -Д'Артаньян!" Нужно их правильно применять, но это не вина библиотек. И действительно, зачем люди используют OpenGL - это же библиотека! Только на С напрямую к драйверу! Высказывания Линуса абсолютно не убеждают, они давно оспорены множеством специалистов, и их аргументы звучат намного убедительнее. По поводу собственно ООП. Многие очень слабо понимают эту концепцию, она для них либо кнопочки в Дельфи, либо примерчики с наследованием. Правильно использованное ООП повышает эффективность системы в целом. Исключения, конечно, есть. SQL - чисто декларативный язык, и примочки в виде ООП не улучшают его. Но и БД - специфическая среда. Если же брать общее программирование, то ООП - одна из лучших концепций. а как ООП само по себе позволяет улучшить эффективность системы? Вот я например отрицаю полезность ООП, но при этом понимаю удобство данного подхода к коду. Обоснуйте как ООП делает систему эффективнее ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:39 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Addx Но и БД - специфическая среда. Если же брать общее программирование, то ООП - одна из лучших концепций. ООП - это метод обработки коллекций разнотипных объектов. БД - это тоже коллекция разнотипных объектов. Так почему же ООП в БД не прижилось ?. Либо ООП необходимо внедрять в БД, либо ООП не годится для обработки коллекций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:39 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Addxтрицать полезность ООП могут только упертые "..." (слово по выбору).строго соотвествует с Addxэто концепция "все дураки, а я - Д'Артаньян !"И как давно Вы из Гаскони? Надолго ли в Париж? AddxЕсли же брать общее программирование, то ООП - одна из лучших концепций.Может, тогда раскажете почему "не правда", что объектно-ориентированное программирование провалилось ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:49 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Dima TРечь была про map, а там нет слова "хеш". socimedК примеру там где программист на C будет использовать обычный массив из структур - его коллега на C++ не дрогнув рукой заюзает хеш ированную мапу на темплейтах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:51 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
sphinx_mvМожет, тогда раскажете почему "не правда", что объектно-ориентированное программирование провалилось ? я этот текст десять лет назад видел, и кроме батхерта в нём никаких доводов нет. Академическое ООП провалилось, потому что в реальном мире ООП выглядит чуть иначе. Вы бы лучше с вашим упорством поискали статьи о скандале, когда Sun подделывал тесты производительности Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:57 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Лагманsphinx_mvМожет, тогда раскажете почему "не правда", что объектно-ориентированное программирование провалилось ? я этот текст десять лет назад видел, и кроме батхерта в нём никаких доводов [для меня] нет. Академическое ООП провалилось, потому что в реальном мире ООП выглядит чуть иначе. Вы бы лучше с вашим упорством поискали статьи о скандале, когда Sun подделывал тесты производительности Java. Ты забыл добавить, что для тебя лично их там нет. А это лишь говорит об ограниченности твоего мышления. Что, в свою очередь, задает вопрос - а с какой целью ты нам рассказываешь про свою ограниченность? Ищешь сочувствия или единомышленников (единоограниченников)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:10 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
F# "посчитать BF25 от переданной строки поиска". Можно ссылку, что такое BF25? http://en.wikipedia.org/wiki/Okapi_BM25 F#И вот когда ты покажешь, как красиво можно выполнить эту задачу - порезать строку на слова, вот тогда и поговорим о мощах и языках (справочно - у меня на С это всё делается одной функцией, два параметра, а ты можешь так?) Покажете код? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:13 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedЛагманпропущено... я этот текст десять лет назад видел, и кроме батхерта в нём никаких доводов [для меня] нет. Академическое ООП провалилось, потому что в реальном мире ООП выглядит чуть иначе. Вы бы лучше с вашим упорством поискали статьи о скандале, когда Sun подделывал тесты производительности Java. Ты забыл добавить, что для тебя лично их там нет. А это лишь говорит об ограниченности твоего мышления. Что, в свою очередь, задает вопрос - а с какой целью ты нам рассказываешь про свою ограниченность? Ищешь сочувствия или единомышленников (единоограниченников)? Утверждать, что ООП провалилось, когда в мэйнстриме нет не ОО языков, 10 лет назад выглядело маргинально, сейчас просто смешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:16 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
sphinx_mvAddxтрицать полезность ООП могут только упертые "..." (слово по выбору).строго соотвествует с Addxэто концепция "все дураки, а я - Д'Артаньян !"И как давно Вы из Гаскони? Надолго ли в Париж? AddxЕсли же брать общее программирование, то ООП - одна из лучших концепций.Может, тогда раскажете почему "не правда", что объектно-ориентированное программирование провалилось ? Указанная статья имеет неверную формулировку в принципе... Доводы также не совсем верны... 1. "Но реально никто не начинает с аксиом, все начинают с доказательств". Скажите, а как доказывалось, что параллельные прямые не пересекаются? Вообще, как доказывать аксиому, если сама аксиома не имеет доказательств? Сначала определяют аксиому на основании некоторых наблюдений или договорённостей (например, что в многомерном пространстве существует множетство прямых, которые не пересекаются), а потом на их основании строят умозаключения и выводят доказательства неких явлений (теорем). 2. "Ни в каком моделировании наследования не существует (и в реальной жизни его нет тоже)". Наследование - это лишь следствие обобщения. ООП само по себе строится вокруг одного из фундаментальных принципов осознания мира - обобщения. Именно потому в пределах ООП очень удобно мыслить. Наследовать что-то от чего-то - это не значит просто брать признаки наследуемого и давать их наследующему. Наследование - это деление одного более обобщённого понятия на несколько менее обобщённых. Как в биологии например выделяют царства... из них выделяют подцарства... из них семейства... виды... ну и что там ещё, не помню. Или как в технике.... есть обобщённое понятие техника... делится на военную, транспортную, научную etc... по методам перемещения делится на воздушную, наземную, водную, подводную... Ну и т.д. (тут мы видим пример множественного наследования, когда для описания объекта надо описать его предназначение и метод передвижения) Так что при правильном понимании и использовании концепции ООП, она изрядно помогает структурировать код, создать верную структуру проекта, привести просто набор непонятных операций к оперированию чёткими свойствами объектов. P.S. Мне просто интересно... как долго будет писаться даже простой 3Д движок без использования объектов в целом (полностью исключая принципы ООП)? Я думаю годами будет писаться то, что в ООП пишется месяц :) Что бы никто не заблуждался по поводу моей точки зрения повторюсь, я за ООП, но против утверждения, что без ООП что-то является невозможным, или что ООП как таковое позволяет ускорять работу кода и увеличивает его эффективность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:29 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
F#Ага только, насколько я понял, там свой отдельный препроцессор для C а не макросы на стандартном препроцессоре - так? И что с того? Сам С - это ассемблер. А транслировать в него ты можешь из чего угодно - хоть стандартным препроцессором, хоть m4 расширениями. Не вижу никаких трудностей тут. Тут никаких трудностей нет. Просто вы не додумали эту мысль дальше - тогда получается во-первых, С ч точки зрения выразительных средств ничем не лучше другого Тьюринг-полного языка. Во-вторых, с точки зрения опять таки выразительности, C убог так как не позволяет себя органично расширять. Тут еще подсказка: посмотрите н lisp и nemerle (хотя извините, вас гугление не интересует :)) И? О чем спич? Хочешь сказать, что ты не умеешь расширять С и веришь тем, которые говорят что он убог? Ну... не умеешь, потому что тебе никто не показал как (на лиспе и немерле показали), а сам додуматься как - не смог. Тут то и наступает понимание, что все что ты можешь - это лишь подражать другим, в т.ч. в их заблуждениях. Задумайся над этим, на досуге. F#Честно говоря мне трудно представить человека, который будет модифицировать молоток под себя (ну может, видел обмотанный изолентой). Способность человека создавать себе орудие труда - это основное его отличие от животных. А подражать другим (использовать паттерны действия) могут практически любые обезьяны, и не только. Есть масса видео, где одна шимпанзе весьма учит другую пользоваться "молотком" - камнем для разбивания орехов. F# Я за то, чтобы сначала посмотреть на готовые молотки и дорабатывать только если есть необходимость? А кто-то говорил про то, что не нужно сначала смотреть на другие? И не дорабатывать, а разрабатывать изначально новые, зачастую принципиально. Даже тут ты демонстрируешь эдакое тшедушие - "все что я могу, это лишь унаследовать чьи-то заблуждения и немного их видоизменить - доработать". А ты попробуй создать что-то принципиально новое, что позволяет вместо 150 строк кода написать всего одну. F#Странно, что ты этого в упор не видишь. Несоотвествие инструмента задаче. Вы про какую задачу и какой инструмент. И как вы точите молоток? (А особенно зажигалку) Да любая задача - от баз данных (к примеру заблуждение века - SQL), представление моделей (NHibernate), LINQ и далее. Все это настолько убогое и безумное, что просто диву даешься, как люди продолжают этим пользоваться, особенно в высоконагруженных системах. F#Еще раз для тех, кто на бронепоезде. Ты еще раз перечитай про что я написал - ты потерял нить. C тоже написан людьми понятия не имеющими о твоих задачах - выбрасываешь C и делаешь свой собственный с учетом твоих задач! С это просто макроассемблер, не более того. И с этими задачами он на удивление хорошо справляется, хотя мог бы кое где и лучше. Но в текущих реалиях это просто средство трансляции низкоуровневого кода в машинный код с оптимизациями - и задача более менее решена человечеством. F#С - это лишь кроссплатформенный макроассемблер. Никогда не думал, что можно СВОЙ высокоуровневый ЯП транслировать в С, а потом уже этот на 100% нагенерированный на С код - компилировать? А так оказывается можно! Это само собой разумеется, и многие так и делают. Только это просто переводит проблему на уровень того языка из которого ты генеришь С. ООП не про байты и биты а про модульность и повторное использование. Мне кажется, что если это непонятно, то вы просто не знаете о чем говорите. Почти никто так не делает, на самом деле. Есть только робкие попытки - к примеру проект HipHop (HHVM). F#Поправьте меня если я не прав но: 1. Это не связанный список а непрерывный кусок памяти 2. Это подходит только для одного именно этого способа организации коллекции - со связанным списком или коллекцией например, которая в процессе выкачивания из файла это не проходит (соответственно, чтобы сказать "выведи мне на экран все строки из файла" при помощи этого макроса придется либо копировать оттуда все содержимое, либо создавать другой макрос). 1. Имеено. Коллекции в куче - это еще одно феерически глупое заблуждение, в силу своей универсальности - как раз принцип забивания микроскопом гвоздей (для большинства задач куча как раз и не требуется, а преаллоцированные массивы фиксированной длины, особенно краткосрочные для веб задач - покрывают большинство потребностей). 2. Еще раз - есть отличие "тиаретика" от практика. Практик делает инструмент исходя из практических задач. Теоретик сначала обобщает задачу, потом годами пишет универсальные, пригодные для любых задач инструменты, но предельно неэффективные в частных случаях. Это как швейцарский нож против мачете. Мачете - специализированный инструмент, отлично рубит джунгли. А столовый нож - отлично режет стейк. Но вот швейцарский нож - и джунгли рубит, и стейк им можно, но в сравнении со специализированными он это будет делать предельно плохо. Вот так и в современных ЯП, особенно ФЯП - инструменты универсальны, но убоги в своей сравнительной неэффективности. F#Отдельно забавны названия - почему перечисление индексов связывается со словом EACH а перечисление содержимого ALL - это в C традиции такие? На codereview это у меня сразу вызвало бы вопрос. each и all это слова синонимы. Никаких традиций нет, нужно просто имена дать разные. Такое ощущение, что тебе очень трудно придумать сначала задачу F#Я не просил найти задачу - я просто говорил что человек м развитым абстрактным мышлением смог бы найти аналогию в своих готовых задачах. Абстрактное мышление - это заблуждение. В мире существует лишь конкретика и обобщение (выделение общего из двух частных). А абстракции - это как раз попытка найти нечто эдакое, а потом придумать ему применение. Это смешно по сути. F#Задача - это к примеру "разбить текст, представленный как массив байт, представляющий строку UTF-8 на массив составляющих слов, с учетом многобайтовых символов пунктуации", Код: c# 1. 2. 3. 4. Отлично! Вот и давай сравним с Код: plaintext 1. В читабельности, количестве строк, эффективности (производительности), чтоб окончательно понять всю убогость современных инструментальных средств общего назначения. Честно говоря, два эти примера выше настолько мощно отражают всю убогость индустрии C# и не только, что даже трудно что-то добавить еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:38 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38549406&tid=1341468]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
449ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 821ms |

| 0 / 0 |
