Перейти к содержанию

Программирование - это практика? Правильный подход


VladimirS

Рекомендуемые сообщения

 

 


Он имел в виду: "Если хотите понять смысл скрипта, изучите его самостоятельно"?

 

Он имел в виду, что-то типа: "на ошибках учатся" и помогать особо не собирался. Как я уже отвечал выше: "Мудрость приходит только с годами" (с опытом), этому нельзя научить.

 

Универсального и единственного решения (алгоритма) нет и быть не может.

Ссылка на сообщение
Поделиться на другие сайты

 

 


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

 

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

 

 

 


В итоге БД была денормализована, многие вещи сделаны совершенно неправильно, но скорость работы в итоге возросла на 6 порядков !

 

Может ли тогда мое предположение, сделанное в данной теме быть верным:

  1. Необходимо изучить и в совершенстве понимать основные азы и стандарты программирования (первый топик в моей теме утверждает обратное. Каюсь, неверно выразил свою мысль :mmm: )
  2. В дальнейшем, не стоит глубоко погружаться в теорию, выискивая все новые классические алгоритмы (процесс этот может быть бесконечным).
  3. Лучшим вариантом продолжения обучения будет практика работы над конкретным продуктом - анализ характеристик собственных набитых шишек и их лечение. Параллельно, конечно, необходимо продолжить изучение классических алгоритмов, но уделять им уже значительно меньшее время, чем практике.

 

 

 


теория алгоритмов. Без умения четко представить решение задачи, разбить ее на подзадачи и т.п. программу написать нереально. И наблюдая за своими дипломниками я нередко вижу, что они не могут четко себе представить, как будет работать их программа (или устройство - не важно).

 

Вопрос к Вам, как к профессиональному преподавателю и, как я понял, активному программисту: так ли важно изучать вдоль и поперек эти теории алгоритмов? Насколько они помогают? 


 

 


Он имел в виду, что-то типа: "на ошибках учатся" и помогать особо не собирался.

 

То есть он был сторонником того, чтобы Вы самостоятельно придумали решение проблемы вместо того, чтобы воспользоваться готовым решением.

 

Я стремлюсь найти ответ на животрепещущий вопрос: в каких случаях следует брать готовые решения, а когда - придумывать эти решения самому (даже в случаях, когда этими решениями можно воспользоваться) :morganie:

 

Цель: научиться эффективно программировать (допустим, жесткие сроки решения задачи отсутствуют) 

Ссылка на сообщение
Поделиться на другие сайты

научиться эффективно программировать

 

Ну, это звучит как: "хочу быть крутым"...

 

Давайте все-таки определимся с приоритетами: ЗНАНИЯ (признание, слава, уважение, польза обществу, изобрести что-то новое) или ПРИБЫЛЬ ("быстро срубить бабла")?

 

Выбор приоритета и будет ответом на ваш вопрос. В каких пропорциях смешивать приоритеты зависит только от вас.

 

Никогда не ищите "идеал", выбирайте середину. Невозможно все знать, ровно как и нельзя заработать все деньги.

 

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

 

Отвечу, с позволения, за "Zaitsev Oleg".

Из любого правила есть исключения.

Денормализация является вполне обычным приемом для "упрощения" структур БД, т.е. своего рода исключение и общего правила.

Изменено пользователем ACIK
Ссылка на сообщение
Поделиться на другие сайты

 

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

 

1. Правильно ли я понял: классические алгоритмы не работали должным образом, так как они были написаны и оптимизированы без учета необходимости "сшивки" той степени сложности, которая была у Вас?

 

 

 

В итоге БД была денормализована, многие вещи сделаны совершенно неправильно, но скорость работы в итоге возросла на 6 порядков !

 

2. Может ли тогда мое предположение, сделанное в данной теме быть верным:

  1. Необходимо изучить и в совершенстве понимать основные азы и стандарты программирования (первый топик в моей теме утверждает обратное. Каюсь, неверно выразил свою мысль :mmm: )
  2. В дальнейшем, не стоит глубоко погружаться в теорию, выискивая все новые классические алгоритмы (процесс этот может быть бесконечным).
  3. Лучшим вариантом продолжения обучения будет практика работы над конкретным продуктом - анализ характеристик собственных набитых шишек и их лечение. Параллельно, конечно, необходимо продолжить изучение классических алгоритмов, но уделять им уже значительно меньшее время, чем практике.

 

 

 

теория алгоритмов. Без умения четко представить решение задачи, разбить ее на подзадачи и т.п. программу написать нереально. И наблюдая за своими дипломниками я нередко вижу, что они не могут четко себе представить, как будет работать их программа (или устройство - не важно).

 

3. Вопрос к Вам, как к профессиональному преподавателю и, как я понял, активному программисту: так ли важно изучать вдоль и поперек эти теории алгоритмов? Насколько они помогают? 

 

 

Он имел в виду, что-то типа: "на ошибках учатся" и помогать особо не собирался.

 

То есть он был сторонником того, чтобы Вы самостоятельно придумали решение проблемы вместо того, чтобы воспользоваться готовым решением.

 

Я стремлюсь найти ответ на животрепещущий вопрос: в каких случаях следует брать готовые решения, а когда - придумывать эти решения самому (даже в случаях, когда этими решениями можно воспользоваться) :morganie:

 

Цель: научиться эффективно программировать (допустим, жесткие сроки решения задачи отсутствуют) 

 

1. Как правильно заметил ACIK мой пример демонстрирует, что практически любой идеальный и в общем-то совершенно правильный алгоритм или подход не всегда работает, так как есть исключения или некая специфика. Отсюда следствие - слепое использование готовых алгоритмов и подходов неправильно и не оптимально.

2. С п.п. 2 списка не соглашусь - в  теорию можно и нужно погружаться, но в разумных пределах. Нужно только найти некую "золотую середину", любой перегиб в сторону теории/практики/использования готовых алгоритмов ничего хорошего не даст. Я бы еще добавил одну позицию с номером 0  - "необходимо научиться составлять технические задания, четко и точно формализуя требования к разрабатываемому приложению и его функционалу". Дело в том, что без четкого и грамотно составленного ТЗ принципиально невозможно сделать нормальные алгоритмы, так как мы не знаем, что должна делать программа. И некачественное ТЗ зачастую приводит к многочисленным переделкам программы, или еще хуже - по изначальному ТЗ делается грамотное приложение, потом выясняется, что в ТЗ забыли учесть что-то важное, и грамотное решение для изначального ТЗ становится совершенного безграмотным и неоптимальным для нового.

3. Изучать теории алгоритмов важно. Но без фанатизма... Можно например потратить 5 лет на зазубривание трехтомника Кнута наизусть, и не применить и доли процента из описанного там. А можно прочитать его, поставить на полку и знать, что он там стоит и что в случае надобности в нем можно найти :) Аналогично в остальном... Плюс следует понимать, что задача задаче рознь - например, написание программ под 1C это одно, написание программы управления баллистической ракетой - другое. Универсального рецепта на все случаи жизни нет.

 

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

Ссылка на сообщение
Поделиться на другие сайты


Давайте все-таки определимся с приоритетами: ЗНАНИЯ (признание, слава, уважение, польза обществу, изобрести что-то новое) или ПРИБЫЛЬ ("быстро срубить бабла")?

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

 

Дело в том, что в процессе обучения программированию я люблю не только изучать сам предмет, но и исследовать сам процесс обучения. Это одно из моих хобби.

Вот я и стремлюсь найти золотую середину: изучать больше полезного, и избегать лишнего с точки зрения приумножения знаний.

 

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

 

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


 


я советую начать подбирать техническую библиотеку по предметной области, это никогда не будет лишним.

 

 

Можете ли поделиться правилами о подборе такой технической библиотеки? Понимаю, что все это расписано в интернете, но интересен Ваш подход к этому делу :good:

 

 
Ссылка на сообщение
Поделиться на другие сайты

 

Можете ли поделиться правилами о подборе такой технической библиотеки? Понимаю, что все это расписано в интернете, но интересен Ваш подход к этому делу :good:

 

У меня правило простое - я стараюсь постоянно пополнять домашнюю библиотеку, процесс сдерживается местом в шкафах и здравым смыслом :) Такой подход мне привили родители еще со школьных времен - что если занимаешься каким-то делом, то по нему следуют иметь максимально полный комплект литературы. Это себя оправдывает, например только по программированию/администрированию и электронике у меня сейчас под рукой 286 "бумажных" книг в личной библиотеке. Правила подбора простые:

- я игнорирую книги серий "для чайников", лучше ничего, чем такое

- по любому направлению желательно иметь комплект книг типа "справочник", "учебник", "практика использования X". Материал таких книг явно будет перекрываться, но это скорее плюс, чем минус.

- по всем выбранным направлениям я отслеживаю новинки, сейчас это несложно делать через Интернет-магазины

Ссылка на сообщение
Поделиться на другие сайты

@Zaitsev Oleg, не совсем в тему, какую литературу вы посоветуете для изучения электроники и проектирования усилителей? Очень желательно, чтобы эта литература была понятна начинающему.

Ссылка на сообщение
Поделиться на другие сайты

@Zaitsev Oleg, не совсем в тему, какую литературу вы посоветуете для изучения электроники и проектирования усилителей? Очень желательно, чтобы эта литература была понятна начинающему.

Изучение электроники - очень широкое направление. В идеале необходимо изучать с азов, причем если есть желание проектировать что-то свое - то задача радикально усложняется, так как придется изучать методику расчетов различных каскадов, способы их согласования, обратные связи с их плюсами и минусами и т.п. Плюс придется освоить методику моделирования электрических схем, это отдельное направление. Хороших учебников под рукой нет, так что не рискну советовать (когда я был студентом, у нас этот предмет вел известный своими книгами профессор Дьяконов, считали мы эти усилители на курсовых, могу поискать перечень рекомендуемой литературы в конспектах лекций - но элементная база за 20 лет поменялась радикально). Из известных мне книг мог бы посоветовать трехтомник Хоровц, Хилл "Искусство схемотехники" (книга старая, но хорошая и переиздается,  найти ее не проблема), она в любом случае пригодится. Ну и конкретно по усилителям есть специальные книги, из свежих - http://www.ozon.ru/context/detail/id/19482522/  ...

PS: еcли итоговая цель = построить свой усилитель мощности и аналог ресивера для домашней акустики, советую сразу плюнуть на эту затею :)

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...