пятница, 31 июля 2015 г.

Прочувствовать инструмент

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

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

четверг, 30 июля 2015 г.

Сомнения в примерах

Все-таки зацепило :) В процессе жаркого разговора я понял, что не всегда получается донести следующую мысль - для меня важно определить в демонстрации какой-то идеи самую суть и я сознательно (в какой-то степени) игнорирую возможно интересные (и даже существенные) моменты.

вторник, 21 июля 2015 г.

Инструменты и задачи

Задумался :) Когда-то давно на лекции по экономике нам говорили о производстве средств для производства средств производства и производства средств для производства средств потребления. Если переиначить - кто-то создает станки для производства станков, а кто-то  станки для производства мороженого.

В программировании это тоже можно увидеть - кто-то создает сервера приложений, библиотеки (Spring, Struts, GWT, Drools, jBPM), а кто-то пользуется этими средствами для создания потребительских систем.

понедельник, 20 июля 2015 г.

SQL vs NoSQL

Как сказал Маяковский: "Если звезды зажигают - значит это кому-нибудь нужно".
Действительно ли нужны NoSQL в таких количествах, как об этом сейчас говорят или это очередной всплеск, который утихнет и возможно погаснет совсем ?

пятница, 17 июля 2015 г.

Выбор инструментов и сложность программ

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

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

Но когда только формулировка требований является весьма сложной задачей, да и сам инструмент тоже требует на изучение иногда несколько недель или месяцев - тогда как выбирать ?

четверг, 16 июля 2015 г.

Что надо знать начинающему программисту

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

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

вторник, 14 июля 2015 г.

Стандартные инструменты против уникальных

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

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

понедельник, 13 июля 2015 г.

Что надо изучать перед программированием

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

Сначала определимся со школьными (и студенческими) предметами - математика, физика и много чего еще. С самим программированием разберемся в другой раз.

вторник, 7 июля 2015 г.

Куда пойти учится - выбираем ВУЗ


Конечно же не могу говорить за все ВУЗы России и международные - только за те, с которыми сталкивался. Т.к. живу в Санкт-Петербурге, то могу судить только о местных учебных заведениях, а именно:

СПбГУ, ИТМО, СПбГЭТУ «ЛЭТИ», ГУАП, Политех, СПбГМТУ, БГТУ (Военмех)

Я общался с преподавателями, студентами и выпускниками этих ВУЗов, читал программы, решал домашние задания. Подозреваю, что выборка достаточна для того, чтобы судить об общем состоянии системы обучения программированию в РФ. Исключения из правил само собой возможны. В итоге мой вывод такой:

понедельник, 6 июля 2015 г.

Алгоритмы и инструменты

В принципе важны оба пункта, но многое зависит от того процесса, который вы собираетесь автоматизировать (для которого вы программу и пишите).

За историю программирования было создано (и до сих пор создается) немалое количество распространенных алгоритмов (можно какую-то часть посмотреть здесь - Список алгоритмов). Их конечно же неплохо держать в голове - не сами алгоритмы, а то, что они есть и какие они, что они делают. Также надо уметь придумывать свои алгоритмы и понимать процесс создания и анализа - этому можно научится только постоянно практикуясь. Как и в любой области.

Программирование - это что ?

Наверно самый главный вопрос, на который надо сначала ответить, такой:

Что такое программирование ?

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