В течение многих лет я размышлял над тем, что я считаю языками "низкого уровня". Для меня это означает С и сборку. Однако у меня еще не было на это времени, и при этом он никогда не был необходим.
Теперь, когда я не вижу никакой необходимости, я чувствую, что должен либо просто запланировать какой-то момент времени, когда я буду изучать предмет, либо отказаться от плана навсегда.
Моя позиция
Последние 4 года я сосредоточился на «веб-технологиях», которые могут измениться, и я являюсь разработчиком приложений, который вряд ли изменится.
В разработке приложений, я думаю, что удобство использования является наиболее важной вещью. Вы пишете приложения, которые будут «потребляться» пользователями. Чем полезнее эти приложения, тем большую ценность вы получили.
Для достижения хорошего юзабилити, я считаю, что следующие вещи являются жизнеспособными
- Хороший дизайн : хорошо продуманные функции, доступные через продуманный пользовательский интерфейс.
- Правильность : лучший дизайн ничего не стоит, если не реализован правильно.
- Гибкость : приложение A должно постоянно развиваться, так что его пользователям не нужно переключаться на другое приложение B, которое имеет новые функции, которые A может реализовать. Приложения, решающие одну и ту же проблему, должны отличаться не по функциям, а по философии.
- Производительность : Производительность способствует хорошему пользовательскому опыту. Приложение идеально всегда отзывчиво и выполняет свои задачи достаточно быстро (в зависимости от их частоты). Значение оптимизации производительности за пределами точки, в которой это заметно для пользователя, сомнительно.
Я думаю, что низкоуровневое программирование не поможет мне в этом, кроме производительности. Но писать целое приложение на низкоуровневом языке ради производительности для меня преждевременно.
Мой вопрос
Чему может научить низкоуровневое программирование, чему не научат другие языки? Я что-то упустил, или это просто навык, который очень мало полезен для разработки приложений? Пожалуйста, поймите, что я не ставлю под сомнение значение C и сборки. Просто в моей повседневной жизни я очень счастлив, что все тонкости этого мира отделены и управляются для меня (в основном, слоями, написанными на C / C ++ и самими сборками). Я просто не вижу никаких концепций, которые могли бы быть новыми для меня, только детали, которыми я должен был бы наполнить мою голову. Так что в этом для меня?
Мой вывод
Спасибо всем за ответы. Должен сказать, что меня никто не удивил, но, по крайней мере, теперь я совершенно уверен, что оставлю эту область интересов до тех пор, пока она не возникнет.
Насколько я понимаю, написание сборок в наши дни для процессоров, поскольку они используются в современных процессорах, не только излишне сложно, но и может привести к более низкой производительности во время выполнения, чем аналог C. Оптимизация вручную практически невозможна из-за OOE, в то время как вы не получаете все виды оптимизаций, которые компилятор может делать автоматически. Кроме того, код является переносимым, поскольку он использует небольшое подмножество доступных команд, или он оптимизирован, но тогда он, вероятно, работает только на одной архитектуре.
Написание C уже не так необходимо, как это было в прошлом. Если бы я написал приложение на C, я бы с таким же успехом использовал бы проверенные и созданные библиотеки и фреймворки, что избавило бы меня от реализации подпрограмм копирования строк, алгоритмов сортировки и других вещей, используемых в качестве упражнения в университете. Мой собственный код будет выполняться быстрее за счет безопасности типов. Я не заинтересован ни в том, чтобы заново изобретать колесо в ходе обычной разработки приложений, ни в том, что касается отладки, просматривая дампы ядра: D В
настоящее время я экспериментирую с языками и интерпретаторами, поэтому, если есть что-то, что я хотел бы опубликовать, я полагаю, портирую рабочую концепцию на C, хотя C ++ может с тем же успехом сделать свое дело.
Еще раз спасибо всем за ваши ответы и понимание.