|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton Сорцы Doom https://github.com/id-Software/DOOM d_think.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Поле function -- указатель на функцию, то есть это по сути виртуальный метод. Вызов этого виртуального метода: p_tick.c Код: plaintext 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.
В комментарии про «THINKERS», очевидно речь про наследование. Создание двери: p_spec.h Код: plaintext 1. 2. 3. 4. 5. 6.
p_doors.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Создание монстра: p_mobj.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
p_mobj.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Исходники Doom 3: https://github.com/id-Software/DOOM-3 Там уже C++, классы, ООП в полный рост. Как и положено, свой строковый класс ( Str.h , Str.cpp ). Потому что C++ -- это язык для создания строковых классов :). Так что ООП при программировании игровой логики (то есть поведение игровых объектов) вполне используется. В 90-ые годы -- немного (Doom 1), но уже в первой половине 0-ых -- в полный рост (Doom 3). Потому что сложность разработки игр сильно выросла (видно хотя бы по количеству строк кода), а для сложных программ нужно ООП. В shader-ах естественно никакого ООП нет, потому что shader-ы -- это финальная стадия отрисовки, которая не имеет никакого отношения к поведению игровых объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 20:55 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Пётр Седов, >а для сложных программ нужно ООП == согласен. А то все то хоронят, то кому он нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 21:23 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav tip78 пропущено... не теми категориями мыслишь... за 1 секунду 60 раз надо картинку просчитать за 1 секунду она будет фактически статичная а технически она и 2-3-5-10 секунд будет иметь повторяющиеся элементы Ты бы пример алгоритмов привёл. А так я даже не понял про какую категорию ты говоришь. PS: Когда я серьёзно играл в WoW пинг 30 миллисекунд считался критическим. Как-то к нам в гильдию чувак написал резюме. Его спросили: под вами загорелась лужа, за какое время вы из неё выберитесь учитывая ваш класс? Он ответил за 0.3 секунды. Ему сказали: вы что с ума сошли, нужно отвечать мгновенно, в приёме отказано. А у вас целую секунду картинка статическая. статическая - значит что за 1 секунду там принципиально ничего сильно не изменится она всю секунду будет наполнена одинаковыми объектами ну а в реальности в игре ты бежишь несколько секунд по однотипной местности ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 21:30 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Пётр Седов Поле function -- указатель на функцию, то есть это по сути виртуальный метод. Вызов этого виртуального метода: (По поводу Doom1/Doom2). В данной-же игре имеет место сет алгоритмов и структур данных жонглирующих указателями на функции (фактически лямбды). Так можно доказать принадлежность толи к ФП толи просто показать что где-то можно жонглировать вставкой функции в структуру. Должна быть дисциплина ООП! Должна быть возможность инкапсулировать (скрывать поля и методы). Должна быть возможность проверить корректность down-casting. И процесс наследования должен иметь явный декларативный характер. Тоесть если вы унаследовали Cacodemon от Enemy в коде то все другие разработчики должны это понять и принять к сведению без сопроводительной документации. Готов спорить на виски что если мы поднимем голосование здесь. Или в cyberforum или в rsdn по поводу анализа исходников doom то большая часть участников не найдет в нем признаков ООП в том виде как принято везде. Искать с "натяжкой" мы не будем. ООП - слишком долго формировалось чтобы мы занимались профанацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 22:50 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
MasterZiv Ты серьёзно считаешь, что Java оправдала себя ? Язык, который был создан для программирования встроенных систем для утюгов, сковородок и холодильников, а применяется для создания в основном распределённых Enterprise-систем? Где КАЖДЫЙ проект, сидящий на этом языке, мечтает слезть с него и переползти на какой-то другой типа Groovy/Kotlin/Scala/Clojure ? Где 10 библиотек для создания GUI и ни одна не работает толком ? Где создали 3 технологии по программированию в WEB, и выкинули их в помойку ? Java -- это протсо Epic fail 20го века! Слишком жирно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 22:54 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
По поводу Doom3 https://github.com/id-Software/DOOM-3 и прочих уже современных игр. Языковая гистограмма показывает 7 языков. В других играх может быть нечто похожее. Как я уже писал выше, современная игра как и любое другое изделие сделанное с продумыванием архитектуры - имеет некие строительные кубики или слои на которые архитекторы делят код. Это как строительство дачного дома. Вы-же не будете лить его из наливного бетона в чистом виде? Или выдалбливать его из скалы? Вы - возьмете кирпичи. Аэроблоки. Гипсокартон. Экологические утеплители и стеклопакеты. Вобщем игра - это сплав технологий а не С++ монолит. И с их (технологий) развитием, доля С++ будет уменьшаться. Сейчас у нас - шейдеры на сях. И сценарии на Lua/Python. А когда игровые станции будут включать в себя блоки нейро-сетевых ускорителей (для вражеского AI) - то в списке языков может еще что-то новое появится. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 23:30 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton Искать с "натяжкой" мы не будем. ООП - слишком долго формировалось чтобы мы занимались профанацией. Да ну нафиг. ООП это не хрустальный свод аксиом и неопровержимых теорем. Это подход, стиль проектирования и стиль мышления. ООП можно и в Си реализовать. Пётр Седов вполне документировано доказал, что в топовых играх используется ООП. А адепты ДоД так и не смогли доказать нах он там вообще нужен. Так что вопрос закрыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 00:11 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton (По поводу Doom1/Doom2). В данной-же игре имеет место сет алгоритмов и структур данных жонглирующих указателями на функции (фактически лямбды). Так можно доказать принадлежность толи к ФП толи просто показать что где-то можно жонглировать вставкой функции в структуру. mayton Готов спорить на виски что если мы поднимем голосование здесь. Или в cyberforum или в rsdn по поводу анализа исходников doom то большая часть участников не найдет в нем признаков ООП в том виде как принято везде. mayton Сейчас у нас - шейдеры на сях. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 01:28 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton ... Искать с "натяжкой" мы не будем. ООП - слишком долго формировалось чтобы мы занимались профанацией. Оно так долго развивалось, что сейчас уже совсем не просто сказать - где ооп, а где его и быть не может. Это для Кея всё очень просто было по поначалу - если у тебя нет динамического связывания и динамического поиска метода по именам - то это не ооп. А вне рамок интерпретатора никакого ООП и быть не может. Как-то усложнилось и расширилось словоупотребление с тех пор... Потом стали считать, что ооп, это когда "объект" обязательно выделяется в куче и передаётся только по ссылке. А если нечто, что кто-то называет "объектом", может быть явно передан через стек - то оно точно и не ооп и не "объект". Если собрать всё вместе, то получится, что ооп, это тогда, когда программист что-то не может, главным образом, потому что не должен. Например, если программист нигде явно не управляет памятью для выделяемых в куче объектов - то оно - "ооп", а если хоть где-то управляет - то нет. Программист не должен управлять памятью... Программист не должен знать истинного устройства используемого им объекта. А лучше всего - когда даже автор класса не только не пишет код, обслуживающий взаимодействие экземпляров своего объекта с прочими, но и не подозревает даже приблизительно - что там вообще происходит. ООП сегодня - это когда все происходит само, и писать при этом ничего не надо. Как так? А вот так - @ - поставил "аннотацию" и получил поведение, о содержании которого - не твое дело задумываться. В этом смысле DoD - он в чистом виде про ооп. Примерно в том же смысле, в каком "аннотации". Т.е. речь-то идет вот о чём - делайте так, чтобы предоставляемые наружу интерфейсы были удобны в смысле манипулирования чем-то как "объектом", а внутри чтобы, невзирая на предоставленный апи, оно всё равно "быстро работало". Как это делать? Ну также, почти один в один, как имитировать ссылочные структуры вроде связных списков в языках, принципиально и напрочь лишенный понятия ссылки, вроде первородного FORTRAN-а. Дан вам в руки массив - он хорош, всегда кеш-френдли и всяко обливиус. И связны списки, если вот совсем именно они как видимая снаружи логическая конструкция смерть как понадобились, вполне на массивах реализуются. И не пользователя таких "списков" дело - интересоваться, как оно устроено внутри. Его дело - использовать полученный "ооп-френдли" интерфейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 01:33 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Большой Синий Кит MasterZiv Ты серьёзно считаешь, что Java оправдала себя ? Язык, который был создан для программирования встроенных систем для утюгов, сковородок и холодильников, а применяется для создания в основном распределённых Enterprise-систем? Где КАЖДЫЙ проект, сидящий на этом языке, мечтает слезть с него и переползти на какой-то другой типа Groovy/Kotlin/Scala/Clojure ? Где 10 библиотек для создания GUI и ни одна не работает толком ? Где создали 3 технологии по программированию в WEB, и выкинули их в помойку ? Java -- это протсо Epic fail 20го века! Слишком жирно. :) а как по мне - очень точно опустил яву я бы ещё добавил, что она жрёт, как не в себя и синтаксис придумывал человек, который всех ненавидит ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 01:56 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav Да ну нафиг. ООП это не хрустальный свод аксиом и неопровержимых теорем. Это подход, стиль проектирования и стиль мышления. ООП можно и в Си реализовать. ну изобрази уже деструктор на C move/copy -конструкторы, RAII, в конце-концов... про концепты уж молчу. petrav Пётр Седов вполне документировано доказал, что в топовых играх используется ООП. А адепты ДоД так и не смогли доказать нах он там вообще нужен. Так что вопрос закрыт. всё там доказали и на ютубе даже показали на ютубе есть наглядный пример, как CSS-анимация работает с DOD и ООП просто слышишь только себя. https://youtu.be/_N5-JjogNXU?t=319 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 02:02 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Просто кое-кто настолько ушёл в эмпиреи, что не в курсе, что синтаксис foo.bar() это просто сахар для bar(&foo)... Или даже так Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 09:37 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
PetroNotC Sharp 2. фаза - команды отрисовки всего что отправили через Код: plaintext 1.
Какой тут нафиг ООП? - для взаимодействия с файловой системой я также использую интерфейс видеокарты; - все сетевые взаимодействия (http(s), ftp, tcp/ip и прочее) проходят только через видеокарту; - вся (бизнес-)логика приложения и модель предметной области целиком и полностью реализованы на видеокарте. - для портирования приложения на другую платформу (с opengl, например на Vulkan или metal) я перепишу 100% кода своего приложения, то бишь напишу приложение с нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 10:12 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
AmKad, >Сударь, простите, что не могу пройти мимо. == а как же ещё))) Если есть аргументы то почему не говорить. Вы извратили мой тезис. Конечно я могу над Не ООП сделать свой ООП api. Но тут некоторые подвергают сомнению что он вообще нужен. Этот ООП. Я против - он нужен. 2. Приход шейдеров усложнил перевод прогером на ООП. Я раньше просто писал MyClass.draw(). Это доказывает что при создании игр на базе (DirectX/OpenGL/WebGL)/... ООП стало меньше. Причина понятна? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 11:38 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
AmKad, Отличайте базовый API операционки с OpenGL и какой то вулкан как законченное ПО ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 11:42 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я раньше просто писал MyClass.draw() ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 11:51 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
AmKad, Поверю. Только до шейдеров было проще. Эта описывалось в прошлой моей теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 11:53 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
AmKadА если так: foo->bar() ? Боже ж ты мой... разве не очевидно "bar(foo)" и "foo.vmt[bar](&foo)"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 13:49 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Next Level https://ru.wikipedia.org/wiki/D_(язык_программирования)#Универсальный_синтаксис_вызова_функций_(UFCS) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 15:41 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78 Большой Синий Кит пропущено... Слишком жирно. :) а как по мне - очень точно опустил яву я бы ещё добавил, что она жрёт, как не в себя и синтаксис придумывал человек, который всех ненавидит Перестаньте так шутить :) У явы нет реальных конкурентов в своем сегменте на сейчас, и, думаю, долго не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 18:42 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Большой Синий КитУ явы нет реальных конкурентов в своем сегменте на сейчас В сегменте плагинов JBoss-а их и не будет по очевидным причинам. А какой ещё у неё есть сегмент? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 19:01 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Большой Синий КитУ явы нет реальных конкурентов в своем сегменте на сейчас В сегменте плагинов JBoss-а их и не будет по очевидным причинам. А какой ещё у неё есть сегмент? Мне кажется, Вы живете в каком-то другом измерении. Это Ваше право. Jboss :) Не хочу терять время, извините. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 20:36 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Большой Синий Кит tip78 пропущено... а как по мне - очень точно опустил яву я бы ещё добавил, что она жрёт, как не в себя и синтаксис придумывал человек, который всех ненавидит Перестаньте так шутить :) У явы нет реальных конкурентов в своем сегменте на сейчас, и, думаю, долго не будет. Go давно вышел сюда же. С учетом граблей с платностью Явы для основных своих пользователей, перспективы у нее так себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2021, 22:34 |
|
|
start [/forum/topic.php?fid=57&msg=40038389&tid=2017266]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 272ms |
0 / 0 |