Кто знает, выскажите ваше мнение по вопросам: в чем состоит суть объектной (ООП) революции? И почему в последнее время стало "модным" закрывать поля в классах?
Буду очень благодарен, с уважением , pilot-istrebitel.
Re: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Pilot_istrebitel, Вы писали:
P_>Кто знает, выскажите ваше мнение по вопросам: в чем состоит суть объектной (ООП) революции? И почему в последнее время стало "модным" закрывать поля в классах?
2. Поля в классах надо закрывать не потому, что "модно", а потому, что способствует инкапсуляции. И это было всегда, независимо от каких-либо "мод". А инкапсуляция, в свою очередь, сильно способствует локализации ошибок.
Насчет революции — ничего не знаю, ИМХО, обычная эволюция. Просто все языки программирования постепенно становятся ОО. А насчет революции — это, наверное, фирмы трещат, так как продукты надо продавать. Вот и вопят на всех углах о своих супер-пупер-оо продуктах. Не обращай внимания — все идет своим чередом и находится на очередном витке спирали развития.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Pilot_istrebitel, Вы писали:
P_>Кто знает, выскажите ваше мнение по вопросам: в чем состоит суть объектной (ООП) революции? И почему в последнее время стало "модным" закрывать поля в классах?
Скрытие полей помогает помогает менять реализацию класса без изменения остального кода.
Также способствует надежности кода.
Re: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Pilot_istrebitel, Вы писали:
P_>Кто знает, выскажите ваше мнение по вопросам: в чем состоит суть объектной (ООП) революции? И почему в последнее время стало "модным" закрывать поля в классах?
Я думаю, тебе надо книжек почитать. Типа Объектно-ориентированный анализ и проектирование, Г.Буч.
Тогда слова "революция" и "модно" перестанут столь прочно ассоциироваться с ООП.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Pilot_istrebitel, Вы писали:
P_>Кто знает, выскажите ваше мнение по вопросам: в чем состоит суть объектной (ООП) революции? И почему в последнее время стало "модным" закрывать поля в классах? P_>Буду очень благодарен, с уважением , pilot-istrebitel.
Мне лично кажется, что всякая революция происходит, когда меняется подход к программированию. Я бы назвал 5 революций:
1. Переход от машинных команд к мнемонике (Assembler) — улучшение читаемости кода.
2. Язык с макросредствами (Macroassembler) — тут можно поспорить.
3. Язык более высокого уровня.
4. Структурное программирование — уход от операторов goto заменой их на циклы и ветвления.
5. Объектно-ориентированое программирование — выделение данных и функций для них в один блок (реализация метода решения сложных задач путем разделения на более мелкие).
А закрытие данных способствует локализации ошибок и облегчает замену алгоритмов работы класса, что облегчает сопровождение программ.
Re[2]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Socrat, Вы писали:
S>Мне лично кажется, что всякая революция происходит, когда меняется подход к программированию. Я бы назвал 5 революций:
S>1. Переход от машинных команд к мнемонике (Assembler) — улучшение читаемости кода. S>2. Язык с макросредствами (Macroassembler) — тут можно поспорить. S>3. Язык более высокого уровня. S>4. Структурное программирование — уход от операторов goto заменой их на циклы и ветвления. S>5. Объектно-ориентированое программирование — выделение данных и функций для них в один блок (реализация метода решения сложных задач путем разделения на более мелкие).
Ну и еще пару-тройку мелких восстаний
изобретение операционной системы
лисп и пролог
отделение данных от алгоритмов и возникновение субд
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, mihailik, Вы писали:
M>Я бы сильно не советовал эту книгу читать. Особенно людям, ещё не очень разбирающимся в ООП.
Хм. А мне как раз показалось, что книга правильная, т.к. там в отличие от всех этих "С++ за 30 часов" приведен пример полного цикла разработки софта с использованием ООП, а не дурацкие примеры с квадратами и прямоугольниками. Страуструп хорош, но после него очень трудно принять мысль, что ООП не синоним С++. Посоветуй альтернативные источники — я как-то мало книг читал, все больше доки
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Socrat, Вы писали:
S>>Мне лично кажется, что всякая революция происходит, когда меняется подход к программированию. Я бы назвал 5 революций:
S>>1. Переход от машинных команд к мнемонике (Assembler) — улучшение читаемости кода. S>>2. Язык с макросредствами (Macroassembler) — тут можно поспорить. S>>3. Язык более высокого уровня. S>>4. Структурное программирование — уход от операторов goto заменой их на циклы и ветвления. S>>5. Объектно-ориентированое программирование — выделение данных и функций для них в один блок (реализация метода решения сложных задач путем разделения на более мелкие). LVV>Ну и еще пару-тройку мелких восстаний LVV>изобретение операционной системы LVV>лисп и пролог LVV>отделение данных от алгоритмов и возникновение субд
Операционная система мало связана собственно с программированием. Примерно так же, как и интегрированная среда.
Лисп, Пролог и СУБД — параллельные ветви развития. Еще можно добавить сюда различные ветки, например, визуальное программирование (Builder, Delphi), SDL (здесь программирование заменяется рисованием алгоритмов), а также всевозможных систем, претендующих на звание "программирование без программистов".
Re[4]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Socrat, Вы писали:
LVV>>Ну и еще пару-тройку мелких восстаний LVV>>изобретение операционной системы LVV>>лисп и пролог LVV>>отделение данных от алгоритмов и возникновение субд
S>Операционная система мало связана собственно с программированием. Примерно так же, как и интегрированная среда.
Не-е-е-е-т! Где бы мы сейчас были, если бы не API, которые уже первые оси предоставили. А про интегрировагнную среду тоже самое нужно сказать: где бы мы сейчас были, если бы не Турбо Паскаль 3? Так что ито, и другое — очень существенные шаги в ПРАКТИЧЕСКОМ программировании. S>Лисп, Пролог и СУБД — параллельные ветви развития.
Во-первых, я не зря отделил. ИИ весь практически на лиспе и прологе и их последователях держится — очень больщой кусок программирования (функциональное, например).
Субд — из тех же революций, что и оси и интегрированные среды: где бы мы сейчас были, если бы данные не отделили от программ и не изобрели SQL???
S>Еще можно добавить сюда различные ветки, например, визуальное программирование (Builder, Delphi),
А вот с этим не могу согласиться — визуальное программирование — это детище Windows. ИМХО. гораздо важнее паттерны. S>SDL (здесь программирование заменяется рисованием алгоритмов), а также всевозможных систем, претендующих на звание "программирование без программистов".
Пока эти дела не оказывают такого существенного влияния на развитие программирования, как перечисленный мной "восстания".
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, mihailik, Вы писали:
M>Я бы сильно не советовал эту книгу читать. Особенно людям, ещё не очень разбирающимся в ООП.
M>Это не книга, а талмуд какой-то, написаный утомительным языком с совершенно ненужными отступлениями и бесполезными советами.
А за смешение бизнес уровня с уровнем представления так и вообще стрелять надо.
Re[5]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Socrat, Вы писали:
LVV>>>Ну и еще пару-тройку мелких восстаний LVV>>>изобретение операционной системы LVV>>>лисп и пролог LVV>>>отделение данных от алгоритмов и возникновение субд
S>>Операционная система мало связана собственно с программированием. Примерно так же, как и интегрированная среда. LVV>Не-е-е-е-т! Где бы мы сейчас были, если бы не API, которые уже первые оси предоставили. А про интегрировагнную среду тоже самое нужно сказать: где бы мы сейчас были, если бы не Турбо Паскаль 3? Так что ито, и другое — очень существенные шаги в ПРАКТИЧЕСКОМ программировании.
Интегрированные среды и операционные системы сильно упрощают программирование и служат его популяризации. Я же имел в виду те события, которые повлияли на стиль программирования.
S>>Лисп, Пролог и СУБД — параллельные ветви развития. LVV>Во-первых, я не зря отделил. ИИ весь практически на лиспе и прологе и их последователях держится — очень больщой кусок программирования (функциональное, например). LVV>Субд — из тех же революций, что и оси и интегрированные среды: где бы мы сейчас были, если бы данные не отделили от программ и не изобрели SQL???
Там же, где и сейчас. Может, я просто мало сталкивался с СУБД?
S>>Еще можно добавить сюда различные ветки, например, визуальное программирование (Builder, Delphi), LVV>А вот с этим не могу согласиться — визуальное программирование — это детище Windows. ИМХО. гораздо важнее паттерны.
Но они тоже влияют на стиль программирования. Всякий раз, когда я встречался с программистами под Windows и заговаривал о том, что надо закрывать члены классов так, как только можно, они делали круглые глаза и спрашивали "А зачем?".
S>>SDL (здесь программирование заменяется рисованием алгоритмов), а также всевозможных систем, претендующих на звание "программирование без программистов". LVV>Пока эти дела не оказывают такого существенного влияния на развитие программирования, как перечисленный мной "восстания".
Это да. Скорее не восстания, а тихий ропот.
Re[6]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Socrat, Вы писали:
S>Интегрированные среды и операционные системы сильно упрощают программирование и служат его популяризации. Я же имел в виду те события, которые повлияли на стиль программирования.
Тогда да, конечно.
LVV>>Субд — из тех же революций, что и оси и интегрированные среды: где бы мы сейчас были, если бы данные не отделили от программ и не изобрели SQL??? S>Там же, где и сейчас. Может, я просто мало сталкивался с СУБД?
Вероятно. А я имел удовольствие программисть еще в советские времена — вы меня извините — без БД — это кошмар.
S>>>Еще можно добавить сюда различные ветки, например, визуальное программирование (Builder, Delphi), LVV>>А вот с этим не могу согласиться — визуальное программирование — это детище Windows. ИМХО. гораздо важнее паттерны. S>Но они тоже влияют на стиль программирования. Всякий раз, когда я встречался с программистами под Windows и заговаривал о том, что надо закрывать члены классов так, как только можно, они делали круглые глаза и спрашивали "А зачем?".
Должен заметить, что неряшливому программированию гораздо больше способствовала именно визуализация на дисплее, а не столько Windows. Это дело в Советском союзе проходило при мне, поэтому я сам часто себя ловил на том, что не так тщательно, как раньше (при перфокартах, и особенно, при перфолентах) "вылизываю" текст программы. Стало легче просто еще раз прогнать программу — компилятор все скажет.
У вин-программистов такой стиль еще и сама Виндовс провоцирует, тут ничего нельзя поделать.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Socrat, Вы писали:
LVV>>>Субд — из тех же революций, что и оси и интегрированные среды: где бы мы сейчас были, если бы данные не отделили от программ и не изобрели SQL??? S>>Там же, где и сейчас. Может, я просто мало сталкивался с СУБД? LVV>Вероятно. А я имел удовольствие программисть еще в советские времена — вы меня извините — без БД — это кошмар.
Смотря какая задача. Я программировал в основном бортовые компьютеры, микроконтроллеры. Там никакими СУБД и не пахнет.
S>>>>Еще можно добавить сюда различные ветки, например, визуальное программирование (Builder, Delphi), LVV>>>А вот с этим не могу согласиться — визуальное программирование — это детище Windows. ИМХО. гораздо важнее паттерны. S>>Но они тоже влияют на стиль программирования. Всякий раз, когда я встречался с программистами под Windows и заговаривал о том, что надо закрывать члены классов так, как только можно, они делали круглые глаза и спрашивали "А зачем?". LVV>Должен заметить, что неряшливому программированию гораздо больше способствовала именно визуализация на дисплее, а не столько Windows. Это дело в Советском союзе проходило при мне, поэтому я сам часто себя ловил на том, что не так тщательно, как раньше (при перфокартах, и особенно, при перфолентах) "вылизываю" текст программы. Стало легче просто еще раз прогнать программу — компилятор все скажет. LVV>У вин-программистов такой стиль еще и сама Виндовс провоцирует, тут ничего нельзя поделать.
Я, когда перешел под Windows, по привычке старался вылизывать тексты программ. Но на это требуется время, а его-то как раз и не бывает...
Что касается сокрытия данных, то все мастера классов в Builder и Visual C++ создают новые классы, где все члены public. Что же тогда требовать от программистов? Да и проще открыть все, чем потом возиться со старым классом, если вдруг потребуется что-нибудь еще оттуда достать.
Re[8]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, Socrat, Вы писали:
LVV>>Вероятно. А я имел удовольствие программисть еще в советские времена — вы меня извините — без БД — это кошмар. S>Смотря какая задача. Я программировал в основном бортовые компьютеры, микроконтроллеры. Там никакими СУБД и не пахнет.
Вы случайно не из Питера?
Мне приходилось тоже такое писать для Авроры. Там, конечно, нет подобных задач.
Но приходилось и зарплату делать — вот где песня начинается!
S>Я, когда перешел под Windows, по привычке старался вылизывать тексты программ. Но на это требуется время, а его-то как раз и не бывает... S>Что касается сокрытия данных, то все мастера классов в Builder и Visual C++ создают новые классы, где все члены public. Что же тогда требовать от программистов? Да и проще открыть все, чем потом возиться со старым классом, если вдруг потребуется что-нибудь еще оттуда достать.
А в результате — профессионалы эти системы не используют. Тут неоднократно были топики, на чем кто пишет. Обычно отвечали так6 начинали на борландах, но замучились и перешли на VC6
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Socrat, Вы писали:
LVV>>>Вероятно. А я имел удовольствие программисть еще в советские времена — вы меня извините — без БД — это кошмар. S>>Смотря какая задача. Я программировал в основном бортовые компьютеры, микроконтроллеры. Там никакими СУБД и не пахнет. LVV>Вы случайно не из Питера? LVV>Мне приходилось тоже такое писать для Авроры. Там, конечно, нет подобных задач.
Нет, я из Владимирской области, сейчас работаю в Москве.
LVV>Но приходилось и зарплату делать — вот где песня начинается!
S>>Я, когда перешел под Windows, по привычке старался вылизывать тексты программ. Но на это требуется время, а его-то как раз и не бывает... S>>Что касается сокрытия данных, то все мастера классов в Builder и Visual C++ создают новые классы, где все члены public. Что же тогда требовать от программистов? Да и проще открыть все, чем потом возиться со старым классом, если вдруг потребуется что-нибудь еще оттуда достать. LVV>А в результате — профессионалы эти системы не используют. Тут неоднократно были топики, на чем кто пишет. Обычно отвечали так6 начинали на борландах, но замучились и перешли на VC6
Будем считать, что договорились.
Re[10]: Люди, помогите, пожалуйста, ответить на вопрос!
S>Хм. А мне как раз показалось, что книга правильная, т.к. там в отличие от всех этих "С++ за 30 часов" приведен пример полного цикла разработки софта с использованием ООП, а не дурацкие примеры с квадратами и прямоугольниками. Страуструп хорош, но после него очень трудно принять мысль, что ООП не синоним С++. Посоветуй альтернативные источники — я как-то мало книг читал, все больше доки
Я по ООП тоже мало читал книг. Да, наверное, это и к лучшему. Сдаётся мне, что практика и конкретика в этом деле значит больше теории.
Вполне надёжный путь: изучаешь какой-нибудь толковый ОО-язык, впитываешь через него все парадигмы, а уж по ходу можно теоретическую терминологию и прочий шаманизм осваивать. Толковыми языками для впитывания я бы принял на данный момент Яву, C# и Дельфи (в порядке полезности для изучения).
... << RSDN@Home 1.1.0 stable >>
Re[5]: Люди, помогите, пожалуйста, ответить на вопрос!
Здравствуйте, mihailik, Вы писали: M>Вполне надёжный путь: изучаешь какой-нибудь толковый ОО-язык, впитываешь через него все парадигмы, а уж по ходу можно теоретическую терминологию и прочий шаманизм осваивать. Толковыми языками для впитывания я бы принял на данный момент Яву, C# и Дельфи (в порядке полезности для изучения).
Неа. Ненадежный. Подавляющее большинство тех, кто знакомится с ООП через язык, попадают в ловушку представлений. Очень трудно после какого-то языка выбить представление о том, что ООП есть синоним некоторых ключевых слов. А ООП гораздо шире, чем любой из современных языков. К счастью, некоторым из жертв удается впоследствии выбраться из этой ловушки. Как правило, после чтения книг и изучения еще 2х-3х ОО-языков.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Люди, помогите, пожалуйста, ответить на вопрос!