Показать сообщение отдельно

  #24  
Старый 15.06.2007, 14:29
Аватар для Red_Red1
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
Отправить сообщение для Red_Red1 с помощью ICQ
По умолчанию

Не сочтите пост за поднятие не новой темы с целью накрутки счетчика сообщений. Очень зацепила меня эта тема. Особенно спор о том, что важнее знание языка или умение составлять алгоритмы, а так же о том какой язык лучше. Мое мнение спор не должен возникать вообще. Как можно разделять эти два момента в программировании? Как можно решить задачу без самого решения (без алгоритма, без правильного алгоритма), с другой стороны что можно сделать имея решение (алгоритм) и не умея его реализовать, т.е. не зная языка либо плохо зная язык?
Как мы знаем для реализации разных задач, используют разные языки. Желательно чтобы язык соответствовал поставленной цели. Говорить что бейсик тупиковая ветвь навязанная Майкрософтом не совсем корректно если нужно решить проблему например с сортировкой строк в среде Майкрософт офис, VBA прекрасно с этим справиться, так нафига сюда прикручивать асм (хотя наверное можно). Мой учитель (карате) однажды ответил на мой вопрос о том какой стиль лучше такими словами «Побеждает не стиль, побеждает мастер». И он прав нужно быть мастером и задача будет решена с максимальной эффективностью. Ну такие варианты уже для профи, который умеет выбирать инструмент (язык) в зависимости от цели, и при этом прекрасно владеет любым инструментом или быстро его осваивает. Но т.к. статья о том как стать программистом и описывает с чего начать, то тут мое мнение такое. Нужно брать универсальный язык (например - паскаль или его реализация в виде Дельфи. Я сам начинал с qbaсik и он мне не очень пришелся по вкусу так как многие рутинные задачи приходилось делать через ж…) он даст возможность при написании простой программы четко видеть алгоритм, но в тоже время достаточно мощный чтобы можно было делать серьезные разработки в реализации которых без глубоких знаний языка не обойтись. А потом уже все зависит от профиля программиста или решаемой задачи. Когда есть маленький опыт (или большой ) уже гораздо легче разобраться с новым языком если это необходимо для поставленной цели. Если вы хотите писать веб-приложение то вам к PHP, Javascript, HTML (хоть ХТМЛ и не язык программирования) и др. А если вы пишите драйвер под новое разработанное вами внешнее устройство на микроконтроллерах (друг помешан на этом), то без ассемблера вам не обойтись, и причем нужно очень глубокое знание языка чтобы и драйвер был рабочим и что бы программа микроконтроллера была не большой т.к. большая просто не влазит в память.
И еще согласен с автором что нужна практика, на голой теории далеко не уедешь, причем нужно решение реальных задач. Я когда садился за ПХП попался на такой штуке: накачал учебников, купил книгу, начитался этого всего, попробовал написать код – ура получается, а потом облом стал в том, что не было конкретной практической задачки. Я полез на сайты фрилансеров, но с моим опытом даже не понял предлагаемой работы. Тогда на помощь пришел друг. Ему нужен был сайт и к нему система управления контентом, вот он мне и ставил задачки, а я пытался их реализовывать на ПХП. Опыт стал заметно расти. (Кстати после изучения основ ПХП, а к нему и мускула, 90% вопросов о скуль-иньекции отпала сама собой так как был понят механизм ее действия. Это я к тому что вы Уважаемые ГУРУ хакеры потому что знаете не только то что НАДО подставить кавычку, а и то ПОЧЕМУ НАДО поставить кавычку, о чем пытаетесь и рассказать нам новичкам. Правда иногда бестолку – «Вот научите меня ламать, чо вы прячете программы и секреты как сломать форум»).

Как подтверждение вышеизложенного хочу поделиться одной задачкой которую я решал в универе. Задача чисто тренировочная и не стоила бы внимания, но у меня с ней произошел интересный случай. Мы решали эту задачу группой на паре. Я у доски разжевывал алгоритм менее заинтересованным в программировании одногруппникам, преподаватель слушала все это с радостной улыбкой на лице (ну хоть кто-то понимает). Задача была решена. Быстренько написана на Паскале и переписана остальными. Листинг был где-то на полторы страницы, в котором четко виден алгоритм какой мы придумали у доски. Пара закончена. А вечерком мы с одногрупником (таким же повернутым на компах) засели за нее еще раз, т.к. пару он прогулял, а я рассказал ему о своем «великом» решении на практической.
Он в это время возился на асме с битами, байтами, ксорами и прочей низкоуровневой лабудой. Так вот он (наверное зациклившись на этой теме) предложил решение задачи основанное на том же алгоритме но была совсем другая реализация на том же языке Паскаль. Через пол часа мы таки выписали решение которое занимало ЧЕТЫРЕ строчки (не считая begin, end), а еще через минут десять осталось ДВЕ строчки (не считая begin, end). В такой форме задачку и алгоритм заложенный в ней было узнать непросто.
Я повторюсь и в том и в другом случае использовался один язык – Паскаль 7.0.
Решение мы на следующий день показали преподу и… больше на пары не ходили.
Так вот этот пример мне показал насколько важно знание языка. Решения и в первом и во втором случае базировались на одном алгоритме, но его (алгоритма) реализации на языке отличались глобально. Вывод алгоритм необходим для решения, но владение инструментом (в данном случае языком программирования) на более высоком уровне приводит к более эффективной реализации алгоритма. (Для нас эффект состоял еще и в том что на пары мы могли больше не приходить ).

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

З.Ы. Кому интересно задачка такая.
На крыше дома, в центре, сидит крыса. На одном из углов крыши появляется кот. Крыса спасаясь от кота бежит в противоположный угол. Смотрит вниз, если внизу есть кот (второй кот), то крыса бежит к соседнему углу (любому) по краю крыши и спускается вниз убегая от котов. Найти маршрут крысы зная расположение двух котов.
Форма дома представляет собой куб вершины которого пронумерованы. Входные данные - номера вершин где расположены коты. Выходные - номера вершин по которым пробежит крыса.
Попробуйте решить эту задачку на паскале в две строчки. Я имею ввиду не кучу операторов записанных в одну длииинную строку.
Ассемблерщики наверное так и решали бы, они наверное не смогут изобрести длинное решение.
 
Ответить с цитированием