Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/90: Рейтинг темы: голосов - 90, средняя оценка - 4.53
 Аватар для tramp_1-3
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454

Недостатки ООП

16.05.2014, 16:35. Показов 22228. Ответов 318
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задали написать небольшую статью о недостатках этой замечательной парадигмы. В нашей группе прикладной информатики я один более-менее знаком с разработкой, поэтому на придирчивость аудитории можно не рассчитывать, и я решил спросить мнение опытных людей здесь. Я самоучка-теоретик, так и не написавший более-менее достой программы за свою жизнь, поэтому часть этой статьи навеяна из сети, а вот про усложнения - уже исключительной мой загон - не могу просто взять и написать программу. Пишу, думая, что это будет целый Фреймворк. Ну в общем предлагаю вашему вниманию эту коротенькую статью и рассчитываю на объективную критику. Всего полторы страницы - больше просто не знаю к чему придраться.
https://www.dropbox.com/s/m6u9... D0%9F.docx
дропбокс глючит и не дает нормальную ссылку. вот статья под спойлером.
Кликните здесь для просмотра всего текста
Недостатки ООП
Парадима ООП не нова. ООП приобрело популярность во второй половине 80-х вместе с такими языками, как Smalltalk, С++, Objective C (другое расширение C) и некоторыми другими. 25 лет назад никто не ожидал, что “новый” феномен ООП проживет столь долго и сегодня большинство современных языков поддерживают эту парадигму.
ООП стоит на трёх китах:
1.Первый — инкапсуляция — это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП.
2.Второй — наследование — способ определения нового типа, когда новый тип наследует элементы (свойства и методы) существующего, модифицируя или расширяя их. Это способствует выражению специализации и генерализации.
3.Третий, известный как полиморфизм, позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии). Это делает классы ещё удобнее и облегчает расширение и поддержку программ, основанных на них.
Инкапсуляция, наследование и полиморфизм — фундаментальные свойства, которыми должен обладать язык, претендующий называться объектно-ориентированным (языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах). Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают.
Преимущества этих языков всем известны: повторное использование кода, упрощение разработки больших программ, более логичная структура программы и многие другие. Разберём некоторые недостатки.
Недостатки есть абсолютно у всего – с этим нужно просто смириться. Важно адекватно их оценивать и стараться минимизировать их влияние. То же самое касается и объектно-ориентированной парадигмы программирования.
Есть несколько причин, почему узкие места ООП часто вылазят наружу. Я считаю, что это прежде всего непонимание самой сути объектно-ориентированной техники программирования - восприятие этой парадигмы как серебряной пули. Часто программисты стараются решать абсолютно все задачи, где даже не предвидится конкретных сущностей с их свойствами с помощью объектов, наследования и с помощью объектов. Это очень усложняет процесс. То есть вместо написания парочки функций в процедурной манере и передачи аргументов туда-обратно, программист часто пытается нагромоздить целую иерархию классов и после разгребает проблемы с видимостью классов, доступа к скрытым инкапсуляцией данным.
Таким образом, можно выделить один недостаток объектно-ориентированных языков программирования – избыточность их средств при решении большинства простых задач.
Нужно помнить, что применение ООП это прежде всего моделирование. Для построения хорошей, легко читаемой и сопровождаемой программы необходимо в самом начале разработки предусмотреть сценарии её использования и, что очень важно, изменения – заказчик легко в корне может поменять задачу. Это нетривиальный процесс, в котором часто задействуются даже отдельные языки моделирования. Не каждый способен выделить отдельные сущности и сделать их классами. Ещё меньше людей способны адекватно распределить функции, работающие с данными программы в методы и упаковать их в классы. Для этого нужно уметь мыслить объектно-ориентированными категориями. На всё это уходит драгоценное время. Оно обязательно окупится, если программист имеет дело с большим и сложным проектом, но вряд ли в других случаях, когда требуется просто решить задачу и перейти к другой.
Для меня вывод один, всем известный и общепринятый – не стоит воспринимать парадигмы и языки, их поддерживающие, как божество. Это всего лишь инструмент для решения определенного круга задач. Я думаю, что для объектно-ориентированных языков такие задачи начинаются, когда их решение укладывается более чем в тысячу строк и задачи, которые требуют масштабирования.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2014, 16:35
Ответы с готовыми решениями:

Архитектура с толстым клиентом: какие есть недостатки?
Здравствуйте, коллеги! Сейчас разрабатываем простенькое веб-приложение для учета заказов производственной компании. Функционал несложный:...

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует цвет, и прочее. Имеет ли смысл...

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

318
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.09.2016, 04:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от oldnewyear Посмотреть сообщение
У вас есть какое-нибудь подтверждение этим словам?
У Sun поинтерисуйтесь с какой целью они Java создавали. Но с учетом что одной из основных продукцией корпорации являлся СУБД и офисный пакет ответ очевиден. Что же касается PHP то он возник именно для динамического формирования страниц любительских сайтов. Потом более менее пооброс средствами взаимоддействия с БД, межсерверного взаимодействия и т.п. но тем не менее основное назначение как было так и осталось, куда не пытаются яву запихуть но на большее ее не хватает (PHP даже не пытаются потому как четко знают его назначение). Кстати попытки запихнуть куда либо Java туда для чего она не предназначена исходят в первую очередь от определенной кросс-платформенности. Развитие же мультиплатформенных компиляторов C++ с промежуточным представлением в виде кода виртуальной машины наподобие CLang из очень многих занимаемых сегодня ниш яву вытеснят (например разработка для мобилок уже перестала быть монополией джавы). При этом решать тот класс задач который обычно решает Java программисту С++ запросто как на С++ так и на Java или php и JavaScript (правда приходится помнить о геморрое с динамической типизацией). А вот наоборот обычно гораздо проблемнее вне зависимо от языка.

Добавлено через 29 минут
Цитата Сообщение от oldnewyear Посмотреть сообщение
У вас есть какое-нибудь подтверждение этим словам?
Еще одно подтверждение это тот момент времени в который появилась Java. Как раз было признано что пользователю набирать SQL-запросы самому не комильфо, а надо чтобы это комп делал на основании вводимых пользователем данных. При этом начиналась интеграция СУБД и WEB где действительно ручками запросы печатать очень даже не комильфо, хотя главной причиной было увеличение количества пользователей оных СУБД в корпорациях. Т.е. фактически чтобы комп пришел на рабочее место каждого менеджера необходимо было чтобы менеджер мог общаться с БД привычным для него языком форм и отчетов а не SQL-запросов. Работа по переводу одного в другое и форматированию вывода не сложная но ее такое море что грузить ей всококвалифицированных программеров реально оказалось нереально. Посему потребовался язык который бы мог позволить форматировать ввод-вывод ненакосячив выпускникам курсов. Вот так собственно говоря и появилась Java.
Кстати еще одним подтверждением есть постоянные вопросы об утечках памяти у пользователей языков с мусоросборниками (в мертвых слушателей течет) которая возникает при попытке пользования этих языков для задач более-менее серьезных чем формирование SQL-запроса или форматирование на его основе результатов веб-страницы, ну или банальных хеллоувердов с массивами. А вот вопросы по поводу утечки памяти в C++ днем с огнем искать надо.
0
Заблокирован
01.09.2016, 09:25
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Java и к примеру PHP проектировались для низшего по сложности класса задач и не очень высокой квалификации программиста
Квалификация программиста никак от языка не зависит. Так же, как и от ОПП не-ООП. Для того, чтобы писать не С++ обладать какой-то особенной квалификацией не нужно. К слову, смотря на результаты твоих тестов по С++, кто бы вообще говорил про квалификацию
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А к примеру С++ и АДА универсальные языки для задач любой степени сложности.
Те же Java, C, C# и Python универсальные языки для задач любой сложности.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.09.2016, 09:29
Цитата Сообщение от nimazzzy Посмотреть сообщение
Квалификация программиста никак от языка не зависит
Квалификация программиста зависит от знания матана в первую очередь. А математически нагруженные и реалтаймовые задачи (особенно реалтаймовые) решают обычно средствами С++. Java С# и тем более питон к реалтайму на пушечный выстрел подпускать нельзя
Цитата Сообщение от nimazzzy Посмотреть сообщение
Те же Java с C# и Python универсальные языки для задач любой сложности.
Языки имеющие встроенный мусоросборник на фиксированном алгоритме а тем более на рефкаунтинге и трассировке ссылок на рут универсальными быть не могут по определению.
0
Заблокирован
01.09.2016, 09:31
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
читаем внимательно требования:
Working knowledge of C, C++, & at least one scripting language (bash, Perl, Python, Ruby …
Working knowledge - это не профессиональные знания языка.

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
т.е. фактически тимлид-аналитик-архитектор таких по джаве одного на сотню набирают
Ухахах, пошли отмазки и оправдания :D Тебе надо начать придумывать какую-нибудь менее заметную ложь, а то, видишь, другие пользователя тоже начинают замечать, что ты не знаешь, о чем говоришь :)

0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
01.09.2016, 09:31
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Квалификация программиста зависит от знания матана в первую очередь. А математически нагруженные и реалтаймовые задачи (особенно реалтаймовые) решают обычно средствами С++. Java С# и тем более питон к реалтайму на пушечный выстрел подпускать нельзя.
Java сегодня основной язык для программирования распределенных высоконагруженных low latency real time e-trading систем
0
Заблокирован
01.09.2016, 09:47
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Квалификация программиста зависит от знания матана в первую очередь.
Матан никак с языками не связан.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А математически нагруженные и реалтаймовые задачи
Математически нагруженные задачи решают на всем. И на питоне с numpy тоже. И квалификация никак не меняется от того, на каком языке кто-то написал один и тот же алгоритм.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Java С# и тем более питон к реалтайму на пушечный выстрел подпускать нельзя
Этот наш "реалтайм" это не какая-то область, которая требует большей квалификации, чем создание, например, сайтика. К чему здесь вообще про рейлтайм? То, что ты вместо Windows/Linux будешь писать под RTOS, делает тебя квалифицированным программистом? Три раза "Ха". Конечно же, нет.

Добавлено через 7 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Языки имеющие встроенный мусоросборник на фиксированном алгоритме а тем более на рефкаунтинге и трассировке ссылок на рут универсальными быть не могут по определению.
Универсальность языка зависит от того, какой класс задач на нем можно решить. C#, Java, Python - языки общего назначения, они универсальны и пригодны для решения любого класса задач. Производительность, наличие/отсутствие сборки мусора - не имеют отношения к универсальности.
1
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.09.2016, 10:30
Цитата Сообщение от nimazzzy Посмотреть сообщение
То, что ты вместо Windows/Linux будешь писать под RTOS, делает тебя квалифицированным программистом?
Тут немного по другому вопрос стоит. Сначала у тебя будет достаточная квалификация а потом уже будешь писать под RTOS. (в первую очередь касается принципов реалтайма и нужного матана)
Цитата Сообщение от nimazzzy Посмотреть сообщение
Этот наш "реалтайм" это не какая-то область, которая требует большей квалификации, чем создание, например, сайтика.
На порядок более высокой. Сколько из сайтоклепателей отличат пропорциональный регулятор от дифференциального или хотя бы смогут построить конечно-разностную схему вычисления простейшей траектории?
Цитата Сообщение от nimazzzy Посмотреть сообщение
Матан никак с языками не связан.
Связано то на каких языках задачи эти решают. Научно-исследовательские сильно счетно нагруженные преимущественно на Fortran. Менее нагруженные которые позволяют считать на персоналке и инженерные обычно на С++. Задачи УВМ тоже в основном на сегодняшний день С++ (раньше Fortran). Задачи контроллеров - С, С++ assembler и специализированные языки.
Цитата Сообщение от oldnewyear Посмотреть сообщение
Java сегодня основной язык для программирования распределенных высоконагруженных low latency real time e-trading систем
Т.е. как и говорилось - форматирование ввода-вывода и формирование SQL запросов - т.е. посредничество между клиентом и сервером. Это и есть e-trading система. При этом торговые терминалы этих бездельников-трейдеров обычно тоже на С++.
А время там такое же реальное как я балерина. От того что оно не вовремя мусоросборник запустит ничего не случится. В отличии к примеру от промышленных роботов а тем более чего то связанного с транспортными или энергетическими системами, когда неспособность системы выдать управляющий сигнал в нужный лимит времени с требуемой точностью ведет к катастрофе.

Добавлено через 26 минут
Цитата Сообщение от nimazzzy Посмотреть сообщение
То, что ты вместо Windows/Linux будешь
Существуют и Real-Time Kernel под виндовс и real-time версия линукса. Чем отличаются от нереалтаймовых в курсе? вот когда будешь в курсе тогда про квалификации для этих дел будешь по другому думать. Но это будет только самое начало получения нужной квалификации.
0
Заблокирован
01.09.2016, 10:59
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Сначала у тебя будет достаточная квалификация а потом уже будешь писать под RTOS.
Ни о чем. То же самое можно написать про любую область. Сначала тебе нужно квалификация, потом ты будешь ля-ля-ля. Матан к реалтайму отношения не имеет.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На порядок более высокой.
Найн.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Сколько из сайтоклепателей отличат пропорциональный регулятор от дифференциального или хотя бы смогут построить конечно-разностную схему вычисления простейшей траектории?
Те, кто этим занимался - смогут. Это могут быть как девелоперы под реалтайма, так и под нерейлтайм. Алгоритм к ОС отношения не имеет.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Связано то на каких языках задачи эти решают.
Связано это только у тебя в голове
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Научно-исследовательские сильно счетно нагруженные преимущественно на Fortran.
Куча исследовательских расчетов уже и на питоне давно.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Т.е. как и говорилось - форматирование ввода-вывода и формирование SQL запросов - т.е. посредничество между клиентом и сервером.
Как и говорилось, никто не заставляет тебя на java/C#/python изображать прослойку между бд и клиентом. Пиши - что хочешь.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
От того что оно не вовремя мусоросборник запустит ничего не случится.
Поэтому пишут на C# со своим аллоцированием.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В отличии к примеру от промышленных роботов а тем более чего то связанного с транспортными или энергетическими системами, когда неспособность системы выдать управляющий сигнал в нужный лимит времени с требуемой точностью ведет к катастрофе.
Call-server'а ip-телефонии, обрабатывающие миллионы звонков одновременно. Написан на C# под Linux. Не С++, потому что он уродлив. Сборщик мусора не мешает, потому что своя аллокация. Учись, студент.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Существуют и Real-Time Kernel под виндовс и real-time версия линукса.
Ohhh, really?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Чем отличаются от нереалтаймовых в курсе?
Не пишу о том, о чем не в курсе.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
вот когда будешь в курсе тогда про квалификации для этих дел будешь по другому думать.
Не завидуй, моя работа уже была связана с RTOS. С++ со своими накладными расходами там никуда не вперся. Весь STL - сразу на помойку, это мусор. Все классы с виртуальными функциями, наследованием - тоже на помойку. Осталось подмножество С++, которое суть есть С. Поэтому только С и Асм. Не тебе мне рассказывать про RTOS и про "квалификацию". Квалификация определяется решаемыми задачи, а не RTOS, не-RTOS. Сайтоклепатель может быть куда более крутым программистом, чем реалтайм-ос-кодер, который всю свою жизнь только обработку карточек в метро писал.

Добавлено через 5 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В отличии к примеру от промышленных роботов а тем более чего то связанного с транспортными или энергетическими системами, когда неспособность системы выдать управляющий сигнал в нужный лимит времени с требуемой точностью ведет к катастрофе.
Я устал от тебя. Ты пишешь о тех вещах, с которыми не работал. Если ты не писал и никогда не видел систему на C#, которая работает без накладных расходов от сборщика мусора, это не значит, что ее нет. Ты меня окончательно убедил в своей некомпетентности. Уже стало не интересно.
1
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.09.2016, 13:02
Цитата Сообщение от nimazzzy Посмотреть сообщение
Весь STL - сразу на помойку, это мусор.
Это я всегда говорил. Но в С++ кроме STL есть еще и C++.

Добавлено через 4 минуты
Цитата Сообщение от nimazzzy Посмотреть сообщение
Все классы с виртуальными функциями, наследованием - тоже на помойку.
Прекрасно работает. Даже на довольно слабом железе. реально задачи крутились на 286@16Mhz. Критичные по времени обработчики прерываний на ASM. Ну правда иерархии нужно с умом строить а не по принципу чем глубина больше тем лучше.
Цитата Сообщение от nimazzzy Посмотреть сообщение
Если ты не писал и никогда не видел систему на C#, которая работает без накладных расходов от сборщика мусора, это не значит, что ее нет.
Шарп это вообще отдельная песня. Но если отключить сборщик мусора и выбросить все STL-подобное прийдем к С++ середины 90-ых.
Цитата Сообщение от nimazzzy Посмотреть сообщение
чем реалтайм-ос-кодер, который всю свою жизнь только обработку карточек в метро писал
Это из области информационных систем точно так же как сайты а не задач АСУТП.

Добавлено через 2 минуты
Цитата Сообщение от nimazzzy Посмотреть сообщение
Пиши - что хочешь
Для пиши что хочешь придется отключить мусоросборник как минимум или приделать кастомный. Доступно это только в шарпе.

Добавлено через 3 минуты
Цитата Сообщение от nimazzzy Посмотреть сообщение
Те, кто этим занимался - смогут. Это могут быть как девелоперы под реалтайма, так и под нерейлтайм. Алгоритм к ОС отношения не имеет.
Тут вопрос не ОС а где этим реально занимаются. Для сайтоклепательство это нафиг не надо в отличии от АСУТП и нереалтайм инженерных и научных CAD. Кстати в геймдеве этого добра (регуляторов траекторий и т.п.) тоже много причем околореалтаймового (во всяком случае в серьезном геймдеве а не в казуалках).

Добавлено через 47 секунд
Цитата Сообщение от nimazzzy Посмотреть сообщение
Call-server'а ip-телефонии, обрабатывающие миллионы звонков одновременно. Написан на C# под Linux. Не С++, потому что он уродлив. Сборщик мусора не мешает, потому что своя аллокация. Учись, студент.
т.е. обрубили C# фактически до голого С++.

Добавлено через 55 секунд
Цитата Сообщение от nimazzzy Посмотреть сообщение
Ohhh, really?
Ну да. реалтаймовый кернел от сиеменс для винды. а под линухой ракеты в космос летают.

Добавлено через 6 минут
Цитата Сообщение от nimazzzy Посмотреть сообщение
Call-server'а ip-телефонии, обрабатывающие миллионы звонков одновременно.
Ну и че будет если где то пинг прынгет больше чем надо? Голос квакнет? Ты похоже даже определения "реальный масштаб времени" не понимаешь.

Добавлено через 7 минут
Цитата Сообщение от nimazzzy Посмотреть сообщение
Куча исследовательских расчетов уже и на питоне давно
Разве что IBM-кие проекты на тему бигдаты. Там не столько счет сколько перелопачивание БД и элементарная матстатистика. при этом серв который все это реально SQL-ит как был на С++ так и остался. А про питона под CUDA на котором обычно суперкомпутеры живут которые к примеру ядерные реакции моделят и аэродинамику виртуально дуют пока что ни слухом ни духом. Там Fortran как рулил так и рулит. Местами С++. Кстати именно по этой причине Intel сначала новую версию фортрана клепает а потом уже плюсов.

Добавлено через 1 час 15 минут
Цитата Сообщение от nimazzzy Посмотреть сообщение
Те, кто этим занимался - смогут
Каков процент сайтоклепателей которые этим занимались? Около 0%. И какой процент разработчиков систем АСУТП и САПР которые этим занимаются постоянно? 100%.

Добавлено через 4 минуты
Цитата Сообщение от nimazzzy Посмотреть сообщение
Матан к реалтайму отношения не имеет
К управлению техпроцессами имеет самое непосредственное. На нем все ТАУ живет. А в реальном режиме времени работают только управляющие оборудованием системы. Остальному реалтайм (тот который по определению реалтайм а не "быстро работает") нафиг не нужен.

Добавлено через 1 минуту
Цитата Сообщение от nimazzzy Посмотреть сообщение
Учись, студент.
У меня всегда своя аллокация и деаллокация. Я на С++ програмлю принципиально без STL (свои более продвинутые и быстрые контейнеры).

Добавлено через 7 минут
Цитата Сообщение от nimazzzy Посмотреть сообщение
Не завидуй, моя работа уже была связана с RTOS. С++ со своими накладными расходами там никуда не вперся.
Может быть такое мнение вот по этому:
Цитата Сообщение от nimazzzy Посмотреть сообщение
Не пишу о том, о чем не в курсе.
А надо бы было быть в курсе сли речь идет о занятиях реалтаймом.
Цитата Сообщение от nimazzzy Посмотреть сообщение
Все классы с виртуальными функциями, наследованием - тоже на помойку.
Так для примеру. Видел и даже местами переписывал на плюсах части одной системки АСУТП. Фунциклит она на Siemens-R300-16@800kHz на одноименной ОС. Живет там практически все на индирект вызовах, хотя и на фортране, но аналогично виртуальным методам. Так вот системка эта успевает управлять прокатным станом, при этом не забывая про форточки в текстовом режиме на десятке терминалов. Вот где учится надо, а не рассказывать что индирект вызов это типа тормоза на несколькогигагерцных компах.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
01.09.2016, 21:30
Джава создавалась как простой, объектно-ориентированный, надёжный, безопасный, независящий от архитектуры, переносимый язык. За основу взяли С++, но выкинули оттуда всё лишнее, упростили работу с памятью, добавили более строгий статический контроль типов, добавили возможность динамического контроля типов, убрали адресную арифметику.
То есть, по сути при создании Джава взяли С++ и убрали всё то, что мешает программировать. Но нельзя сказать, что цель была достигнута на 100%. Избавившись от очевидных недостатков С++, получили другие недостатки.
C# создавался позже, поэтому его создатели пошли по пути Джава, но учли те проблемы, которые не смогли предвидеть создатели Джава.

Если ты пишешь на С++, то ты должен обладать высокой квалификацией, чтобы "не выстрелить себе в ногу". Ситуацию усугубило то, что С++ стал культовым среди псевдохакеров. Причём, чем короче и запутанней был код, тем круче считалась программа.

На Джава можно писать хорошие программы, если ты обладаешь высокой квалификацией, но при этом твои программы не будут такими ужасными, как программы на С++, если ты не обладаешь высокой квалификацией. Это позволяет эффективно разделять работу между высококвалифицированными и "начинающими или бестолковыми" программистами.

На Джава есть обширная библиотека стандартных классов для типичных задач. На С++ в каждой конторе своя библиотека. Это сильно мешает, когда ты находишь новое место работы. К тому же, многие учебники для С++ переделывались из учебников для С. Поэтому часто программы на С++ представляют из себя смесь кода, написанного на С++ и С. А когда создавался стандарт С++, то каждый из участников считал своим долгом впихнуть в стандарт как можно больше возможностей. В результате язык получился перегруженным излишними возможностями.

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А к примеру С++ и АДА универсальные языки для задач любой степени сложности
Универсальный - это значит не оптимальный для любых задач. Универсальный инструмент всегда хуже узкоспециализированного.

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Что же касается PHP то он возник именно для динамического формирования страниц любительских сайтов.
PHP - да. Это "убогий" язык. Не путайте PHP и Java.

Добавлено через 8 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Квалификация программиста зависит от знания матана в первую очередь.
Квалификация программиста не зависит от знания матана. Знание математики требуется для создания алгоритма. А для реализации алгоритма требуется знание языка. Мне приходилось писать программы на основе таких алгоритмов, что я был не в состоянии понять математику, которая за ними стоит. То, что программа давала правильный ответ, для меня было как чудо. Например, точное решение целочисленной системы линейных уравнений с помощью P-аппроксимаций даёт более лучшее асимптотическое время работы, чем метод Гаусса. В результате время работы для больших систем отличается на несколько порядков.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Сколько из сайтоклепателей отличат
Сайтоклепатели сайтоклепателям рознь. Сайт может быть Системой Управления Предприятием. Чтобы спроектировать и создать такую систему требуется очень высокая квалификация. Причём, данная квалификация ортогональна знанию языка/железа/низкоуровневой специализации/ и т.п. То есть, не зависит от того, насколько хорошо ты знаешь (условно) ассемблер, а зависит от умения использовать подходящие паттерны программирования.

Добавлено через 2 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На порядок более высокой.
Как я уже писал выше - не более высокой, а другой. Ваше утверждение по сути "чтобы выше прыгать, нужно быть сильнее". А на практике человек, который не может свой вес от груди выжать, может прыгать выше, чем человек, который жмёт два своих веса.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но если отключить сборщик мусора и выбросить все STL-подобное прийдем к С++ середины 90-ых.
Не надо отключать сборщик мусора. Как часто вызывается сборщик мусора, зависит от того, как написана программа. При желании можно написать программу так, чтобы сборщик мусора вызывался сколь угодно редко.
Более того, выделение памяти - дорогая операция. Поэтому критические участки кода (по требованию к скорости работы) обычно пишутся так, чтобы не выделялась дополнительная память. И, как следствие, память не освобождается - сборщик мусора остаётся без работы.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.09.2016, 23:56
Цитата Сообщение от Shamil1 Посмотреть сообщение
То есть, по сути при создании Джава взяли С++ и убрали всё то, что мешает программировать.
вернее все при помощи чего программист низкой квалификации имеет свойство косячить а высокой делать нужные дела.

Добавлено через 1 минуту
Цитата Сообщение от Shamil1 Посмотреть сообщение
Универсальный - это значит не оптимальный для любых задач.
Универсальный в случае языков программирования обычно это и значит. С парой оговорок - специализированные могут быть рассчитаны на реалии определенного железа.

Добавлено через 1 минуту
Цитата Сообщение от Shamil1 Посмотреть сообщение
Знание математики требуется для создания алгоритма. А для реализации алгоритма требуется знание языка.
Ну ну. те кто не может заниматься созданием алгоритма являются не программистами а кодерами. При этом программист обычно и как кодер на порядок более выше чем просто кодер.

Добавлено через 6 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Сайт может быть Системой Управления Предприятием. Чтобы спроектировать и создать такую систему требуется очень высокая квалификация.
Да архитекторы там тоже нужны и это отдельная песня.Так же как и движки сайтов делать тоже знания архитектуры ПО нужны всей команде которая движок делает. А вот тот контингент который на этом движке уже что то конкретное делает там обычно 100 кодеров а то и эникейщиков на одного архитектора. При этом информационные системы предприятия на порядок проще чем задачи одного объекта АСУТП. Работал и в АСУП и в АСУТП сравнить могу. Да и друг работает начальником бюро по внедрению EPR на крупном предприятии. Говорит работа простейшая но ее такое море... именно по формошлепству и преобразованию вводимых через формы данных в SQL запросы и настройка формата таблиц вывода.

Добавлено через 4 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
Как я уже писал выше - не более высокой, а другой.
Гораздо более высокий. Хотя бы потму что количество входных/выходных сигналов а соответственно и взаимосвязей в системе АСУТП на порядок больше чем в системах АСУП. При этом преобразование данныхв АСУТП на порядок сильнее математически нагружено. Т.е. просто кодер в АСУТП работать не сможет там либо понимаешь математику работы системы либо даже пользовать ее толком не можешь не то что проектировать. При этом блокировка системы АСУП приводит максимум к ручному рестарту сервера. Блокировка же системы АСУТП в лучшем случае костановке технологического процесса.

Добавлено через 23 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
И, как следствие, память не освобождается - сборщик мусора остаётся без работы.
Т.е. напиши свою систему пулов константного времени распределения/высвобождения под каждый тип (при этом не факт что менеджер памяти в комплекте с++ программы работает по другому). Зачем тогда вообще сборщик мусора нужен? И типа делать все это на джаве где для этого создана огромная куча неудобств (обрезано все необходимое).

Цитата Сообщение от Shamil1 Посмотреть сообщение
Более того, выделение памяти - дорогая операция. Поэтому критические участки кода (по требованию к скорости работы) обычно пишутся так, чтобы не выделялась дополнительная память.
Ну скажем так - применительно к АСУТП к примеру реалокация буферов памяти это не то чтобы нештатная ситуация но нечто чему лучше бы остаться на этапе пусконаладки. Но там другая задача. Там все рассчитано на то чтобы все выполялось в оговоренный лимит времени при этом имело запас памяти и запас вычислительной мощности для фиксированого набора задач. При этом обмен данными между процессами идет обычно через общие области памяти что позволяет в случае необходимости перезапустить подвисший процесс без потери данных необходимых другим процессам.
Что касается оффисных/информационных и т.п. систем то задача абсолютно другая. Т.е. распределение ресурсов и процессорного времени по принципу чтобы хватило как можно большему количеству клиентов. т.е. фактически разделение ресурсов по времени а не по назначению. При этом обычно с полной изоляцией данных одного клиента от данных другого. Посему без интенсивной аллокации/деаллокации памяти информационным системам жить нельзя. При этом на простейших задачах форматирования ввода-вывода/проверки корректности входных данных с этим справляется автоматика.
Соответственно - не надо пытаться играть в кошки-мышки с автоматом сборки мусора там где он вообще не нужен и не надо пытаться прыгнуть выше его назачения/возможностей там где он используется.

Добавлено через 18 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Если ты пишешь на С++, то ты должен обладать высокой квалификацией, чтобы "не выстрелить себе в ногу"
Проблема висячх ссылок в С++ аналогична проблеме мертвых слушателей в Java. Так что при кривых руках прострелить себе ногу можно и там и там. При этом в Java как не прыгай выше кремниевого пистолета в руках не прыгнешь а в плюсах запросто шестисвольный миниган собирается.

Добавлено через 2 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
А когда создавался стандарт С++, то каждый из участников считал своим долгом впихнуть в стандарт как можно больше возможностей. В результате язык получился перегруженным излишними возможностями.
Лишнее в С++ только STL. Но как бы ее никто не обязывает пользовать.
Цитата Сообщение от Shamil1 Посмотреть сообщение
На Джава есть обширная библиотека стандартных классов для типичных задач. На С++ в каждой конторе своя библиотека.
Контейнеры пользуемые в задачах АСУТП работают совсем по другим принципам (чаще всего циклические и сдвиговые буфера) нежели пользуемые в задачах АСУП

Добавлено через 5 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Мне приходилось писать программы на основе таких алгоритмов, что я был не в состоянии понять математику, которая за ними стоит. То, что программа давала правильный ответ, для меня было как чудо.
Были пару раз такие попытки типа перепесать формулы из справочника. Тест считает нормально. Стоит изменить набор данных и начинаются такие чудеса что ну его на... В результате приходилось раскапывать ДОСКОНАЛЬНО как оно работает, делать немного по другому чем в учебнике но более оптимально. Касалось пересечения лучей с квадриками. Более оптимально оказалось не перестраивать матрицу квадрики как в учебнике а доворачивать систему так чтобы квадрика стала в ноль координат.

Добавлено через 6 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
В результате язык получился перегруженным излишними возможностями.
Ничего лишнего кроме STL (во всяком случае по моим задачам некоторым и это верх удобства) в С++ нет. Но никто не обязывает оную STL пользовать. При этом С++ это как набор инструментов берешь нужный для конкретной задачи и пользуешь а не пытаешься всем скопом там где эти возможности не нужны. В общем как с презервативом - лучше когда он есть но не понадобился чем когда понадобился а его нет.

Добавлено через 3 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
К тому же, многие учебники для С++ переделывались из учебников для С.
По С++ есть только один толковый учебник. Называется "C++ Language Reference Manual". Как в принципе и по любому языку. А все эти "Освой (вписать нужный язык) за 21 (день/час/секунду) для самоваров с чайником сверху" не более чем бульварное чтиво а не учебники.

Добавлено через 7 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Это позволяет эффективно разделять работу между высококвалифицированными и "начинающими или бестолковыми" программистами.
По большому счету то что называется "начинающими и бестолковыми" вылетают из вуза на первой же сесси если по уму подход построен в ликбезе. Те кто за пол-года максимум год не научился с памятью работать не научатся вообще. А тем более если за 5 лет остального обучения не отшлифовал навыки до автоматизма. При этом для этого не надо заучивать набор приемов. Надо просто понимать что такое указатель и представлять что у тебя в текущей задаче куда указывает и как сделать нужную автоматику недопущения висящих ссылок, не утечь память это вообще не проблема. Кстати о том что оказывается такая проблема как утечки памяти вообще существуют и даже создает какие то проблемы узнал только здесь на форуме. До этого как то с такими проблемами просто не сталкивался. Наверное потому что управление памяти ручное. Если даже где то что то и потекло это сразу видно где и что причем обычно просто "забыл удалить в деструкторе", что практически невозможно при реализации систем недопущения висячих ссылок. А вот если течет на автомате это очень трудно обнаружить.

Добавлено через 9 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Как я уже писал выше - не более высокой, а другой
Более высокий. Проектировать структуры БД и информационные связи в них и АСУТП-никам тоже нужно правда с некоторыми различиями (таблицы коэффициентов и т.п. обычно закешированы в памяти и оптимизированны под константное время доступа - т.е. проектируются с гораздо более высокой степенью надежности и оптимизации) но тем не менее имеют те же структуры взаимосвязей что и таблицы реляционной БД которые пользуются в АСУП.

Добавлено через 3 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
На Джава можно писать хорошие программы
На Jаva можно писать задачи форматирования ввода вывода. Именно на это рассчитан язык. Там где язык имеет резерв для чего-то большего (С#) уже добавляются свойства, делегаты и возможность отключения мусоросборнника

Добавлено через 1 минуту
Цитата Сообщение от Shamil1 Посмотреть сообщение
Не путайте PHP и Java.
Языки с одинаковым назначением.

Добавлено через 5 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
На Джава есть обширная библиотека стандартных классов для типичных задач.
Которая опять же как и STL рассчитана на типа какие то усредненные критерии оптимизации (т.е. в подавляющем большинстве задач можно оптимальнее) и как понимаю абсолютно не рассчитана на какое либо взаимодействие контейнера и хранимого элемента. Да кстати обычный вопрос всех джавовцев - а где в этой библиотеке контейнер для древовидных структур? Что еще раз подтверждает - язык предназначен для работы с одномерными массивами, более сложные структуры уже очень нехорошо сказываются на сборщике мусора а то и утекают память (к примеру этим и опасны деревья, поэтому их и нет).

Добавлено через 12 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Квалификация программиста не зависит от знания матана.
Программист это в первую очередь хороший математик. Хотя бы потому что не существует термина "Программное обеспечение ЭВМ". Существует термин "Математическое обеспечение ЭВМ".
0
Заблокирован
02.09.2016, 00:01
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Программист это в первую очередь хороший математик.
Математик - это математик. А программист - это программист. Две разные области, две разные профессии. Программисту нужна математика в той же степени, в какой сантехнику физика жидкостей.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.09.2016, 00:18
Цитата Сообщение от nimazzzy Посмотреть сообщение
в какой сантехнику физика жидкостей.
Был один знакомый сантехник. Все у него систему заливало не понятно почему по всему бытовому комплексу на заводею В общем в конечном итоге пошел этот сантехник в универ учится по этому поводу. курсу к третьему рассчитал где какую трубу заварить надо.
Цитата Сообщение от nimazzzy Посмотреть сообщение
Математик - это математик. А программист - это программист.
Ага .Аж астолько что специальность при окончании которой выдают квалификацию "Инженер-программист" называется "Прикладная математика и вычислительная техника". При этом учат математику на этой специальности все пять лет по несколько предметов в семестр. Причем такие разделы которые препады с кафедры вышки дай бог чтобы слышали название. Так вот что касается реальной работы даже то что на этой кафедре учат реально ликбез позволяющий в результате просто быстро освоить по справочникам и т.п. математику нужную для реальных задач.

Добавлено через 8 минут
Цитата Сообщение от nimazzzy Посмотреть сообщение
Программисту нужна математика в той же степени, в какой сантехнику физика жидкостей
Анука сделай ка мне плиз программку которая определит максимальную загрузку, и углы опрокидывание корабля по форме корпуса с учетом волнения. Слабо без матана и физики жидкостей? Так вот и не удивляйтесь почему за бугром со знанием математики называют программистами и платят раз в 5 больше чем тем кто математику не знает и называются не программистами а кодерами.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
02.09.2016, 02:11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Так вот и не удивляйтесь почему за бугром со знанием математики называют программистами и платят раз в 5 больше чем тем кто математику не знает и называются не программистами а кодерами.
Теоретизируте опять?
Кодер - это административная должность в больницах такая. Программистов за рубежом называют программистами
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.09.2016, 02:57
Как
Цитата Сообщение от oldnewyear Посмотреть сообщение
Кодер - это административная должность в больницах такая. Программистов за рубежом называют программистами
Вообще програмиистов там называют Software Engeneer или Software Developer. Как там кодеров называют официально не знаю. Но в жаргоне IT пользуются именно programmer и coder (или monkey-koder). Это по опыту общения с зарубежными заказчиками.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
02.09.2016, 04:34
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Так вот и не удивляйтесь почему за бугром со знанием математики называют программистами и платят раз в 5 больше чем тем кто математику не знает
Вот это полный булшит
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
02.09.2016, 08:37
Цитата Сообщение от Shamil1 Посмотреть сообщение
Если ты пишешь на С++, то ты должен обладать высокой квалификацией, чтобы "не выстрелить себе в ногу".
Эта популярная точка зрения мне кажется слишком упрощенной. Да, бывают краши, утечки, повторные удаления и.т.п. - но это чисто "рабочие моменты", а совсем не "фатальные проблемы". Поэтому воспевание мусоросборщиков давно набило оскомину.

С др стороны потребность в максимально быстром коде (пусть даже ценой безопасности) всегда была и будет, а здесь другим языкам тягаться с "очевидными недостатками" C/C++ трудновато. Одна адресная арифметика чего стоит

Что на мой взгляд в плюсах "не фонтан" - поясню на примере. Вот пару дней назад потребовался ассоциативный контейнер (ключ-значение) который умеет хранить значения разных типов. Да, есть множество способов это сделать: QVariant, boost::any, boost::variant, свой велосипед, с темплейтами или без, и еще бог весть что. Но все они "под капотом" имеют довольно большой (и часто трудный) код. Сделать это легко и просто средствами языка невозможно. А всякие "парадигмы ООП" мало помогают. Это надо заводить базовый полиморфный класс, от него всех наследовать, приложенные усилия явно не соответствуют копеечной цели - всего-навсего хранить в мапе.

Конечно пришивать к переменной тип никто не будет, это уже не C/C++. Но подобные вещи часто возникают там и сям порождая очень "заумный" код.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
02.09.2016, 09:39
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
вернее все при помощи чего программист низкой квалификации имеет свойство косячить а высокой делать нужные дела.
Каким образом неявное приведение char к bool помогает Вам делать нужные дела?
Или ключевое слово mutable, единственное назначение которого, чтобы я, видя const метод, понимал, что на самом деле он может вести себя не как const.
Зачем нужен оператор ->, хотя из контекста всегда понятно, слева у нас ссылка или объект... при том что некоторые другие ключевые слова могут иметь по несколько различных смыслов в зависимости от контекста.
Кривые правила перегрузки функций, приводящие к неприятным эффектам.

Добавлено через 11 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Т.е. напиши свою систему пулов константного времени распределения/высвобождения под каждый тип (при этом не факт что менеджер памяти в комплекте с++ программы работает по другому). Зачем тогда вообще сборщик мусора нужен?
Зачем под каждый тип? Только для тех типов, которые активно создаются/удаляются на критических участках кода. Причём, в большинстве программ критических участков кода нет, либо на критических участках кода объекты не создаются и не удаляются.

Добавлено через 5 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну ну. те кто не может заниматься созданием алгоритма являются не программистами а кодерами.
Вы много новых алгоритмов придумали? (изобретение велосипедов и композиция известных алгоритмов не считается). Может быть есть алгоритм, который назвали Вашим именем?
0
Заблокирован
02.09.2016, 09:41

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Анука сделай ка мне
Анукать будешь своей бабушке в постели.


Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
программку которая определит максимальную загрузку, и углы опрокидывание корабля по форме корпуса с учетом волнения.
Ок. Ты мне тогда анукай программку для анализа шаблонов обращений к памяти в приложении, чтобы найти проблемы с cache & branch miss'ами, и предоставь инфу, как оптимизировать это.
По твоей логике программист еще должен быть бухгалтером, художником, медиком, музыкантом и вообще специалистом по всем областям, где используется ПО. Это полный бред расцветший на постсоветском пространстве. Программисту настолько же необходимы занания физики, насколько и медицины.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
за бугром со знанием математики называют программистами и платят раз в 5 больше
Это твои влажные фантазии Зарплаты у всех программистов примерно на одном уровне на любом языке из рассмотренных в теме. И ни о какой разнице в 5 раз речи точно не идет. Ты за свои слова ответить не можешь.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
02.09.2016, 09:42
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При этом С++ это как набор инструментов берешь нужный для конкретной задачи и
Поэтому можно в одной программе встретить 5 разных типов строк? И код по конвертации между ними - это 20% всего кода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2016, 09:42

Недостатки React
Здравствуйте. Расскажите пожалуйста о недостатках, архитектурный просчетах, неудобствах и т.д. с которыми вы сталкивались при написании...

Укажите на недостатки
Нужна ваша помощь. Написал я программу, которая вычисляет число Pi (в дальнейшем хочу добавить другие числа, и методы вычисления), это моя...

Недостатки AnyLogic
Сразу отмечу - я далёк от программирования и не имеют опыта работы в AnyLogic. Поэтому высказанное ниже носит субъективный характер и...

Какие недостатки
Люди, что можите сказать о http://www.rucar.ru? Заранее спасибо! :)

недостатки системы
Пожалуйста, скажите, кому что не нравится в windows 7 с точки зрения безопасности.


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru