OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 13 Декабрь, 2019 15:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 71 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 08 Апрель, 2010 11:27 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
Да.. Все методики профессионального образования предполагают заинтересованного студента.

Развивающие методики, которые эту заинтересованность вырабатывают, раньше как-то в начальной школе применялись (Занковская и проч.). Придётся скоро нам осваивать :) Только возраст упущен уже, законы-этапы развития личности... рожном не перешибёшь...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Апрель, 2010 10:11 

Зарегистрирован: Воскресенье, 08 Март, 2009 17:54
Сообщения: 372
Илья Ермаков писал(а):
Развивающие методики, которые эту заинтересованность вырабатывают, раньше как-то в начальной школе применялись (Занковская и проч.). Придётся скоро нам осваивать :) Только возраст упущен уже, законы-этапы развития личности... рожном не перешибёшь...

Да. И не только возраст упущен. Общий настрой в обществе не тот. Нет пропаганды: лучше знать, качественне делать, интеллект развивать. А этот настрой - ох как сильно влияет на нас - существ, по природе своей, стадных.
Недавно, в процессе изучения элементов JavaScript (ужастный язычок, однако), один студент сказал: на прошлых занятиях, мол, не так, чтобы интересно было (HTML), а сейчас - интересно, программированием занялись. Так меня эта фраза проразила. Т.е. такие фразы меня теперь УЖЕ поражают, поскольку являются редкостью.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 23 Апрель, 2010 23:05 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Вернемся к компактности кода.
Многократно в книжках было отмечено - пишите небольшие процедуры. Возникало предложение - ограничить размер процедур. Непонятно было, какой размер процедуры должен быть - каким числом ограничивать. Седни наткнулся на совершенно законное психологическое обоснование: число Миллера. 7 +- 2.
То есть, если более 9 операторов в процедуре - красный цвет, сигнализирующий о том, что работа процедуры плохо продумана.
Ы?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 08:06 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
Сомнительное это число, критикуют его многие (вот Паронджанов в том числе). Т.е., вроде как, применяют его не туда и не тем местом.

По поводу длины процедур - часто лучше оставить длинную, чем делить - если это процедура преимущественно последовательная. Во всякой системщине так часто бывает - много равноправных мелких шагов, которые группировать покрупнее - не придумаешь, как обозвать, да и незачем...

Тут по-другому надо. По сложности структурной, а не по длине.

Например:
- запрет иметь больше одного цикла в процедуре (сам всегда следую этому правилу; речь о независимых циклах; вложенные... часто тоже надо в процедуру, а при обучении - всегда; но в ряде случаев, конечно, они необходимы по эффективности);
- запрет организовывать циклы на уровне вложенности глубже, чем 1 (т.е. IF WHILE ... END ELSE .. END - можно, а вот в более глубокие IF-ы фигачить уже нельзя; разрешение на 1-м уровне - из опыта, опять же, что часто какая-то охрана перед циклом бывает нужна; а вот если глубже - то уже явно надо делить логику);
- ограничения по длине строк внутри гнёзд 2-го и более глубоких уровней (если 2-3 уровня IF-ов, то они сами по себе достаточно содержательны; внутреннее содержание уже надо отделять).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 08:16 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Какие полезные правила!!!!
Опять же представляется, что это конкретное применение все того же принципа KISS - Калашникова на уровне написания процедур.
Я думаю - это надо в отдельную тему "повесить" - как о циклах. С примерами...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 10:03 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Какие полезные правила!!!!
Ну да.
Результат работы с 5-клашками:
http://www.inr.ac.ru/~info21/troitsklic ... etap13.htm


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 10:04 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерий Лаптев писал(а):
Вернемся к компактности кода.
Многократно в книжках было отмечено - пишите небольшие процедуры. Возникало предложение - ограничить размер процедур. Непонятно было, какой размер процедуры должен быть - каким числом ограничивать. Седни наткнулся на совершенно законное психологическое обоснование: число Миллера. 7 +- 2.
То есть, если более 9 операторов в процедуре - красный цвет, сигнализирующий о том, что работа процедуры плохо продумана.
Ы?


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

Другой вариант: употребляешь в коде еще не созданную процедуру или функцию. Ее имя автоматически выделяется цветом как требующее определения. Когда появляется время, щелкаешь по этому имени и сразу попадаешь в окно/вкладку создания новой процедуры или функции. Фактические параметры уже подставлены на место формальных, что помогает понять, какие именно формальные параметры нужны.

Или, например, выделяешь выражение, шлеп по кнопке, и это выражение уже выделено в функцию, осталось только дать ей имя.

Поскольку с выбором английских имен у русскоязычных программистов проблемы, то и тут можно сделать какой-нибудь мастер-генератор названий, отсекающий зарезервированные и ранее использованные слова, поддерживающий правильный стиль. Вот образцы генераторов имен:
http://www.namestation.com/Default.aspx
http://www.google.ru/search?rlz=1C1CHMI ... 0%B8%D0%B9

По умолчанию система программирования должна сама присваивать условные имена типа procedure_12, которые программист должен заменить на более осмысленные.

:?: Кстати, у меня вопрос: дробление кода на процедуры может привести к более медленной работе программы? Можно ли как-то количественно оценить возможное замедление? Может быть, имеет смысл уведомлять программиста о часто вызываемых процедурах, чтобы тот попытался реструктурировать программу (в последнем случае будет полезно средство автоматического поглощения процедуры)?


Последний раз редактировалось Сергей Прохоренко Суббота, 24 Апрель, 2010 10:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 10:25 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Сергей, ваши предложения - это приемы из Рефакторинга. Естественно, редактор такими возможностями обладать должен по умолчанию. Но правила, озвученные Ермаковым в столь краткой форме - это более важная весчь...
О замедлении. В обучении и в огромном большинстве задач - это несущественно. Только в критических по времени задачах управления в реальном времени это может сказаться...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 10:27 

Зарегистрирован: Четверг, 23 Апрель, 2009 18:01
Сообщения: 219
Дробление не страшно, если компилятор будет делать инлайнинг всех процедур, что вызываются ровно один раз.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 10:39 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерий Лаптев писал(а):
Сергей, ваши предложения - это приемы из Рефакторинга. Естественно, редактор такими возможностями обладать должен по умолчанию. Но правила, озвученные Ермаковым в столь краткой форме - это более важная весчь...
О замедлении. В обучении и в огромном большинстве задач - это несущественно. Только в критических по времени задачах управления в реальном времени это может сказаться...


Согласен, что эти правила звучат привлекательно. Только хотелось бы, чтобы они воспринимались не как абсолютный запрет, а как рекомендация со стороны системы программирования. Подобно тому, как MS Word подчеркивает зеленой волнистой линией стилистически неудачные предложения. Хочешь - исправляешь, но иногда по-другому будет только хуже. Иногда ведь принципы хорошего стиля программирования могут противоречить друг другу (как принципы территориальной целостности и права на самоопределение), и конечный выбор останется за программистом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 11:11 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
Сергей Прохоренко писал(а):
Согласен, что эти правила звучат привлекательно. Только хотелось бы, чтобы они воспринимались не как абсолютный запрет, а как рекомендация со стороны системы программирования.
Они будут просто привычкой при надлежащем построении системы вводных курсов программирования. См. приведенную ссылку на занятие с 5-клашками.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 11:38 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Сергей Прохоренко писал(а):
Надо не запретами действовать, а наоборот, облегчать создание и сопровождение процедур. Для этого нужно продумать соответствующие средства в семантическом редакторе. Например, выделяешь кусок кода, шлеп по кнопке, и этот кусок кода уже выделен в отдельную процедуру, формальные параметры уже поставлены куда нужно и объявлены, а в теле программы появился вызов вновь созданной процедуры. Осталось только ввести в указанное место название процедуры и комментарии и сделать добавления в автоматически поддерживаемую электронную документацию.

Другой вариант: употребляешь в коде еще не созданную процедуру или функцию. Ее имя автоматически выделяется цветом как требующее определения. Когда появляется время, щелкаешь по этому имени и сразу попадаешь в окно/вкладку создания новой процедуры или функции. Фактические параметры уже подставлены на место формальных, что помогает понять, какие именно формальные параметры нужны.

Или, например, выделяешь выражение, шлеп по кнопке, и это выражение уже выделено в функцию, осталось только дать ей имя.

Ну, т.е., другими словамы, вы просто советуете использовать одну из сред разработки для Java :-)
Потому как то что вы описали уже давным давно является мейнстримом в программировании.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 11:59 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Прохоренко писал(а):
Надо не запретами действовать, а наоборот, ...
Сергей, на мой взгляд Вы только что подменили понятия. Запрет - это ограничение свободы, которое исходит от кого-то извне. А те правила, которые перечислил Илья, тоже ограничивают свободу, но здесь инициатива исходит от самого программиста, добровольно, так сказать. Такое самоограничение свободы называется не запретом, а дисциплиной. IMHO, дисциплина в программировании исключительно важна. Приведу пример из другой области, но думаю, что аналогия с программированием Вам будет ясна.

Если Вы печатаете на клавиатуре так как Вам подсказывает природа, то Вы обладаете абслютной свободой: любую клавишу Вы можете нажимать любым пальцем.
Если же Вы решили освоить слепой десятипальцевый метод, то тем самым Вы добровольно ограничиваете свою свободу. То есть устанавливаете для себя определённую дисциплину: каждую клавишу разрешается нажимать только определённым пальцем.
Результат такого самоограничения - Вы можете печатать не только быстрее, но и не глядя на клавиатуру.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 13:15 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Alexey Veselovsky писал(а):
Сергей Прохоренко писал(а):
Надо не запретами действовать, а наоборот, облегчать создание и сопровождение процедур. Для этого нужно продумать соответствующие средства в семантическом редакторе. Например, выделяешь кусок кода, шлеп по кнопке, и этот кусок кода уже выделен в отдельную процедуру, формальные параметры уже поставлены куда нужно и объявлены, а в теле программы появился вызов вновь созданной процедуры. Осталось только ввести в указанное место название процедуры и комментарии и сделать добавления в автоматически поддерживаемую электронную документацию.

Другой вариант: употребляешь в коде еще не созданную процедуру или функцию. Ее имя автоматически выделяется цветом как требующее определения. Когда появляется время, щелкаешь по этому имени и сразу попадаешь в окно/вкладку создания новой процедуры или функции. Фактические параметры уже подставлены на место формальных, что помогает понять, какие именно формальные параметры нужны.

Или, например, выделяешь выражение, шлеп по кнопке, и это выражение уже выделено в функцию, осталось только дать ей имя.

Ну, т.е., другими словамы, вы просто советуете использовать одну из сред разработки для Java :-)
Потому как то что вы описали уже давным давно является мейнстримом в программировании.


А какие именно среды разработки для Java? Передо мной стоит выбор из Eclips и NetBeans.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 13:48 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Info21 писал(а):
Сергей Прохоренко писал(а):
Согласен, что эти правила звучат привлекательно. Только хотелось бы, чтобы они воспринимались не как абсолютный запрет, а как рекомендация со стороны системы программирования.
Они будут просто привычкой при надлежащем построении системы вводных курсов программирования. См. приведенную ссылку на занятие с 5-клашками.

Такую привычку наставлениями не выработаешь. Это поначалу должна делать среда принудительно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 13:57 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Сергей Прохоренко писал(а):
А какие именно среды разработки для Java? Передо мной стоит выбор из Eclips и NetBeans.


В принципе, любую из великолепной тройки: Eclipse, IntelliJ IDEA, Netbeans.

IntelliJ IDEA в основном пишется таки нашими в питере. Да, и она единственная из тройки платная (есть Community Edition бесплатная и даже опенсорсная, но там возможности существенно обрезаны, впрочем, уровень поддержки языка там вроде бы почти тот же). IDEA славится/славилась тем, что у нее был самый широкий набор инструментов для рефакторинга/трансформации кода. Впрочем, сейчас особых преимуществ у неё нет. Eclipse и Netbeans практически догнали её в этом плане.

Подавляющее большенство java-программистов пользуются Eclipse. Для неё огромный выбор плагинов/компонентов (идеалогия -- всё есть плагин). Да, Eclipse это на самом деле не IDE, это что угодно. В зависимости от набора поставленных компонент. Это может быть IDE для Java, это может быть IDE для C++, Ada, Ruby, Ocaml, Erlang. А может быть вообще не IDE, а например Torrent client, может быть каталогизатор фотографий. Может быть клиент для аськи. Очень часто на базе Eclipse делают всяческие специализированные приложения. Например для диспетчерских всевозможных.

Лично я для Java использую Netbeans. Почему? Исторически сложилось ;-) Ну и, как по мне, она попроще еклипсы. Впрочем, возможна она для меня проще просто потому что я к ней больше привык (в плане программирования не Java, для программирования на C++ я обычно использую таки Eclipse).

В принципе современный netbeans это тоже конструктор подобно Eclipse, однако оно всё же изначально было IDE, Eclipse же является таким конструктором изначально.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 14:17 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Да возможности рефакторинга распределяются примерно так:
IDEA > Eclipse > Netbeans


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 18:11 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Info21 писал(а):
Сергей Прохоренко писал(а):
Согласен, что эти правила звучат привлекательно. Только хотелось бы, чтобы они воспринимались не как абсолютный запрет, а как рекомендация со стороны системы программирования.
Они будут просто привычкой при надлежащем построении системы вводных курсов программирования. См. приведенную ссылку на занятие с 5-клашками.

Такую привычку наставлениями не выработаешь. Это поначалу должна делать среда принудительно.
Ну почему же. 5-клашки по-другому просто не справляются. Как видно из приведенной ссылки. Отсюда привычка появляется весьма естественно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Апрель, 2010 20:47 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Info21 писал(а):
Ну почему же. 5-клашки по-другому просто не справляются. Как видно из приведенной ссылки. Отсюда привычка появляется весьма естественно.

Это у пятиклашек - я согласен.
Но мне приходится иметь дело с 2-м курсом, некоторые из которых уже гнут пальцы. Они уже "испорчены".
И главная отмазка - "работает же". Меня достало бороться с ветряными мельницами. Лучше - в среду загнать, и пусть думают и корячатся принудительно. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 25 Апрель, 2010 08:09 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
И главная отмазка - "работает же".
Ну так надо в требования прописать, что такая отмазка "не работает". Программа недоделана, гуляй дружок.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 71 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB