Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 22

Open source проект C/C++ без классов

27.02.2020, 18:34. Показов 3460. Ответов 9

Студворк — интернет-сервис помощи студентам
Прошу, дайте ссылку на OpenSource программу (к примеру, на игру) объемом более 2к строк на языке C/C++ без классов. Именно без классов, цель моей работы, добавить в программу классы, а, к сожалению, найти проект большого размера без классов, для меня оказалось крайне сложно.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2020, 18:34
Ответы с готовыми решениями:

Посоветуйте open source проект
Посоветуйте, пожалуйста, хороший open-source проект на котором можно поучиться. Критерии: 1. Лицензия GNU/GPL, BSD etc. 2. Основные...

Как разрабатывать open-source проект правильно?
Занимаюсь своим open-source проектом на python, есть желание повысить эффективность процесса разработки за счет его правильной организации...

Open Source - проект элементов управления для .NET и Mono
http://radiosoft.info/index.php/net-controls - Open Source - проект элементов управления для .NET Framework и Mono (Linux) по лицензии...

9
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
27.02.2020, 19:21
Цитата Сообщение от gondor Посмотреть сообщение
к сожалению, найти проект большого размера без классов, для меня оказалось крайне сложно.
Потому что их нет
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,282
27.02.2020, 19:26
Есть у меня программка Морской Бой, но она с графикой и написана на Qt. Созданных мной классов (за исключением стандартных qt-шных) в ней нет. Не подойдёт?
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
27.02.2020, 19:28
Цитата Сообщение от notAll Посмотреть сообщение
Потому что их нет
Почему это нет? Посмотрите исходники stb например(хоть это и не игра), там в C-style все написано, или та же sdl, то же без классов написана.
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
27.02.2020, 19:49
Лучший ответ Сообщение было отмечено gondor как решение

Решение

Цитата Сообщение от gondor Посмотреть сообщение
Именно без классов
Любой проект на С берите.
Я думаю, главная проблема, из-за которой вы не смогли ничего найти в том, что искали проекты на С++.

Добавлено через 2 минуты
Вот примерно так надо было искать: https://github.com/search?l=C&... positories
1
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 22
27.02.2020, 20:03  [ТС]
notAll, к сожалению не подойдет, потому что я уже работал с такого рода проектом. PS. Спасибо всем за ответы.
0
9945 / 2946 / 496
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
29.02.2020, 01:51
Один энтузиаст пишет классическую игру Tomb Raider на своём движке на C++/OpenGL без классов: https://github.com/XProger/OpenLara



Используется лицензия: BSD 2-Clause "Simplified" License.

Permissions:
+ Commercial use
+ Modification
+ Distribution
+ Private use

Limitations:
- Liability
- Warranty

У автора необычный подход. Он используется только заголовочные файлы.

Его проект засветился на британском ТВ:

0
фрилансер
 Аватар для Алексей1153
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
29.02.2020, 10:46
Цитата Сообщение от 8Observer8 Посмотреть сообщение
на своём движке на C++/OpenGL без классов:
в первом же попавшемся файле вижу

C++
1
struct Lara : Character {...
это - класс. Вообще, не представляю, как без классов построить вменяемую архитектуру. Но тут язык даёт возможность описывать классы встроенными возможностями. А какой-нибудь ассемблер для KP580 - не имеет встроенных средств, но эти средства приходится делать вручную (я так в далёком прошлом сам для себя изобрёл структуры, хотя я понятия не имел, как это называется, потому что был самоучкой и не был ещё знаком с C или C++ )

Цитата Сообщение от 8Observer8 Посмотреть сообщение
автора необычный подход. Он используется только заголовочные файлы.
это не так, потому что это невозможно в C++. Потому что необходимо наличие хотя бы одного cpp, содержащего main. И он имеется. Компилируется именно cpp, а не заголовочники

например
OpenLara/src/platform/win/main.cpp
C++
1
int main(int argc, char** argv) {...
автор просто любит усложнять себе жизнь По сути - весь исходный код у него в едином файле main.cpp . Представляю, как долго будет длиться компиляция при любом чихе. Также могут быть затруднения с перекрёстным использованием классов
1
9945 / 2946 / 496
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
29.02.2020, 18:55
Автор OpenLara - русскоязычный. Он ведёт блог на форуме GameDev на русском: OpenLara - движок классического Tomb Raider. Там накопилось множество ответов на различные вопросы. Есть дополнительные сведения, что автора, как он написал, консультируют, "ребята из соседнего проекта: OpenTomb". При очень большом желании, имея эти источники информации, можно переписывать на свой лад, например, с использованием Шаблоны игрового программирования (это перевод бесплатной онлайн книги: http://gameprogrammingpatterns.com/)

Цитата Сообщение от Алексей1153 Посмотреть сообщение
Вообще, не представляю, как без классов построить вменяемую архитектуру.
Я спрашивал у автора (это можно найти в его блоге на форуме выше), использует ли он шаблоны проектирования, а он выразил свою негативную позицию по поводу паттернов. Меня это смутило. Ещё я слышал про подход без классов, называется, функциональное программирование, но про него пока ничего не знаю. Вы изучали этот подход? Как вы считает можно ли строить архитектуры на этом подходе без классов и ООП? Я натыкался на мнения сторонников функционального программирования, которые высказываются негативно в сторону ООП. Например, перевод статьи: Мнение: объектно-ориентированное программирование — катастрофа на триллион долларов По вашему мнению, есть ли в мнении автора статьи, какие-то здравые мысли. Можно ли согласиться, что в ООП есть проблемы, а функциональный подход их решает? Но создаёт ли функциональное программирование другие проблемы?

Что касается модульного тестирование, то тут я согласен с автором статьи выше, что оно мешает, а функциональный подход убирает эти проблемы. Я сторонник написания модульных тестов для своего кода и мне интересна методология разработки TDD (и BDD). Мне хорошо знакомы трудности с инкапсуляцией зависимостей в ООП проекте для написания Mock-объектов.

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

Некоторые могут не согласиться, но ООП-код общеизвестно труден для модульного тестирования. Модульное тестирование предполагает изоляцию, и чтобы создать метод для такого вида тестирования, нужно:
  • извлечь его зависимости в отдельный класс;
  • создать интерфейс для вновь созданного класса;
  • объявить поля для хранения экземпляра вновь созданного класса;
  • использовать фреймворк, чтобы «mock-ать» зависимости;
  • использовать специальный фреймворк для внедрения зависимостей.

Сколько ещё препятствий нужно преодолеть, чтобы сделать фрагмент кода тестируемым? Сколько времени было потрачено впустую? Кроме того, нужно создавать экземпляр всего класса, чтобы протестировать один метод. Это подтянет код из всех его родительских классов. С ООП писать тесты для унаследованного кода ещё сложнее, практически невозможно. Целые компании были созданы (TypeMock) из-за проблемы тестирования легаси-кода.
1
фрилансер
 Аватар для Алексей1153
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
29.02.2020, 19:27
Цитата Сообщение от 8Observer8 Посмотреть сообщение
использует ли он шаблоны проектирования, а он выразил свою негативную позицию по поводу паттернов
если он НЕ использует функциональный подход - то паттерны он использует в каком-то виде. Даже если не знает об этом

Цитата Сообщение от 8Observer8 Посмотреть сообщение
функциональное программирование, но про него пока ничего не знаю. Вы изучали этот подход?
функциональное программирование возможно использовать в C++ (да и хоть где, наверное) . Некоторые языки поддерживают функциональное программирование напрямую, как философию. Например haskell, erlang, lisp. Первые два я даже пытался изучать, но как-то дальше теории и нескольких попыток практики не пошло. Там думать нужно иначе, чем в ООП. Я ещё не перестроился настолько, чтобы понимать, как там решаются задачи. В том смысле, что, например, на C++ я могу сразу представить пути решения и требуемые ресурсы, а там - не могу (практика нужна, практика )

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Можно ли согласиться, что в ООП есть проблемы, а функциональный подход их решает?
везде свои плюсы и минусы. ООП - более тонкое управление ресурсами и шустродействием. Функциональное программирование - математический подход, ресурсами ведает компилятор/транслятор.

Оба подхода позволяют решать любую задачу. Получается, тут больше зависит от самой задачи.

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

На практике я очень-очень редко делал юнит-тесты, обычно и так всё получается. Точно помню - делал для проверки архиваторов (свои реализации по известным алгоритмам)

Цитата Сообщение от 8Observer8 Посмотреть сообщение
можно ли строить архитектуры на этом подходе без классов и ООП?
можно. Существование языков навроде "Haskell" этому явное подтверждение. Хотя, и там используются структуры

Добавлено через 6 минут
есть такая старая досовская игрушка Abuse. Когда-то я играл в неё, очень динамичная. Говорят, она написана на Lisp
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.02.2020, 19:27
Помогаю со студенческими работами здесь

В новый open-source проект требуется опытный lead developer (pyqt)
О проекте - cross-platform P2P messenger с акцентом на безопасность коммуникаций. Обязанности: Ведущий программист в проекте. ...

В новый open-source проект требуется опытный специалист по безопасности/шифрованию. encryption, ipsec, pgp, reverse engineering
О проекте - cross-platform P2P open-source messenger с акцентом на безопасность коммуникаций. Обязанности: Один из ведущих...

Error C1083: Cannot open source file: 'Source.cpp': No such file or directory
Помогите плз!!!!! неделю сражаюсь с VS 2013 и не могу даже запустить простейшую "hello" ((( создавал консольное приложение win32,...

Open Source
Посоветуйте, пожалуйста, какие-нибудь open souce проекты. Какое-нибудь небольшое приложение работающее с интернетом, в идеале облачный...

Qt open-source
есть небольшой опыт qt посоветуйте open-source проект для повышения умений


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru