Программисты. Кто они? - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming

Программирование / Programming
Ищете помощи в написании программы, есть сложность в выполнении задания (в институте и т.д.), пожалуйста, спросите у нас в данном форуме и мы обязательно вам поможем.

Ответ
Опции темы
Непрочитано 08.07.2011, 18:24   #1
Аватар для Azagthtot
Эксперт

Автор темы (Топик Стартер) Программисты. Кто они?

Почитал тут одну тему, и решил вставить свои "пять копеек". Т.к. копейки потянули на полновесный рупь, решил делать в отдельной теме.
И так, имя очень большой опыт программирования (больше 25 лет, из них на Java чуть более 10) хочу поделиться своим видением на "хорошее" и "плохое" программирование.

Во-первых, давайте разделим собственно само программирование (реализацию конкретного функционала) и проектирование (создание множества функционалов).
Каждый из нас, придя в разработку начинает с первого. Мы пишем простые "линейные" программы. Линейные в том смысле, что сначала эта операция, потом та потом другая и т.д. Вот тут кроются первые грабли. И заключаются они в том, что мы не разделяем наши операции по типу. Получается что-то типа
Код:
void main() {
 спросить пользователя;
 посчитать результат;
 дать ответ;
}
Многие так привыкают что другого варианта кроме как "смешать все в кучу" и не признают. Из них никогда не выйдет не то что бы проектировщика, а даже приличного программиста.
Но время не стоит на месте. Написав одну-две программы мы понимаем, что действия-то типовые. И что лень нам писать спросить пользователя; в очередной программе. Так человек понимает, что хороший программист - ленивый программист. Но начинаются вторые грабли. И называются они "велосипед с квадратными колесами". Мы пишем свои библиотеки, свои классы и т.д. Конечно, мы все это используем, но тратим кучу времени на поддержку. И самое страшное - если с этим кодом приходится работать другим людям. Из-за таких "сам себе велосипед" приходится вникать в тучу кода. Это тоже плохие, не годные, программисты. Такие программисты сидят в l2j. Почему я так говорю? А скажите, нафига было писать свой механизм рассчета дальности, коллизий, поиска точек? Что, 2D/3D библиотеки запрещены лидерами ваших религий?
Ладно, следующая стадия программиста. Он понял, ура, есть стандартные либы, он научился ими пользоваться, он не создает велосипеды! Он стал хорошим программистом. На "выращивание" такого программиста уходит порядка 3-5 лет.
Таких обычно в крупных компаниях зовут junior. Почему так мало? А потому что у него впереди самое главное испытание - проектирование.
И так, поручили нашему программисту (уже без кавычек) создать, ну допустим, класс описывающий существо в L2 (я буду пользоваться линеечными примерами, ибо ближе к теме). И какие ошибки он начинает совершать?
Ну во-первых, с качеством кода у него хорошо, а вот с алгоритмикой пока плоховато, он читал много Эккеля и Шилда, а вот Кнута и Дийкстру не читал вообще. И начинает он мух и котлет складывать в одну кучу. Ну скажите, с какой радости класс L2Character должен знать о своих потомках? Ну не будет у меня на сервере L2Player, мобы будут одни играть. Какого черта писать в L2Character подобное
Ужасный код:
Свернуть ↑Развернуть ↓

Не дело это, что бы родители знали о своих детях. Такое только в жизни может быть, но мы с вами взрослые программисты...
Вторая ошибка. Называется грубо, где ем там и гажу. Откроем любой клиентский пакет.
TradeRequest:
Свернуть ↑Развернуть ↓

Вот скажите мне, зачем все эти проверки делать в классе обработки пакета? В пакете надо считать данные и дернуть за хвост обработчик. Класс обработчик умный, он сам знает что делать. Например делаем так
Улучшенная версия:
Свернуть ↑Развернуть ↓


Таким образом, пописав еще от 3 до 5 лет, наш программист начинает понимать, что уметь программировать это мало для того, что бы трескать икру с маслом. Он начинает учится проектировать. А это, поверьте самое сложное. Умение "насовать" хвостов, что бы если что-нибудь в логике работы системы изменится не надо было делать костыль, а надо просто дернуть нужный "хвост". Умение создавать абстракции. Ну тут тоже не надо злоупотреблять, ибо абстрагирование от абстракций - штука злая.
И главное - полностью, подчеркиваю, полностью знать и уметь применять осбенности языка. В Java есть рсокошные вещи, аннотации. Только в Aion их использовали. Это говорит о том, что аннотации плохтие, не годные? Да нет, куча крупных проектов используют их. Наверное это говорит о качестве разработчиков...
Поэтому что бы стать хорошим Программистом, знать язык мало. Надо уметь проектировать. И тогда вы станете Senior, которые кроме слов interface и abstract class ничего не пишут, трескают икру, и привлекаются к написанию кода только если уж сильно нужно почесать левое ухо правым хвостом, при условии что у вас нет хвоста вообще.
Вы думаете что сеньеры почивают на лаврах? А вот нет, сеньеру приходится учится еще больше. Ибо кроме самого программирования и алгоритмики сеньеру надо знать основы тех областей, в которых он работает.

И так. Резюме сего поста.
Хотите стать хорошим программистом? Читайте Вирта, Кнута, Дийкстру. Не учите "Java/С++/Delphi". Учите программирование. Сменить язык - дело от 40 мин до нескольких месяцев. А вот поиск путей в информированном графе он остается поиском на любом языке. И учитесь отделять "путь" от "дороги".

P.S. В догон. Хорошо тем, кто начал свою жизнь со Спектрумов и прочих "конструкторов". Они знают архитектуру. Что комп может, а что нет. Поэтому, даже для писателей на Java и С# знание аппаратной части необходимо
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 08.07.2011, 20:20   #2
Пользователь

По умолчанию Re: Программисты. Кто они?

Цитата:
А скажите, нафига было писать свой механизм рассчета дальности, коллизий, поиска точек? Что, 2D/3D библиотеки запрещены лидерами ваших религий?
использовал в одном небольшом проекте javax.vecmath (просто векторные вычисления) и частично ardor3d. какие есть ещё?

Цитата:
Поэтому что бы стать хорошим Программистом, знать язык мало. Надо уметь проектировать. И тогда вы станете Senior, которые кроме слов interface и abstract class ничего не пишут,
они ещё пишут много xml и @interface
__________________
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Aquanox вне форума Ответить с цитированием
Непрочитано 08.07.2011, 21:00   #3
Эксперт

По умолчанию Re: Программисты. Кто они?

Вопрос хорошему программисту - почему сборка люцера не считается самой ахуе******** - ну вы поняли )
Place вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 08.07.2011, 21:05   #4
Аватар для Azagthtot
Эксперт

Автор темы (Топик Стартер) Re: Программисты. Кто они?

Потому что основывалась на ядре l2emu. Это целиком моя вина, что поленился сразу начать перепроектирование. В настоящий момент ядро полнстью переаботано, и сейчас готвится2-ая ветка, которая написана практически с "нуля".
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 08.07.2011, 21:16   #5
Аватар для VISTALL
Illussion is real

По умолчанию Re: Программисты. Кто они?

спасибо несказал) Ибо и так все знал это.
VISTALL вне форума Ответить с цитированием
Непрочитано 08.07.2011, 21:16   #6
Аватар для TieLay
Герой

По умолчанию Re: Программисты. Кто они?

Azagthtot, и ещё вопрос, вы так и будите на Interlude реализовываться или же попробуете, после перепроектирования ядра, идти к другим хроникам, вплоть до GoD?
TieLay вне форума Ответить с цитированием
Непрочитано 08.07.2011, 21:20   #7
Аватар для Azagthtot
Эксперт

Автор темы (Топик Стартер) Re: Программисты. Кто они?

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

VISTALL, писалось не для тех кто знает, а для тех кто думает, что "выучу Java и стану мега-программистом" и для тех, кто "ищу в команду Java-программиста" а не "ищу проектировщика".
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 10.07.2011, 02:16   #8
Аватар для Kos-Master
Deleted

По умолчанию Re: Программисты. Кто они?

Azagthtot
offline:
Свернуть ↑Развернуть ↓
__________________
Kos-Master ?
Kos-Master вне форума Ответить с цитированием
Непрочитано 10.07.2011, 02:54   #9
Аватар для VISTALL
Illussion is real

По умолчанию Re: Программисты. Кто они?

Цитата:
VISTALL, писалось не для тех кто знает, а для тех кто думает, что "выучу Java и стану мега-программистом" и для тех, кто "ищу в команду Java-программиста" а не "ищу проектировщика".

ох как все этим сказано.


Честно говоря. "выучу Java" - выучить её нельзя - набор синтаксиса только, а дальше куча классов с JRE, туча библиотек. Зная ток "набор синтаксиса" это можно сказать - ничё незнаеш.

ну комуто нужны именно, разрабы маленького профиля - квесты, etc.

"проектировщик" - это каждый нормальный програмист
VISTALL вне форума Ответить с цитированием
Непрочитано 10.07.2011, 03:03   #10
Пользователь

По умолчанию Re: Программисты. Кто они?

Цитата:
Сообщение от Place Посмотреть сообщение
Вопрос хорошему программисту - почему сборка люцера не считается самой ахуе******** - ну вы поняли )
полностью поддерживаю

Цитата:
Сообщение от Azagthtot Посмотреть сообщение
Потому что основывалась на ядре l2emu. Это целиком моя вина, что поленился сразу начать перепроектирование. В настоящий момент ядро полнстью переаботано, и сейчас готвится2-ая ветка, которая написана практически с "нуля".
ничто и никто не мешает переделать на нулёвку
пример VISTALL, знаю его 2 года, быстро учился, быстро развивал навыки, в один прекрастный момент захотел свою конфетку и начал её делать, так что мешает сделать конфетку вам? ведь проэктировщик не должен заморачиваться на времени сколько займёт его проэктирование, ведь если вы начнёте куда то спешить то ваш 1й пост будет считаться копипастом статьи
__________________
PaInKiLlEr вне форума Отправить сообщение для PaInKiLlEr с помощью ICQ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уважаемые программисты! Cool_prime PHP 25 05.08.2010 23:00
Требуются java программисты maa Рынок / Marketplace 0 03.01.2010 19:32


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 09:57. Часовой пояс GMT +3.

Вверх