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

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

27.02.2020, 18:34. Показов 3377. Ответов 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,267
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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
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
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,006
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
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
29.02.2020, 18:55
Автор OpenLara - русскоязычный. Он ведёт блог на форуме GameDev на русском: OpenLara - движок классического Tomb Raider. Там накопилось множество ответов на различные вопросы. Есть дополнительные сведения, что автора, как он написал, консультируют, "ребята из соседнего проекта: OpenTomb". При очень большом желании, имея эти источники информации, можно переписывать на свой лад, например, с использованием Шаблоны игрового программирования (это перевод бесплатной онлайн книги: http://gameprogrammingpatterns.com/)

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

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

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

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

Сколько ещё препятствий нужно преодолеть, чтобы сделать фрагмент кода тестируемым? Сколько времени было потрачено впустую? Кроме того, нужно создавать экземпляр всего класса, чтобы протестировать один метод. Это подтянет код из всех его родительских классов. С ООП писать тесты для унаследованного кода ещё сложнее, практически невозможно. Целые компании были созданы (TypeMock) из-за проблемы тестирования легаси-кода.
1
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,006
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru