Век учись, а дураком помрёшь.
Контакты
Местоположение
Беларусь

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (57)

Лучшие ответы пользователя

Все ответы (90)
  • Насколько адекватно требовать домашнего развития от разработчиков?

    @majstar_Zubr
    C++ & gamedev
    Это вполне адекватно, потому что в таком случае работодатель преследует лишь одну цель - помочь вам как можно скорее найти другое место работы.
    Ответ написан
  • Что больше забирает нерабочего личного времени: работа Тестировщиком (QA) или Разработчик (Dev)?

    @majstar_Zubr
    C++ & gamedev
    Работа не может занимать нерабочее время по определению.

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

    Это желание может как отсутствовать, так и присутствовать вне зависимости от профессиональной деятельности.

    Но вполне адекватно в первую очередь заниматься тем, что вызывает у вас меньше стресса, в вашем случае это направление QA.
    Ответ написан
  • Game-dev путь. Что мне делать?

    @majstar_Zubr
    C++ & gamedev
    У вас должна быть цель стать профессионалом в области. Потому что только профессионал может выбирать, с кем работать, где работать, над чем работать - над крупными проектами для правительств, над банковским софтом, над веб-проектами или над играми.

    Вот это будет правильная установка. А что учить и в каком порядке вам никто не скажет, потому что требования меняются, возможности устроится на работу у всех разные, неизменно только одно - желательно знать все и вчера. Именно с этой установкой рисуются абстрактные Programming paths, но толку от них не будет никакого, если вы не сможете обобщать знания и не будете постоянно работать над строительством своего дерева знаний. Главное - пополнять свои знания концепциями, из которых потому выводятся базовые шаблоны, шаблоны проектирования, а из них, в свою очередь, архитектурные шаблоны, методология разработки, и непосредственно связь с рынком, экономикой, психологией и прочим, и так далее. И эти концепции не только в книгах по разработке ПО, их много в теор вере, дискретной математике, физике, которые дождаться в голову только в процессе получения высшего образования, системно.

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

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

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

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

    Так что, запасайтесь попкорном и начните с языка Си. Освойте структурное программирование. Алгоритмы, структуры данных. Архитектуру компьютера, ОС. Не торопитесь как можно быстрее неправильно понять как можно больше вещей за кратчайший промежуток времени. Перечитывание и практикуете, пока не станет понятно так, что сможете научить кого-нибудь другого. Макконнелл, Роберт Мартин, Кент Бек, Эрик Эванс, Мартин Фаулер + 1 год дополнительного быдлокодинга на java и c# и c++ и у вас появится понимание ООП, ФП, типовые устройства моделей памяти и сборщиков мусора. Ещё за год научитесь писать настоящий ООП код, читать чужой код, даже если он написан в процедурно-макаронном стиле как книгу. Но надо ли вам эти три скучных года, потерянных полностью для личной жизни? Не проще ли получить solid knowledge и постепенно получать практику в среде опытных специалистов?

    Подытожу: становитесь профессионалом, на это у вас уйдёт ~10 лет после введения привычки учится в свободное время. Периодически смотрите на требования вакансий и составляйте себе древо знаний, которое хотите получить.
    Ответ написан
  • На каком языке сейчас чаще всего программируют микроконтроллеры?

    @majstar_Zubr
    C++ & gamedev
    У Java ME есть минимальные системные требования для целевых устройств.
    Взглянув на них, становится понятно, что это не для микроконтроллеров в общем случае. Конечно, встраиваемая система встраиваемой системе рознь, но вот микроконтроллеры ещё используют не только для встраиваемых систем, а прямо в железо, например, радио-приемопередающего устройства, спроектированного на работу с протоколом физического уровня. Такие контроллеры могут иметь килобайты памяти всех видов. Зачастую, такие девайсы предлагают не так много ассемблерных инструкций, чтобы имело смысл делать под них компилятор Си. В более универсальных микроконтроллерах компилятор есть, поэтому это вполне себе повод для радости.

    Там, где можно развернуть JME, уже есть Linux kernel, поэтому ответ на вопрос о том, почему больше используется Си, чем Java, заключается в том, чем занимается компания, в чем у нее бизнес и какой у нее рынок. Количественно, решений, которым нужно JME просто меньше, относительно тех, в которых не нужна прослойка в виде ОС.
    Ответ написан
  • В чем суть процедурного программирования?

    @majstar_Zubr
    C++ & gamedev
    alex4answ, процедурный стиль использует только понятия модель памяти, типы, инструкции, программа и подпрограмма.

    Вот и всё. Никаких составных типов. Концепция "состояние" в коде никак не выражается. Держите её если хотите в голове либо в комментариях.

    Никаких сущностей в коде. Держите из в голове или в комментариях.

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

    Но это всё уже вводится в структурном программировании.

    Процедурное программирование вводит модель памяти с понятиями стек и куча. Хотите сделать функцию в процедурной парадигме - вам придется оформить её в виде подпрограммы и вызывать её из другой. Причем понятия линковки нет, вы будете делать это используя адрес в куче, а какие-то данные, типа, аргументы, будете сами на стэк ложить, каждый раз при вызове подпрограммы "функция".
    Ах, да, захотите функцию для сложения двух чисел, придется сделать ctrl-c, ctrl-v и в теле подпрограммы написать сложение двух кусков данных взятых со стека. Для разности - копируете код, в теле меняете инструкции. И так для каждой функции.

    Да, понятия область видимости нет, придется его выражать в коде таким вот образом самостоятельно.

    Ну, и поскольку ОС не даст лезть за пределы одного процесса, подпрограмму придется положить в сорцы выше, чем ваш код.

    А максимум абстрагирования, которое вводит процедурное программирование, это символьное произвольное именование адреса в памяти. Да и вместо типов, скорее, используется смещение байтов для коллекции, которым просто даны имена.

    Дело в том, что о процедурной парадигме можно говорить только ретроспективно. В основном, процедурная парадигма это классический ассемблер.

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

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

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

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

    А вот в языке с полной поддержкой процедурной парадигмы можно делать такие подпрограммы, которые косплеят функции, но возвращают несколько "аргументов", причем пишут прямо в память. Да и в принципе, в процедурной парадигме можно делать свой ABI, нет никаких стандартов, нет правил, ничто не истинно и всё дозволено.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (9)