Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП vs %Name%, размышления о проектировании 
:(
    Опции темы
Majestio
  Дата 18.1.2019, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.12.2010

Репутация: нет
Всего: нет



Буэнос диас, амигос!

Понемногу изучая Rust, я столкнулся с тем, что привычные приемы проектирования "не работают". Конечно же я об ООП и его паттернах проектирования. Некоторые "коллеги по цеху" уже разочаровались по стопицот раз, переписывая С++ код на Rust.

В представленной выше ссылке, как по мне, интересна не сама статья как натянуть сову на глобус, а последующие обсуждения. Там промелькнуло хорошее высказывание "Нет ООП-задач. Есть один из подходов - это используя ООП. Как будто он один единственный" (не дословно). 

Собственно вопросы к обсуждению

Приступая к проектированию проекта, большинство разработчиков, которые худо-бедно владеют ЯП с полной поддержкой ООП, этот подход и выбирают. Я не имею ввиду 100-строчные "хелоу ворлд" утилиты. А нормальные, более-менее сложные проекты.

1) А как быть если полной поддержки ООП в ЯП нет?
2) Есть ли приемы/методики проектирования не менее удобные чем объектно-ориентированное?
3) А есть ли для них свои "паттерны проектирования", которые есть для ООП?

 smile  

ЗЫ: Аббревиатуру "ООП" читаем как "Объектно-ориентированное программирование" или "Объектно-ориентированное проектирование" по контексту.
PM MAIL WWW   Вверх
LSD
Дата 21.1.2019, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: нет
Всего: 537



Цитата(Majestio @  18.1.2019,  18:20 Найти цитируемый пост)
1) А как быть если полной поддержки ООП в ЯП нет?

user posted image


Цитата(Majestio @  18.1.2019,  18:20 Найти цитируемый пост)
2) Есть ли приемы/методики проектирования не менее удобные чем объектно-ориентированное?

Удобство понятие сильно субъективное, но процедурный и функциональный подход существуют и имеют своих приверженцев. На том же Си есть очень большое количество ПО, включая ядра ОС.


Цитата(Majestio @  18.1.2019,  18:20 Найти цитируемый пост)
3) А есть ли для них свои "паттерны проектирования", которые есть для ООП?

Конечно. Широко известный map и reduce это как раз такой шаблоны из мира функционального программирования.


ООП в целом достаточно универсальный инструмент и хорошо подходит для большинства задача. Но есть задачи которые им не решаются или решаются плохо. Например ООП не нужно если цель написать скрипт инсталяции и запуска некой программы, там просто не нужны объекты, достаточно процедур. Или например ядро ОС где накладные расходы на объекты не приемлимы.
Как правило ООП или не ООП, определяется задачей - насколько там применимы те или иные языки. И наличием разработчиков с соответвующими навыками.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ksnk
Дата 21.1.2019, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Majestio, Rust - это заменитель С - языка системного уровня, того, который без плюсов и без решеток... того, который еще от Керниган и Ричи. Языку системного уровня не особо нужны всякие заморочки вроде объектов, так же как они не очень то были нужны С. 
Проблема С в том, что он создавался давно, имел довольно странный, по теперешним понятиям, синтаксис и на нем оказалось написано много чего важного, например ядро Юникса. Все это кому-то хочется переписать, вот и появился язык. 
Правда, как и для всех языков, растоманы желают быть владычицей морскою, а не сидеть  отведенной авторами языка луже. вот от того и плач...
Предсказываю появлние Rust++, за ним Rust# чтобы история пошла по новому циклу развития )))


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
LSD
Дата 21.1.2019, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: нет
Всего: 537



Цитата(ksnk @  21.1.2019,  15:03 Найти цитируемый пост)
Проблема С в том, что он создавался давно, имел довольно странный, по теперешним понятиям, синтаксис и на нем оказалось написано много чего важного, например ядро Юникса. Все это кому-то хочется переписать, вот и появился язык.

Rust борется не с синтаксисом, он сам не далеко ушел от Си.  Основная идея Rust это безопасность, искоренить все эти утечки памяти и обращения по нулевому указателю.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ksnk
Дата 21.1.2019, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Цитата(LSD @  21.1.2019,  15:44 Найти цитируемый пост)
не далеко ушел от Си.

?
h-файлы, перегруженные деталями описания функций и т.д. ? 
https://nsu.ru/xmlui/bitstream/handle/nsu/9...amp;isAllowed=y
страница 31, например... Вот такой он, С )))
Хотя ядро написано уже на более современном, конечно....



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 23.1.2019, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ksnk @  21.1.2019,  21:03 Найти цитируемый пост)
имел довольно странный, по теперешним понятиям

Не понял, и что там не так ? Учитывая что именно этот синтаксис и заимствовали многие, более "успешные" коллеги ?

Цитата(ksnk @  22.1.2019,  01:18 Найти цитируемый пост)
страница 31, например... Вот такой он, С )))

И что там, кроме не понятно зачем использованного капса ? Это же будет синтаксическая ошибка вроде ) 
То что там описано, хоть один компилятор си скомпилирует ? ) Может все же лучше на практику смотреть, а не на теорию ?

Добавлено через 12 минут и 25 секунд
Цитата(ksnk @  22.1.2019,  01:18 Найти цитируемый пост)
Хотя ядро написано уже на более современном, конечно....

https://stackoverflow.com/questions/2060049...he-linux-kernel
90-й год современность, да  smile 
PM MAIL   Вверх
_zorn_
Дата 23.1.2019, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



По вопросу топикстартера - надо применять подходы (возможно вы их не до конца поняли) используемого языка/фреймворка, а не заставлять язык/фреймворк работать так как вы "привыкли". Если не получается - нафига вам этот кактус ?
PM MAIL   Вверх
ksnk
Дата 23.1.2019, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Цитата(_zorn_ @  23.1.2019,  15:09 Найти цитируемый пост)
Не понял, и что там не так ?
 zorn, все копируют базовый синтаксис С++, избегая или меняя классовые различия. Вот он всем привычен и не вызывает раздражение при частом использовании. И не нужно его путать с синтаксисом С. Это две очень большие разницы...




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 23.1.2019, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ksnk @  23.1.2019,  22:41 Найти цитируемый пост)
синтаксис С++

ШТА ???

Вы вообще реально в теме или "теоретик" ? "Синтаксис С++" какбе из Си.  "++" это классы, ООП и вот это вот все.
PM MAIL   Вверх
ksnk
Дата 23.1.2019, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



_zorn_, считаю что в теме. smile Писал что-то для микроконтроллеров на самом настоящем С. В сборках использовался QuickC от Микрософт, он com файлы собирал как-то более удачно, чем борланд.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 23.1.2019, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ksnk @  24.1.2019,  01:10 Найти цитируемый пост)
 Писал что-то для микроконтроллеров на самом настоящем С. В сборках использовался QuickC от Микрософт

Уделал  smile Но ведь Си не Микрософт изобрел ? )

А что есть "настоящий С" ? То что у вас в голове (потому что "было дело") или то что происходит в реальности ?

Ну где мля на Си, INT капсом пишут (ага он case sensitive  smile )
PM MAIL   Вверх
ksnk
Дата 23.1.2019, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



_zorn_, то, что я привел в ссылке - книга самого Кэрнигана и Ричи. Я сам удивлен стилю, но как иллюстрация к моему тезису, что "раньше все было совсем плохо" это подходит лучше. Сам я писал на более привычном - с фигурными скобками, а не закрывающими тегами. Хотя приходилось по 2 раза перечислять параметры каждой функции и еще дублировать описания функций в Н файл.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 26.1.2019, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ksnk @  24.1.2019,  04:19 Найти цитируемый пост)
книга самого Кэрнигана и Ричи

И что ? Кто то так сейчас пишет ?  smile 

И писал вообще последние 20 лет ?  smile 

Это сообщение отредактировал(а) _zorn_ - 26.1.2019, 06:19
PM MAIL   Вверх
ksnk
Дата 26.1.2019, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Цитата(_zorn_ @  26.1.2019,  06:16 Найти цитируемый пост)
И что ? Кто то так сейчас пишет ?   
 При чем тут "пишет"? Проблема в том, что нужно "переписать" то, что написано ранее. 

Вот, например опубликованы исходники версий юникса для всяких устарелых машин https://www.linux.org.ru/news/opensource/13319215
1972 год...

Код

main(argc,argv)
char **argv;
{
char buf[512];
int fold, fnew, n;
char *p1, *p2, *bp;
int mode;
        if(argc != 3) {
                write(1,"Usage: cp oldfile newfile\n",26);
                exit();
        }



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
LSD
Дата 28.1.2019, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: нет
Всего: 537



Стиль кода, это не самая большая проблема. В новом проекте можно принять новый, хороший стиль кода. Проблема в концепции. Си как был "высокоуровневым ассемблером", так им и остался.
А новые языки пытаются привнести новые парадигмы: Go - асинхронность, Rust - безопасность.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема »


 




[ Время генерации скрипта: 0.1514 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.