OberonCore
https://forum.oberoncore.ru/

Кроссплатформенность в (одном) универсальном исходнике
https://forum.oberoncore.ru/viewtopic.php?f=27&t=3703
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Пятница, 02 Декабрь, 2011 15:10 ]
Заголовок сообщения:  Кроссплатформенность в (одном) универсальном исходнике

И пример насыщения/раздувания кода при помощи таких "важных" фич, как макросы и пространства имён.

Намедни копался в заголовках... Пример определения типа time_t в time.h:
Код:
#if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t)
# define __time_t_defined   1

# include <bits/types.h>

__BEGIN_NAMESPACE_STD
/* Returned by `time'.  */
typedef __time_t time_t;
__END_NAMESPACE_STD
#if defined __USE_POSIX || defined __USE_MISC || defined __USE_SVID
__USING_NAMESPACE_STD(time_t)
#endif

#endif /* time_t not defined and <time.h> or need time_t.  */
#undef   __need_time_t
Снаружи обвязка для оптимизации, чтобы препроцессору меньше колбасить. Дальше обёртка, засовывающая имя в пространство имён std. Это дело придумали не сразу, поэтому потом при определённых условиях имя высовывается обратно в глобальное пространство имён, для обратной совместимости.

Суть (для 32 бит КП/ББ) в одной строчке интерфейсного модуля LinLibc:
Код:
TYPE time_t = INTEGER;
Ради которой нужно ещё зайти в bits/types.h
Код:
__STD_TYPE __TIME_T_TYPE __time_t;   /* Seconds since the Epoch.  */
Потом в bits/typesizes.h
Код:
#define __TIME_T_TYPE      __SLONGWORD_TYPE
И снова вернуться в bits/types.h
Код:
#define __SLONGWORD_TYPE   long int
Вот так, наверное, и получаются сотни тысяч строк кода.

Автор:  Info21 [ Пятница, 02 Декабрь, 2011 20:32 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

Евгений Темиргалеев писал(а):
И пример насыщения/раздувания кода при помощи таких "важных" фич, как макросы и пространства имён.
Продолжающийся рост объема кода на этом гуано -- и, главное, агрессивная пропаганда -- самое настоящее мракобесие.

Автор:  Пётр Кушнир [ Пятница, 02 Декабрь, 2011 20:46 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

Евгений Темиргалеев писал(а):
Вот так, наверное, и получаются сотни тысяч строк кода.
И часы компиляции.

Автор:  Info21 [ Пятница, 02 Декабрь, 2011 20:55 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

Пётр Кушнир писал(а):
Евгений Темиргалеев писал(а):
Вот так, наверное, и получаются сотни тысяч строк кода.
И часы компиляции.
Да, кстати.

Как вспомню, как оно протяжно тарахтело диском, так вздрогну.

Автор:  А.П. [ Суббота, 10 Декабрь, 2011 17:24 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

Курирую подготовку магистрантов для моей конторы в соместном с вузом проекте. Несколько человек (из начинающих программеров) захотели пройти мой "курс молодого бойца" на КП/ББ, чтобы потом перейти на "базовый" для конторы язык С/С++, применяемый для разного рода видеообработки. На КП/ББ мы научились читать картинку из файла *.bmp (модуль Files от Info21) в двумерный массив целого типа, переводить картинку в цветной негатив, в черно-белый вариант, оконтуривать объекты, зеркально отражать и поворачивать, накладывать сетку, масштабировать и "гладить" разными самодельными фильтрами, отрисовывать картинку средствами модуля TPGraphics (тоже от Info21) для просмотра. То есть приобрели ряд обязательных базовых знаний и навыков. Некоторое мелкое неудобство доставила невысокая скорость пототечной отрисовки картинки посредством процедуры PutPixel.
И вот пришло время начать переход на "правильный" язык. Взяли в руки тысячестраничное пособие Б.Страуструпа, VSExpress от MS, призвали на подмогу коллегу - знатока C++. До этого я с С/С++ не общался, но слышал неоднократно, что С/С++ - это нечто неудобоваримое. Однако тихий ужас от непосредственного контакта с этим монстром превзошел самые худшие ожидания. Причем коллега лишь усилил негатив, вывалив на головы бедных магистранток и мою седую массу (еще не полную!) сведений, необходимых для решения вышеперечисленных простых задач. А на вопрос отображения картинки, элементарно решаемый модулем TPGraphics, выдал ответ, что это слишком сложно в С/С++ и лучше результаты обработки изображений записывать в файл, который потом просматривать через другие программы. В заключение нескольких консультаций опытный коллега, отец пятерых детей, выразил мне рекомендацию отказаться от затеи научить этих наших девушек программировать...

Автор:  Валерий Лаптев [ Суббота, 10 Декабрь, 2011 18:14 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

А.П. писал(а):
Курирую подготовку магистрантов для моей конторы в соместном с вузом проекте. Несколько человек (из начинающих программеров) захотели пройти мой "курс молодого бойца" на КП/ББ, чтобы потом перейти на "базовый" для конторы язык С/С++, применяемый для разного рода видеообработки. На КП/ББ мы научились читать картинку из файла *.bmp (модуль Files от Info21) в двумерный массив целого типа, переводить картинку в цветной негатив, в черно-белый вариант, оконтуривать объекты, зеркально отражать и поворачивать, накладывать сетку, масштабировать и "гладить" разными самодельными фильтрами, отрисовывать картинку средствами модуля TPGraphics (тоже от Info21) для просмотра. То есть приобрели ряд обязательных базовых знаний и навыков. Некоторое мелкое неудобство доставила невысокая скорость пототечной отрисовки картинки посредством процедуры PutPixel.
И вот пришло время начать переход на "правильный" язык. Взяли в руки тысячестраничное пособие Б.Страуструпа, VSExpress от MS, призвали на подмогу коллегу - знатока C++. До этого я с С/С++ не общался, но слышал неоднократно, что С/С++ - это нечто неудобоваримое. Однако тихий ужас от непосредственного контакта с этим монстром превзошел самые худшие ожидания. Причем коллега лишь усилил негатив, вывалив на головы бедных магистранток и мою седую массу (еще не полную!) сведений, необходимых для решения вышеперечисленных простых задач. А на вопрос отображения картинки, элементарно решаемый модулем TPGraphics, выдал ответ, что это слишком сложно в С/С++ и лучше результаты обработки изображений записывать в файл, который потом просматривать через другие программы. В заключение нескольких консультаций опытный коллега, отец пятерых детей, выразил мне рекомендацию отказаться от затеи научить этих наших девушек программировать...

В профессиональных средах С++ графика делается либо с использованием winAPI, либо, что обычно и делается, с помощью сторонних библиотек. Самая известная - OpenGL. Ваш коллега просто этого никогда не делал (очевидно, что сфера его деятельности другая).

Автор:  Info21 [ Суббота, 10 Декабрь, 2011 20:31 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

А.П. писал(а):
... слышал неоднократно, что С/С++ - это нечто неудобоваримое. Однако тихий ужас от непосредственного контакта с этим монстром превзошел самые худшие ожидания.
:D

Зато теперь понятно, откуда несусветное ЧСВ у молчелов, чего-то там освоивших из этого монстра.
И почему их переубедить бывает невозможно.

А.П. писал(а):
мне рекомендацию отказаться от затеи научить этих наших девушек программировать...
Да... тут много чего хочется сказать. Но уже говорилось, не буду повторяться.

Автор:  ___ [ Вторник, 27 Ноябрь, 2012 20:20 ]
Заголовок сообщения:  Re: Кроссплатформенность в (одном) универсальном исходнике

А.П. писал(а):
А на вопрос отображения картинки, элементарно решаемый модулем TPGraphics, выдал ответ, что это слишком сложно в С/С++ и лучше результаты обработки изображений записывать в файл, который потом просматривать через другие программы. В заключение нескольких консультаций опытный коллега, отец пятерых детей, выразил мне рекомендацию отказаться от затеи научить этих наших девушек программировать...


в сях есть библиотека opencv, в которой есть поддержка и чтения кучи форматов файлов, и простое сохранения, и отображение из программы (через ихний же highgui), и работа с изображением, как с массивом. и много чего еще. конечно, она не такая маленькая, как TPGraphics =)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/