ПрофильПрофиль
ПользователиПользователи
ГруппыГруппы
ПоискПоиск
 
ВходВход
 
Учебный форум для написания тестовых писем (песочница)

Форумы на FizMat >> IT-клуб >>
 
Трудности в освоении программирования
Предыдущая тема :: Следующая тема Страница 2 из 2
На страницу Пред.  1, 2
Юрка Юркин
На начало сообщения Re: Трудности в освоении программирования
Пт 11 Авг 2006 11:10
yurka
 
shagin писал(а):
Однако, приступая к ее изучению , к сожалению, не многим удается освоить этот предмет... Поделитесь своим опытом или трудностями, с которыми Вы сталкивались приступая к изучению этого предмета...
Я изучал Фортран, потом ПЛ-1, потом Паскаль, потом С++. Занимался математическим моделированием технических объектов с 1988 по 1994 год. Сейчас конечно подзабылись детали, но не принципы и стиль (мастерство не пропьёшь Smile ).

1) Более всех мне понравился язык Паскаль. Он хорош и для начинающих, и для профессионалов.
2) Лучшая и самая понятная книга по паскалю, которую я прочитал: Абрамов В.Г., Трифонов H.П., Трифонова Г.H. Введение в язык паскаль.
3) Лучшая книга по стилю программирования: Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ.
4) В программировании главное - стиль. В стиле главное - ясность и понятность. В ясности главное - структура. В структуре главное - чёткая функциональная декомпозиция.
Короче говоря надо ясно мыслить и ясно излагать, как будто пишите программу для другого человека.
Большая программа может правильно и хорошо работать только если она состоит из добротных и простых составных частей.
5) Этапы программирования (разработка алгоритма, создание программы, отладка) - мысль хорошая, но вредная. Она порождена наверное начальниками, которым хочется контролировать сроки выполнения работ. Я в последние годы выращивал программы с нуля, наращивая алгоритмы вместе с кодом и тут же отлаживая их после каждого изменения, то есть совмещая все три этапа. Это гораздо эффективнее и проще.
6) Разбираться в чужих программах - вещь неблагодарная. Это не должно быть правилом, скорее форсмажором.

Ответить с цитатой     Посмотреть профиль Отправить личное сообщение
Павел Жданович
На начало сообщения Re: Трудности в освоении программирования
Ср 23 Авг 2006 05:58
zhd
 
yurka писал(а):

5) Этапы программирования (разработка алгоритма, создание программы, отладка) - мысль хорошая, но вредная. Она порождена наверное начальниками, которым хочется контролировать сроки выполнения работ. Я в последние годы выращивал программы с нуля, наращивая алгоритмы вместе с кодом и тут же отлаживая их после каждого изменения, то есть совмещая все три этапа. Это гораздо эффективнее и проще.


Не могу согласиться. Этапы программирования выдумали очень мудрые люди.

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

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

То же самое касается Open Source - проектов, когда народу - тьма, а продукт должен получиться один.

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


yurka писал(а):

6) Разбираться в чужих программах - вещь неблагодарная. Это не должно быть правилом, скорее форсмажором.


Да, поэтому весьма забавно бывает беседовать с отдельными студентами, которые приносят чужую программу и изо всех сил стараются объяснить, как она работает. И смех, и грех... Confused

Ответить с цитатой     Посмотреть профиль Отправить личное сообщение
Юрка Юркин
На начало сообщения Re: Трудности в освоении программирования
Чт 31 Авг 2006 17:12
yurka
 
zhd писал(а):
Не могу согласиться. Этапы программирования выдумали очень мудрые люди.

А похоронят эти этапы ещё более мудрые люди Smile
Посмотрите на матушку-природу. Она тоже создаёт сложные объекты. Например биологические. К существующему объекту она добавляет мутацию и кидает в жернова естественного отбора, то есть отлаживает. И так много раз. Маленький шаг по изменению объекта и тут же отладка. Это гораздо более естественный способ программирования, чем тот, который рекламируется в книжках. Я видел как люди не могли по старой методике отладить программу гидроаккустического комплекса размером около 100 тысяч строк, который разрабатывался несколько лет. Государственные деньги были съедены, на выходе пшик.

Кстати, могу порассуждать, как возникли эти самые этапы в жизни и почему они поддерживаются в литературе сейчас. Первые программисты были отделены от ЭВМ. Программисты работали на машинах мало, по записи, в общих залах. Реалии заставляли писать программы целиком на бумаге, переводить всё на перфокарты и всё сразу отлаживать. Сейчас, с изменением мат. части может и должна меняться технология программирования. А в книжках зафиксирована старая методика. Её переписывают из старых книжек в новые потому что научная среда - вещь специфическая. В ней главное - не обидеть старших товарищей. Кроме того, разделение на этапы даёт три полновесные главы в монографии. Никому из писателей не выгодно упрощать. И последнее: чтобы предложить лучшую технологию программирования нужно уметь программировать на уровне как минимум выше среднего. Но где ж таких взять среди писателей ? Wink
Что касается описания алгоритмов. Мы у себя в лаборатории системного моделирования создали даже специальный язык описания алгоритмов под названием ОпАл. Отстойнейшая, мёртворождённая вещь, скажу я Вам. Я иногда пользовался блок-схемами. Вещь хорошая. Но если долго программировать, то можно обходиться и без этого инструмента.

Ответить с цитатой     Посмотреть профиль Отправить личное сообщение
Павел Жданович
На начало сообщения Re: Трудности в освоении программирования
Чт 31 Авг 2006 23:44
zhd
 
yurka писал(а):
zhd писал(а):
Не могу согласиться. Этапы программирования выдумали очень мудрые люди.

А похоронят эти этапы ещё более мудрые люди Smile


Если они будут еще мудрее, то они обобщат предыдущий опыт, а не станут его хоронить. Последнее как раз более всего свойственно наивности и невежеству.

yurka писал(а):

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


А вот если уподобиться природе и конструировать таким путем автомобили, то мы получим естественный отбор уже среди людей.
Smile

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

И, наконец, природа работает одна, и ей не нужно согласовывать свои взгляды на человека с другой природой, которая хочет, чтобы он был зеленым и трехпалым.

yurka писал(а):

Я видел как люди не могли по старой методике отладить программу гидроаккустического комплекса размером около 100 тысяч строк, который разрабатывался несколько лет. Государственные деньги были съедены, на выходе пшик.


Это проблемы тех людей, а не подхода, который нами обсуждается.
Или эта задача потом была решена, но уже с Вашим подходом?

Цитата:
Сейчас, с изменением мат. части может и должна меняться технология программирования.


Технологии меняются постоянно. Вот та же самая RAD.
Но не методология. Проектный метод и все этапы реализации остались. Они просто технологически по-новому решаются.

Цитата:
научная среда - вещь специфическая. В ней главное - не обидеть старших товарищей.


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

Цитата:

Я иногда пользовался блок-схемами. Вещь хорошая. Но если долго программировать, то можно обходиться и без этого инструмента.


Нескромный вопрос. А какого уровня проект является самым сложным из тех, которые полностью завершены Вашим методом (задача, сроки, количество исполнителей)?

Ответить с цитатой     Посмотреть профиль Отправить личное сообщение
Юрка Юркин
На начало сообщения Re: Трудности в освоении программирования
Пт 01 Сен 2006 12:09
yurka
 
zhd писал(а):
... Последнее как раз более всего свойственно наивности и невежеству.
Не буду спорить, Вам виднее Smile
zhd писал(а):
... А вот если уподобиться природе и конструировать таким путем автомобили, то мы получим ...
Вы как-то неуважительно о природе. Между тем, самые эффективные решения и алгоритмы существуют именно в природе. Алгоритм эволюции сложных систем - один из них. В лучшем случае мы можем учиться у природы. Взгляд на природу сверху вниз - это детская болезнь человечества и не верен с точки зрения современной культурологии.
zhd писал(а):
... Кроме того, природа никуда не торопится.
Не поспешая, она сумела создать живой организм. А человек, торопясь и суетясь, может ? Wink
zhd писал(а):
... Или эта задача потом была решена, но уже с Вашим подходом?
Нет. Всё закончилось печальнее и справедливее. Группа, занимающаяся данным направлением распалась. Люди ушли. Остался один человек, который пытался сделать хотя бы упрощённую модель системы, но у него не вышло. Ошибки продолжали лезть со всех сторон. Потом и он уволился.
zhd писал(а):
... в науке не принято обижать старших потому, что это признак невежества.
А ещё будет не найти рецензетна, научного руководителя, надо помнить о защите докторской, потом захочется чтобы взяли в член-коры, дали заслуженного деятеля и т. д., до пенсии. Вобщем фронда - это бесперспективняк, особенно если нет таланта.
zhd писал(а):
... Нескромный вопрос. А какого уровня проект является самым сложным из тех, которые полностью завершены Вашим методом (задача, сроки, количество исполнителей).
Действительно, не скромный. Так как тематика у нас была только закрытой. Ну да времени прошло много, расскажу. Лично я при помощи своей методики за один год полностью завершил разработку верхнего уровня модели боя неограниченного числа подводных лодок и надводных кораблей. Верхний уровень модели включал в себя всё кроме детализации работы отдельных комплексов, таких как гидроаккустика, навигация, торпедный отсек, БИУС и прочее. Данные комплексы имели в моей модели упрощённые алгоритмы обработки информации, но набор данных, которыми они обменивались, были реальными.
В итоге всё двигалось, стреляло, уклонялось, взрывалось и прочее. Причём в одной моделе за счёт продвинутого алгоритма расчёта шага моделирования удалось совместить совершенно разные эпизоды боя: и медленные (слежение за противником), и скоротечные (погоня торпеды за объектом, взрыв). Кроме этого, модель включала оригинальный интерфейс, разработанный для ввода начальных данных и отображения результатов (редактор текстов, система меню, интерактивная карта, пакет диаграмм и прочее). Общий объём - порядка 200 листов кода. Это достаточно компактная основа, "скелет" для создания настоящей, подробной модели. Далее отдельные узкие специалисты должны были создавать модели отдельных систем и подвешивать их к остову.
Так вот, отлажена моя модель была идеально. Сбоев не давала и я был в ней уверен. При помощи неё я попутно решил ещё пару-тройку проблем в смежных темах, которыми занимались мои коллеги, помог аспирантам решить их задачки. Вобщем, результатом горжусь до сих пор.

Ответить с цитатой     Посмотреть профиль Отправить личное сообщение
Павел Жданович
На начало сообщения Re: Трудности в освоении программирования
Сб 02 Сен 2006 11:56
zhd
 
yurka писал(а):

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


Я, напротив, не смотрю на природу сверху вниз. Я лишь утверждаю, что природа может себе позволить то, чего не можем позволить себе мы. В частности, она может, не торопясь и в одиночку, создавать формы путем естественного отбора. Smile
Цитата:

zhd писал(а):
... Кроме того, природа никуда не торопится.
Не поспешая, она сумела создать живой организм. А человек, торопясь и суетясь, может ? Wink


Люди совсем не одинаковы. Одни суетятся, другие создают. Smile

Цитата:
zhd писал(а):
... Нескромный вопрос. А какого уровня проект является самым сложным из тех, которые полностью завершены Вашим методом (задача, сроки, количество исполнителей).

Действительно, не скромный. Так как тематика у нас была только закрытой. Ну да времени прошло много, расскажу. Лично я при помощи своей методики за один год полностью завершил разработку верхнего уровня модели боя неограниченного числа подводных лодок и надводных кораблей.


Действительно, задача большая и интересная.
Но, тем не менее, Вы ее решали в одиночку. Это первое. Второе. Меня удивляет, что Ваши заказчики не позаботились о том, чтобы алгоритмы, использованные в программе, были описаны стандартным образом. Что, если увольняется разработчик? По Вашему собственному мнению, копаться в чужом коде - это просто каторга, под чем я готов подписаться. Возможно, так получилось из-за нехватки времени. И так оно чаще всего происходит. Но это не есть хорошо.
Представим, что все это доведено до реализации, но на испытаниях дало сбой. По чьей вине? Непонятно. Создают комиссию. Она пытается разобраться, в том числе, и в Вашем коде и обнаруживает, что "на это место уж нету карты". Нехорошо. Разбираются. Выясняют, что не был учтен какой-либо фактор. Вы о нем понятия не имели, в постановке задачи этого не было. А что было? Где техзадание? Технический проект? Эскизный проект?
Это я фантазирую, конечно, но подобное могло быть.
А так - понятно, что на практике большая часть вещей пишется мелкими итерациями.

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

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Математический факультет Волгоградского государственного педагогического университета
Учебный компьютерный центр ВГПУ, 2005-2007
Powered by phpBB © phpBB Group