Уметь использовать компоненты нужно еще уметь


18 0

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

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

Я умею писать писать многое самостоятельно, но зачем это делать? На рынке программирования надо больше уметь продвигать продукты, а не писать весь код самостоятельно. Примеров тут куча и один из них - Билл Гейтс и пример с его успехом я привожу на блоге Heapar Software в заметке об использовании сторонних компонентов.

Расставлять чужие компоненты на форме абсолютно не стыдно. Куча дополнительных мыслей на тему использования компонентов сторонних разработчиков я выплеснул на блоге Heapar Software: Использование компонентов .NET сторонних разработчиков.


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Евгений

23 Декабря 2008

А для чего, собственно говоря и придуманы компоненты?
Выпендрежи типа "использование компонентов - моветон" и связанные с этим намеки на криворукость программиста всегда меня раздражали. Мол, только когда от и до написанный ручками код, есть лучший способ доказательства состоятельности программиста.
Уверен, что очередное изобретение велосипеда и есть величайшая глупость. Она же чаще всего и тянет за собой фатальные ошибки.
Все время работы в Delphi использовал компоненты, всегда кидал их на форму, будь они визуальные или невизуальные. Единственное исключение - консольные приложения, но тут такая специфика. Я никогда не создавал собственных компонентов, поэтому я недопрограммист? Прекрасно! Если я вместо того чтобы за вечер что-нибудь забацать, буду год изобретать велосипед, то меня с работы попрут! Ведь конечного пользователя абсолютно не интересует изнанка процесса программирования. Более того, если пользователь в этом что-то смыслит, то он будет очень недоволен тем, что ему подсовывают совершенно ненужные финты ушами за дополнительные деньги, такой талант он не оценит.

Есть даже пример из жизни. Существует некоторая МИС (медицинская информационная система), так СУБД специально для нее написана с нуля, со всеми вытекающими.
Я бы предпочел держаться от такого решения подальше.

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

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

Другое дело, что накиданные на форму компоненты не делают программу законченным решением. Но и в этом случае программист должен знать только что с этим ворохом делать, а не как этот ворох устроен.
По крайней мере мне этого вполне достаточно.


Alexo

23 Декабря 2008

Обычно так говорят форумный отцы, которые считают, что они сразу родились "супер-программистами" :)


dmitriy

23 Декабря 2008

Я тоже сейчас использую компоненты комерческие, некомерческие и собственные. Раньше старался делать минимум компонентов или даже создавал переменные типа TADOCOnnect;, к примеру, и затачивал код на него и что в итоге? Если программулина маленькая это круто типа нет компоненотов точнее ты их не видишь а они есть. :) (что то это мне напоминает). Сейчас использую компоненты везде где могу и рад до ужаса. Ведь кто кроме разработчика или сопроводителя увидит их? А удобство. Современные языки програмирования созданы для удобства создавать программы. Качественно (зависит скорее от степени знания языка) и быстро (от наличия необходимых компонентов). Ведь Button это по сути пот же компонент.


что его обвиняют на форуме, что он умеет только компоненты расставлять

хи-хи. А тот кто обвинил интересно кнопки, формы (форма кстати тоже компонент TForm), что сам ручками прописывает на API или еще как то?
Мне кажется что это бред обвинять в использовании компонента интересно было бы посмотреть на темку этого самого форума.


Михаил Фленов

23 Декабря 2008

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


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

Мне интересно что-то знать - я изучаю, но писать все самостоятельно - не собираюсь.


you_all_know_me

23 Декабря 2008

Неужели это так позорно уметь расставлять компоненты?

Уметь расставлять компоненты не позорно, позорно уметь только расставлять компоненты. Как я понимаю, упреков в том, что кто-то использует что-то готовое, не было.


Михаил Фленов

23 Декабря 2008

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


Булка

23 Декабря 2008

Абсолютно согласен, я тоже не считаю использование сторонних компонентов грубым тоном программирования. Да, есть некоторые минусы, например нет нужных функций, но никто же не мешает добавить их?! Да и время экономится, и нервы :). И, в принципе, на некоторых хорошо откомментированных компонентах, можно и некоторым аспектам программирования подучиться. Да и используем же мы RXLib, JVCL и т.п., и я думаю никто про них ничего не скажет, мол это моветон!


Overdrive

23 Декабря 2008

Уметь расставлять компоненты не позорно, позорно уметь только расставлять компоненты. Как я понимаю, упреков в том, что кто-то использует что-то готовое, не было.

Абсолютно с тобой согласен.
Если человек не понимает принципы ООП. Если он даже не понимает, что расставляет на форме(и что такое форма). Тогда верно говорят.


Сергей

23 Декабря 2008

Ну вот и все с этим согласились. Даже как то скучно. Я тоже согласен. Уметь что-то делать - это уже само по себе хорошо. Но господа, программисты, позвольте всё же с вами в некоторых моментах не согласиться, Я не программист, но что такое компонент в общих чертах представляю. Спорить тут видимо не о чем и не зачем. Просто хотелось расставить всё по своим местам, высказать свои соображения по этой теме. Каждый программист (или тот кто хочет им стать) сам выбирает свой путь в этой профессии. И этих путей, объединённых под словом "программист" множество: от юной девушки, использующей VB в 1С и не догадывающейся, что есть слово "алгоритм" до матёрого драйверо/вирусо/антивирусо-писателя использующего ассемблер и не считающего программой ничего, что нельзя завершить кнопкой F10.
Сразу замечу что то что написано ниже относиться только к программированию в одиночку – без команды.
Умение ИСПОЛЬЗОВАТЬ компоненты - это замечательно. Уметь их КРАСИВО РАССТАВИТЬ тоже. И умение программировать алгоритмами тоже хорошо. Но давайте согласимся с тем что всё это в одном человеке вряд ли совместимо. Ну не успеваем мы (простые люди) уметь делать ХОРОШО всё. Физически не успеваем. И что то у нас получается хуже, а что то лучше. И каждому своё! Возьмём пример из жизни (моей жизни как пользователя программ). Потребовался мне не так давно антивирус (я говорил об этом здесь же у Михаила в блоге) Чтобы не быть голословным назову этот антивирус по имени. Только не подумайте что я рекламирую – это не так. Это антивирус Олега Зайцева – AVZ. Так вот интерфейс у программы не скажу что ужасный, но мягко говоря оставляет желать лучшего. Если штатная кнопка поставляемая средой программирования тоже компонент, то эти самые компоненты-кнопки и прочее расставлены как то непродуманно и нагромождено всё. Зато функциональность и глубина программы!  Программа имеет свой диспетчер процессов, поиск в реестре, да чего там только нету! А какой сайт у программы! Энциклопедия по борьбе с нечистью! Видно что человек чётко понимает то чем занимается и учит этому нас. К чему я это всё пишу? Из этого я делаю выводы
1) первое наблюдение. программисту (одиночке) который действительно способен программировать алгоритмами и знает свою область глубоко, ему то ли некогда, то ли не интересно, то ли он от природы не склонен заниматься украшательствами или выискивать компоненты. К тому же сомневаюсь что для своего антивируса Зайцев использовал сторонние компоненты – их просто нет для задачи решаемой программой-антивирусом.
2) второе наблюдение. Серьёзный программист не скрывает своего имени. Не распространяет свои программы под каким то вымышленным именем «*****Soft». В некоторых случаях не стыдится показать свои исходники. Почему? Потому что он настоящий и ему за это доверяют пользователи. А когда в коде компонент на компоненте компонентом погоняет, что там показывать?
Как говориться сначала человек работает (иногда бесплатно) на имя, а потом имя работает на него.
Задач в программировании множество. Какие-то легче, какие то сложнее
Программистов разных мастей – море. Программистов грамотно использующих компоненты меньше. Тех кто способен писать компоненты для своего внутреннего использования на порядок меньше. Те кто пишет компоненты настолько хорошо, что продаёт их за деньги ещё меньше. Те кто помнит ассемблер и использует – их в разы меньше.
Задач много, но чем сложнее задача тем меньше людей способны её решить и тем меньше для этой задачи компонентов.
Михаил вы соглашаетесь с тем, что цитирую «По логике получается, что если ты умеешь водить машину, но не можешь ее починить или собрать с нуля, то ты плохой водитель или кто там еще?» Логика может быть и есть, но не по теме. «Водить машину» – это использовать программу. «Водитель машины» - это пользователь. И если он не умеет использовать программу – он плохой «водитель». Этот водитель не поедет на своей красивой иномарке к морю за 1500 км от дома, пока не будет уверен что вдоль всей дороги ему не расставили автосервисов (компонентов) и в каждом есть спецы именно для его машины. Именно так. Я же уду на юг и везу с собой пол багажника запчастей. Полетел генератор – достаю и меняю в течении 2 часов. Я знаю что сломалось, где это в машине стоит и как его сменить. Про генератор – это мой случай из жизни.
Но вы же не водители, как я. Вы программисты! Вы выше рангом. Вы мне эту машину делаете. И если вы не способны создать компонент самостоятельно или обойтись без него(доехать на галстуке вместо ремня генератора), то вы в воображаемом программистском цеху будете вынуждены вечно стоять у конвеера. Конвеер – это самый неквалифицированный труд. Удел таких программистов – правильно поставить на место продукт созданный более квалифицированным человеком.
Вы, Михаил, говорите о том что нужно писать больше программ. Чем больше тем лучше иначе не будет успеха. Может и так. Но я не знаю ни одной вашей программы. Они конечно есть, но я о них не слышал. С таким подходом к программированию девиз наверное такой: «Успеть!». Не успел – не продаётся. В чём то может и верно, но как то не серьёзно. Я считаю, что если программа ничем не отличается от конкурентов то зачем ей вообще быть - этой программе? Зачем она? Не правильнее ли зарабатывать штучным товаром, качественным, чем пытаться обогнать? Китайцев и индийцев сейчас вряд ли обгонишь.
Около 2 лет назад бродил по одному сайту посвящённому Delphi. И где то на форуме у них увидел просьбу авторов сайта. Профессиональные! программисты просили сказать/показать если кто-то найдёт где-нибудь компонент способный прожигать болванки. Я вот думаю, ну что же это за программисты, который ждут что кто-то где то расщедриться и выложит им компонент. Разве так заработаешь? К тому времени Nero уже существовала и продавалась во всю, а они только ещё компонент ждут. Смешно! Чтобы заработать на программным обеспечении к пишущим CD-DVD нужно было держать нос по ветру ещё до выхода первых пишущих устройств на рынок и знать о них.  Ходить на сайт производителей и интересоваться тем как написать для их устройства программу-прожигалку, что почитать и где взять какой-нибудь Api, так как бесплатный компонент производитель вряд ли выложит. Вот где на мой взгляд важна скорость. Nero и Roxio были одними из первых поэтому заработали на этом, сняли все сливки и продолжают зарабатывать. Теперь это уже имена и бренды! А если ждать компонентов – удачи не видать! Как можно «успеть» если ждать компонента?
Зарабатывают на идеях, на быстрой поддержке нового оборудования, на качестве, которое никогда не выходит из моды, а такие вещи в компонентами не распространяются.
Никого не хотел задеть своими словами. Просто высказал своё мнение относительно отрицательной стороны увлечения компонентами. Все профессии важны. Правильно использовать компоненты тоже очень важно. Пользователям нужны программы быстро и в ассортименте. Без компонентов этого программисты нам предложить не смогут.

ps – если Михаил не против
Вопрос тем кто разбирается в технологии NET. Было бы интересно выслушать мнение спецов. Насколько мощный по вашему язык C# по сравнению с C++ или Delphi? Если в NET всё работает через посредника – через среду CLR – не ограничивает ли этот посредник возможностей языка C# и соответственно ваши возможности как программиста? Не пострадает ли скорость программ? Может ли C# что-то кроме того что предлагают классы NET? Можно ли на C# написать антивирус или драйвер как на C++? Запрещены же теперь в C# ассемблерные вставки и указатели как это было в Delphi для win32. Не делает ли всё это язык C# языком «слишком высокого уровня»? Кто видел материал на тему возможностей C# поделитесь пожалуйста ссылками. Хотелось бы знать и о недостатках языка C#.


Михаил Фленов

24 Декабря 2008

Ох какую ты петицию написал.

Насколько мощный по вашему язык C# по сравнению с C++ или Delphi


В C++ нет компонента, есть объект. А мощь у всех трех одинакова, если сравнивать одинаковые компоненты-объекты. Например - кнопка. В Delphi есть компонент, который упрощает работу с Windows кнопкой, а C# есть компонент, который делает то же самое, а в C++ есть класс. Все они являются обертками для кнопки Windows и во всех языках реализованы кажется все возможности. Если что-то не реализовано, пожно обратиться к Windows напрямую, поэтом мощь везде одинакова.


dmitriy

24 Декабря 2008


Вопрос тем кто разбирается в технологии NET. Было бы интересно выслушать мнение спецов. Насколько мощный по вашему язык C# по сравнению с C++ или Delphi?


http://www.sql.ru/forum/actualthread.aspx?tid=624805

http://torrents.ru/forum/viewtopic.php?t=570989

http://forum.sources.ru/index.php?showtopic=119102

Ну и в инете поищи. С# это интерпритатор или оболочка для компилятора. Delphi - среда разработки для Object Pascal. Где то на форумах вычитал, что то типа такого "Ты сначала определить надо ли тебе NET FrameWork, ну а там уже выбор ляжет в пользу C#"


Alexo

24 Декабря 2008

Delphi - среда разработки для Object Pascal.


Delphi уже давно язык.


Сергей2

21 Марта 2009

что же это за программисты, который ждут что кто-то где то расщедриться и выложит им компонент. Разве так заработаешь? К тому времени Nero уже существовала и продавалась во всю, а они только ещё компонент ждут. Смешно! Чтобы заработать на программным обеспечении к пишущим CD-DVD нужно было держать нос по ветру ещё до выхода первых пишущих устройств на рынок и знать о них

Сергей, вам не кажется, что таких случаев довольно мало, чтобы далать на них ставку (в плане заработка)? Ведь современное программирование - это нечто конвеерное. Практически всё уникальное уже запрограммировано, остаётся только улучшать и дорабатывать.


Сергей

22 Марта 2009

-> Сергей2


Сергей, вам не кажется, что таких случаев довольно мало

Да, согласен, новое оборудование выходит не так часто. Но всё таки оно появляется.
blue ray например входит в моду. И наверно для работы с blue ray не так уж много программ.

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

Думаю, умение отшлифовывать программу это не самое главное для программиста. Важнее уметь найти какую-нибудь ИДЕЮ и выдать её одним из первых.

Кстати, далеко не всё уже написано, как вы утверждаете. Например, я когда столкнулся с вопросом построения блок-схем, то не смог найти ни одной подходящий программы. Не нашёл ни среди платных ни среди бесплатных.
А ведь написать построитель блок-схем по исходному коду Delphi это не такая уж сложная задача для профессионала. Но таких программ нет. Есть рисовалки, но нет такой, которая бы сама рисовала блок схему по коду и наоборот, которая бы писала код вслед за пользователем, который рисует блок-схему.
Я перепробовал наверное штук 20 разных программ, но то что нужно не нашёл.
Для С++ есть такая программа, а для Delphi нету.
ps
Это должен быть не uml редактор а обычный построитель схем по процедупам Delphi. И чтобы в нём не нужно было заниматься рисованием, а можно было просто расставлять схему готовыми блоками, ведь как должен выглядеть блок всем начинающим программистам известно.


Сергей2

30 Марта 2009

to Сергей

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

Имхо, программист - это конечный исполнитель, работяга (если хотите). И даже если его посетит гениальная идея - далеко не факт, что ему удастся её реализовать в полном объёме и насладится её плодами (я сейчас не про технический аспект, а про маркетинговый)  

P.S. to Фленов Михаил,
у вас тут строго как-то с комментариями ( это не способствует конструктивному общению - вы не находите? Может стоит поставить профессиональный блоговый движок, например Вордпресс? Я понимаю, что вы программист и это может ущемить ваше достоинство, но вы ведь как простой человек не можете (да и не должны) успеть всё. Так почему же посетители вашего блога должны испытывать совершенно лишний дискомфорт? Нет многих привычных возможностей, которые в WP реализуются в "два клика"...


Михаил Фленов

31 Марта 2009

2Сергей2

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


Sdk

31 Марта 2009

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


Сергей

31 Марта 2009

=> Сергей2

в виду наличия других подобных инструментов

Жаль, что вы не озвучили конкретных названий программ. Хотелось бы узнать какие именно вы считаете достойными для применения. Я таких найти не смог. Есть очень хорошие,например, Flow Charting 6, но всё равно не то что хотелось бы. Flow Charting удобен для рисования, но сам по коду рисовать не умеет.
MS Visio? Громоздкий и неудобный и по коду тоже не рисует.
По коду паскаля рисует только редактор Быстрицкого, но и то только с ограничениями и к тому же этот редактор имеет ощибки - падает во время рисования.
Но главный недостаток таких программ это то что везде в них требуется имеенно нудное рисование, вместо того чтобы иметь возможность не рисовать схемы, а строить из блоков.
Нудное рисование при частой смене кода или при частых исправлениях занимает даже больше времени чем само кодировании. Это отбивает охоту сопровождать код блок схемами.

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

Что касается этого блога, согласен с Sdk.  Не хватает кнопок для быстрого оформления текста тегами. На некоторых сайтах это делается одним кликом


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне