Кстати, настоятельно рекомендую посмотреть художественный фильм "Аполлон-13" (весьма точная художественная версия реальных событий), фильм и сам по себе хороший и еще в нем хорошо раскрыта тема экстремального менеджмента в hi-tech проектах. :)
У всех свои привычки, но я полностью согласен на счет полной тишины (мне любая музыка мешает сосредоточенно думать) и хорошего монитора (от которого не устают глаза при длительной работе).
Автор цитаты - Хоар, а не Кнут. Кроме того, чтобы понять истинный смысл этой фразы, нужно сначала достичь своего предела в грязных извращенияхглубокой оптимизации кода, а затем уже остановиться и по-другому посмотреть на мир. Если же Ваши правила прочитает начинающий программист и сразу станет руководствоваться ими, с самого начала избегая оптимизации, то он никогда не станет гуру. И вообще непонятно тогда, зачем он на "C" пишет.
Современные компиляторы имеют настолько мощный механизм inline-подстановки, что кроме самых-самых тривиальных или критических к быстродействию случаев #define лучше не использовать. А в оригинале, НАВЕРНОЕ, имелось в виду, что лучше определять КОНСТАНТЫ через #define, чем писать их числами в коде. Но и тут тоже есть с чем поспорить. Ненавижу константы типа #define TEN 10 - как будто бы может быть иначе!
Это еще цветочки, гораздо хуже, если в параметрах есть выражение с автоинкрементом или еще что-то с побочным эффектом, а параметр подставлен в тело макроопределения пару раз, или когда приходится писать #define ... do {...} while (0) чтобы свести все к одному оператору и не нарушить блочность программы - а забыв об этом получаешь феерические ошибки... В общем, чем МЕНЬШЕ в программе #define, тем лучше для читабельности и отладки, правда изредка страдает быстродействие.
1. Комментарии должны пояснять действительно тонкие моменты. Так же приятно, когда откомментированы функции основных блоков кода, параметры процедур и ограничения на них. Но начитавшись о пользе комментариев, многие программисты начинают комментировать каждую строчку программы. Это бессмысленно, так как если в программе написано if (Counter == 0) то и без банального комментария "проверяем счетчик на ноль" любому понятно, что делает этот if. Для кого пишут такие комментарии? И какой более емкий комментарий можно написать к такому if-у? Никакого? Так и не нужно тогда ничего писать!
2. Более того, обилие комментариев к каждой строчке в большинстве случаев даже вредно - так как на практике у любителей таких комментариев они быстро начинают расходиться с реальностью. Пример: if (Counter == 0 || Counter > Limit) /* проверяем счетчик на ноль */
3. Я не призываю вообще убрать комментарии, но оставить их только к более и менее крупным блокам кода и функциям в целом. Построчные - только к нетривиальным местам в программе. В остальном коде умный и без комментариев разберется, а дураку и комментарии не помогут. "Лишние" комментарии не мешают, конечно же, если не расходятся с реальностью, но и пользы от них никакой. Только съедают время на свою поддержку при модификациях.
Сейчас другого разума еще не существует - этот patch еще незарелизили. Пока что с Землей слишком много локальных проблем, тут еще не разобрались до конца. Люди друг друга мочат почем зря - рано сюда другой разум инсталлировать, не готовы они к этому. Но, понятное дело, подготовка ведется, отладка тоже. Не все НЛО мистификация, испытания stealth или глюки системы. :)
Сила YouTube в том, что Вы мгновенно начинаете просмотр в 1 клик мышью прямо в он-лайне, причем тут знают или не знают? Я знаю очень многое о процессе воспроизведения видео, форматах и кодеках, у меня есть весь необходимый софт, но когда я читаю ленту новостей или форум мне УДОБНО смотреть РОЛИК в 1 клик мышью в он-лайне, прямо мгновенно, не дожидаясь загрузки! И меня не смущает не очень высокое качество - это же просто иллюстрация к какому-то материалу или просто для прикола что-то.
Если я смотрю ленту новостей или читаю тематический форум типа этого, то кликнуть 1 раз на заставке ролика с YouTube - это почти нулевые затраты энергии для меня. В отдельном окне качать видео с помощью FTP и потом отдельно запускать плеер?! Да нахрен мне это нужно?! Я же смотрю ролики с YouTube just for fun!
Это же не художественные фильмы, которые требуют 3 часа на просмотр, на фоне которых манипуляции с плеером незаметны.
Если имея готовую среду в виде browser-а и то сложно создать популярный сайт, то прикиньте, во что это выльется без browser-а, когда Вам потребуется самому написать код рендеринга структурированного гипертекста с таблицами, списками, картинками и видеоплеером. Если же Вы собираетесь использовать какой-то готовый контрол, который умеет отображать полноценный HTML, RTF или PDF, и будете просто "кормить" его своим контентом - то чем это не тот же самый browser, вид сбоку?
Если Ваше приложение как самый сложный свой элемент использует такой контрол, то (по сути) это приложение не к операционке, а к данному контролу. :) В простонародье называемому browser-ом.
И еще - чем больше стандартизации, тем лучше. Хорошо, если 3% уникального софта сделано уникальным образом, но плохо, когда разработчику рядовой программы нужно искать пути решения своих типовых проблем самостоятельно, уникальным способом. Browser фактически и собрал в себе типовые решения для типовых задач, возникающих у большинства разработчиков приложений в эпоху Интернета.
Посмотрите на browser как на toolkit продвинутый, который в отличие от обычных графических библиотек типа QT, популярных в эпоху десктопных приложений, содержит еще и сетевую часть, и интерпретатор скриптов. Вам не нравится этот toolkit так как в нем сложно разрабатывать качественные приложения? Вот это конструктивный подход - предложите идею своего, принципиально лучшего.
Конечно никто не знает, что будет - но думаю, что по мере миграции всех основных приложений (которыми пользуется 99.9% населения) в сеть, отпадет и необходимость иметь на столе у обычного человека нуждающийся в инсталляциях и настройках операционной системы и апргрейде железа компьютер, с перегревающимся 40-ядерным (к тому времени) процессором и жесткими дисками, склонными ломаться раз в пару лет (или опять-таки энергопотребляющим SSD-аналогом).
Если все равно основная работа происходит на стороне серверной инфраструктуры, то удобнее разместить память и основные процессоры (CPU и графические) поближе к электростанции, запитать их от промышленных конверторов напряжения и охлаждать в больших шкафах промышленными системами, оптимизируя расходы энергии и не думая о том, как все это упихать в маленькую коробочку на столе, не превышая уровень шума и не пользуясь водой при охлаждении.
Не говоря уже о том, что дома у пользователя 90% времени мощность рассеивается впустую, так как процессор ничего полезного не делает, хороших 50% дисков забиты одним и тем же содержимым у основной массы пользователей, 90% памяти (RAM) содержит одно и тоже, и даже когда пользователь играет в игру, то куча вычислений в ней одинакова для разных игроков и так далее. Если перейти на вычисления в серверной сети вместо пользовательского рабочего места - открываются огромные просторы для программистского творчества по всякой оптимизации, имеющей прямой экономический эффект для этой инфраструктуры (о плюсах для пользователя уже было сказано).
Или еще хуже:
"привет, я тут супер видео нашел, только тебе надо поставить вот эту программу с их сайта, но ты не бойся - это не троян, не шпионская программа и не вирус!!!" :)
Что мы видим по факту - при работе с приложениями в среде Windows обыкновенному пользователю (ненавижу термин "домохозяйка" в этом контексте) приходится время от времени звать на помощь специалиста, или же переустанавливать Windows с нуля после глюка очередного инсталлятора, так как "я поставила/снесла эту программу и теперь у меня все испортилось, пропал звук и половина иконок с десктопа!!!".
И в то же время мы видим ПО ФАКТУ, что сотни миллионов простых пользователей без всяких курсов обучения освоили web-почту, социальные сети, форумы, блоги, сайты знакомств и кучу прочих web-сервисов, обслуживание которых осуществляют владельцы сайтов, а не потребители сервиса.
И эти web-приложения доступны людям отовсюду - куда бы ты ни поехал, заходишь на любимый сайт и все твои данные под рукой. Модель жизнеспособна и она нравится людям. И они хотят продолжения.
Я знаю, как это сейчас устроено на нижнем уровне, насколько там все криво (не то слово), не оптимально, ненадежно в плане безопасности, как плохо все это масштабируется без мега-траха. Над этим стоит работать - а вот над возвратом пользователя в традиционные приложения с файловой системой - не нужно. Вы не остановите разогнавшийся бронепоезд, встав у него на пути с распростертыми руками, в которых нет даже гранаты.
Бесперспективность классической модели приложения понимают их главные производители. Собственно MS Silverlight и Adobe AIR сделаны с целью подготовить платформу для последующей миграции собственных приложений Microsoft и Adobe в сеть и заодно сохранить (или получить) какой-то контроль над остальными приложениями (мигрирующими сейчас в сеть).
Мы обсуждаем СУТЬ вещей или понты? Плохо, хорошо - это все эмоции, а по сути человек имеет более удобную "визитку" и страницу для общения, чем раньше он мог бы купить у студии за очень большие деньги.
Еще раз повторюсь - возьмем, для гарантии, ситуацию 10 лет тому назад. 1998 год.
Если бы Вы рассказали самой крутой в мире веб-студии тех лет, что затеваете проект сайта, на котором более 100 миллионов человек будут хостить свои профайлы с возможностью поиска и с он-лайновым обновлением информации самими пользователями, что там будут фото-галереи, аудио-записи и видео-хостинг бесплатный, что там будет персональная лента новостей, будут комментарии от других людей, будет куча приложений - они бы Вас на смех подняли.
Более того, реакция у 99.99999% специалистов и бизнесменов была бы одна и та же на Вашу презентацию - "ты, чувак, густой травой обкурился и фантастики начитался, у тебя больное воображение, ты вообще понятия не имеешь в чем разница между желаниями и техническими возможностями, то, что ты предлагаешь НИКОМУ НЕ НУЖНО, НИКОГДА НЕ ПРИНЕСЕТ ДЕНЕГ И ТЕХНИЧЕСКИ НЕОСУЩЕСТВИМО".
Вот такой была бы реакция сообщества специалистов и бизнесменов - я это знаю 100%.
На то, что теперь кажется банальным и набившим оскомину, и на чем сейчас делаются миллиарды долларов.
Секретаршу не обижайте :) и вообще посмотрите - к этому все и идет, к упрощению создания сайтов. Фактически Facebook или другая развитая социальная сеть это и есть конструктор персональных сайтов-визиток. Причем эти сайты (странички пользователей) выглядят намного лучше и удобнее в использовании, чем персональные сайты компьютерных гуру 5 лет назад. Скажу даже больше - лучше и функциональнее, чем 99% профессионально сделанных сайтов-визиток 5 лет назад. Тут тебе и профайл, и блог, и фото-галереи, и видео, и коннект с сообществом.
А можно было бы рассуждать так, как Вы рассуждаете - и рвать на груди тельняшку с криком "да НИКОГДА простой юзер не сможет себе сделать такую страничку, какую наша студия сделает ему за несчастные 1500$ и будет хостить за символические 100$ в месяц!!!". Вот только сейчас пользователь БОЛЕЕ функциональную страничку получает забесплатно и ничего не платит за хостинг.
Спасибо за комментарии. Я, конечно, не знаю, что будет воплощено в жизнь. Но перенос вычислений в сеть очевиден. Возможны варианты, вплоть до сетей на базе пользовательских РС. Однако классическая модель с локальным хранением данных на настольном компьютере точно уйдет в прошлое.
Отступление от темы, но я категорически против всякой элитарности. Элиты не существует. Есть люди, которым хочется превознести себя над остальными и они придумали идеологию "элит". Но я не нахожу в "элитарности" чего-то достойного восхищения. Пусть эстеты слушают свой любимый винил, но в этом нет ничего "крутого".
Безусловно, я не знаю, что нас ждет, особенно в точности. Но то, что десктопному софту в целом пришел конец - видно хотя бы из того, что основные его производители MS и Adobe занимаются сейчас миграцией своих приложений в сеть, а не в обратную сторону! Вы хотите сказать, что знаете, куда ветер дует, лучше, чем руководство MS и Adobe?
1). Ваши рассуждения сродни рассуждениям советского автослесаря, считающего, что все, кто ездит на машине, но не может ее починить своими руками - мудаки.
2). Пользователь - это тот, кто Вас кормит. Поэтому относитесь к нему с уважением. Он умный. Просто у него своя область интересов. А Ваша прикладная программа для него не более, чем инструмент для работы, общения или развлечения. Хорош тот инструмент, который не требует длительной подготовки к работе, прост в управлении и безопасен в эксплуатации. :)
грязных извращенияхглубокой оптимизации кода, а затем уже остановиться и по-другому посмотреть на мир. Если же Ваши правила прочитает начинающий программист и сразу станет руководствоваться ими, с самого начала избегая оптимизации, то он никогда не станет гуру. И вообще непонятно тогда, зачем он на "C" пишет.2. Более того, обилие комментариев к каждой строчке в большинстве случаев даже вредно - так как на практике у любителей таких комментариев они быстро начинают расходиться с реальностью. Пример: if (Counter == 0 || Counter > Limit) /* проверяем счетчик на ноль */
3. Я не призываю вообще убрать комментарии, но оставить их только к более и менее крупным блокам кода и функциям в целом. Построчные - только к нетривиальным местам в программе. В остальном коде умный и без комментариев разберется, а дураку и комментарии не помогут. "Лишние" комментарии не мешают, конечно же, если не расходятся с реальностью, но и пользы от них никакой. Только съедают время на свою поддержку при модификациях.
Это же не художественные фильмы, которые требуют 3 часа на просмотр, на фоне которых манипуляции с плеером незаметны.
Если Ваше приложение как самый сложный свой элемент использует такой контрол, то (по сути) это приложение не к операционке, а к данному контролу. :) В простонародье называемому browser-ом.
И еще - чем больше стандартизации, тем лучше. Хорошо, если 3% уникального софта сделано уникальным образом, но плохо, когда разработчику рядовой программы нужно искать пути решения своих типовых проблем самостоятельно, уникальным способом. Browser фактически и собрал в себе типовые решения для типовых задач, возникающих у большинства разработчиков приложений в эпоху Интернета.
Посмотрите на browser как на toolkit продвинутый, который в отличие от обычных графических библиотек типа QT, популярных в эпоху десктопных приложений, содержит еще и сетевую часть, и интерпретатор скриптов. Вам не нравится этот toolkit так как в нем сложно разрабатывать качественные приложения? Вот это конструктивный подход - предложите идею своего, принципиально лучшего.
Если все равно основная работа происходит на стороне серверной инфраструктуры, то удобнее разместить память и основные процессоры (CPU и графические) поближе к электростанции, запитать их от промышленных конверторов напряжения и охлаждать в больших шкафах промышленными системами, оптимизируя расходы энергии и не думая о том, как все это упихать в маленькую коробочку на столе, не превышая уровень шума и не пользуясь водой при охлаждении.
Не говоря уже о том, что дома у пользователя 90% времени мощность рассеивается впустую, так как процессор ничего полезного не делает, хороших 50% дисков забиты одним и тем же содержимым у основной массы пользователей, 90% памяти (RAM) содержит одно и тоже, и даже когда пользователь играет в игру, то куча вычислений в ней одинакова для разных игроков и так далее. Если перейти на вычисления в серверной сети вместо пользовательского рабочего места - открываются огромные просторы для программистского творчества по всякой оптимизации, имеющей прямой экономический эффект для этой инфраструктуры (о плюсах для пользователя уже было сказано).
"привет, я тут супер видео нашел, только тебе надо поставить вот эту программу с их сайта, но ты не бойся - это не троян, не шпионская программа и не вирус!!!" :)
И в то же время мы видим ПО ФАКТУ, что сотни миллионов простых пользователей без всяких курсов обучения освоили web-почту, социальные сети, форумы, блоги, сайты знакомств и кучу прочих web-сервисов, обслуживание которых осуществляют владельцы сайтов, а не потребители сервиса.
И эти web-приложения доступны людям отовсюду - куда бы ты ни поехал, заходишь на любимый сайт и все твои данные под рукой.
Модель жизнеспособна и она нравится людям. И они хотят продолжения.
Я знаю, как это сейчас устроено на нижнем уровне, насколько там все криво (не то слово), не оптимально, ненадежно в плане безопасности, как плохо все это масштабируется без мега-траха. Над этим стоит работать - а вот над возвратом пользователя в традиционные приложения с файловой системой - не нужно. Вы не остановите разогнавшийся бронепоезд, встав у него на пути с распростертыми руками, в которых нет даже гранаты.
Бесперспективность классической модели приложения понимают их главные производители. Собственно MS Silverlight и Adobe AIR сделаны с целью подготовить платформу для последующей миграции собственных приложений Microsoft и Adobe в сеть и заодно сохранить (или получить) какой-то контроль над остальными приложениями (мигрирующими сейчас в сеть).
Еще раз повторюсь - возьмем, для гарантии, ситуацию 10 лет тому назад. 1998 год.
Если бы Вы рассказали самой крутой в мире веб-студии тех лет, что затеваете проект сайта, на котором более 100 миллионов человек будут хостить свои профайлы с возможностью поиска и с он-лайновым обновлением информации самими пользователями, что там будут фото-галереи, аудио-записи и видео-хостинг бесплатный, что там будет персональная лента новостей, будут комментарии от других людей, будет куча приложений - они бы Вас на смех подняли.
Более того, реакция у 99.99999% специалистов и бизнесменов была бы одна и та же на Вашу презентацию - "ты, чувак, густой травой обкурился и фантастики начитался, у тебя больное воображение, ты вообще понятия не имеешь в чем разница между желаниями и техническими возможностями, то, что ты предлагаешь НИКОМУ НЕ НУЖНО, НИКОГДА НЕ ПРИНЕСЕТ ДЕНЕГ И ТЕХНИЧЕСКИ НЕОСУЩЕСТВИМО".
Вот такой была бы реакция сообщества специалистов и бизнесменов - я это знаю 100%.
На то, что теперь кажется банальным и набившим оскомину, и на чем сейчас делаются миллиарды долларов.
А можно было бы рассуждать так, как Вы рассуждаете - и рвать на груди тельняшку с криком "да НИКОГДА простой юзер не сможет себе сделать такую страничку, какую наша студия сделает ему за несчастные 1500$ и будет хостить за символические 100$ в месяц!!!". Вот только сейчас пользователь БОЛЕЕ функциональную страничку получает забесплатно и ничего не платит за хостинг.
2). Пользователь - это тот, кто Вас кормит. Поэтому относитесь к нему с уважением. Он умный. Просто у него своя область интересов. А Ваша прикладная программа для него не более, чем инструмент для работы, общения или развлечения. Хорош тот инструмент, который не требует длительной подготовки к работе, прост в управлении и безопасен в эксплуатации. :)