Задать вопрос
  • Правильно ли я понимаю суть программирования?

    @jacob1237
    Формат интерпретации данных и их кодирование в памяти, а также список команд, которые способен исполнить процессор, предопределены производителем CPU и описаны в Instruction Set Architecture процессора?


    Да, все верно понимаете. Производители процессоров конечно пытаются стандартизировать свои архитектуры, но все равно остаются ньюансы как у AMD, так и у Intel (если рассматривать только ПК).

    Пример документации от Интел: https://software.intel.com/en-us/articles/intel-sdm

    В целом для ПК (именно для ПК) существуют некий стандарт x86, а также его расширение x86-64. Именно он описывает набор доступных программисту инструкций, флагов и ячеек данных (регистров).
    В рамках этого стандарта каждая инструкция имеет свой опкод.

    Т.е. после компиляции программы в машинный код (двоичную последовательность), опкоды команд будут одинаковы для всех x86-совместимых процессоров (т.е. компиляция идет не под отдельный процессор, а под архитектуру, а самих архитектур много, x86, ARM и т.д.).
    Это дает возможность запускать программы с одинаковым результатом как на процессорах Intel, так и на AMD.

    Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором, на языке, синтаксис которого, в конечном счёте - после стадий трансляции символьных масок в последовательность электрических сигналов, предназначен для понимания процессором


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

    От программиста требуется не только забить алгоритм и откомпилировать исходник, но и зачастую этот алгоритм сначала придумать/скомбинировать. Без знания предметной области этого сделать опять же не получится, либо получится, но малоэффективно.

    Вам точно не в "web-dev"..
    P.s уж слишком низко полезли. У нас же всё в абстракциях :D

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

    Это может быть потребность написать свой модуль для PHP, Python, JavaScript (Node.js), либо реализовать программный интерфейс к внешним приложениям/системам.

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

    В 90% задач конечно это не нужно (особенно где надо "натягивать верстку на движок" =D), но если хотите расти как профессионал и покрывать весь спектр возможных задач в вебе, то это, как говорится, must have.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю суть программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    1. "Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором"

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

    > на языке, синтаксис которого, в конечном счёте - после стадий трансляции символьных масок в последовательность электрических сигналов, предназначен для понимания процессором.

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

    3. В результате кодирования алгоритма/ов получается компьютерная программа.

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

    4. В алгоритмах необходимо грамотно использовать типы и структуры данных, в соответствии с тем, как они кодируются в памяти и интерпретируются процессором.

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

    5. Формат интерпретации данных и их кодирование в памяти, а также список команд, которые способен исполнить процессор, предопределены производителем CPU и описаны в Instruction Set Architecture процессора?

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

    6. Вот ещё волнует вопрос: именно ISA определяет то, как закодированы данные в памяти или она определяет только то, как эти данные интерпретируются процессором? Если не ISA определяет кодирование данных, то что?

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

    7. Вот ещё один волнительный вопрос: если программирование начиналось с мучительного прямого введения последовательностей бинарных электрических сигналов в машину на интерпретацию, то как был создан первый первый интерпретатор именно текстовой программы?

    Даже на википедии можно почитать историю языков программирования. Почитайте про Си, про Би.
    Первые интерпретаторы были такие простые, что их мог один человек написать в машинных кодах за разумное время.
    Собственно можно за день написать простой компилятор, в котором будет минимум проверок (и высокие требования к коду).
    Ответ написан
    Комментировать
  • Правильно ли я понимаю суть программирования?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором, на языке

    Не только! Ещё и умение автоматизировать деятельность заказчика. Это вам нужен разворот на 180. Заказчика не интересуют инструкции CPU.
    Программа рождается в голове программиста не в виде машинных кодов или синтаксиса, а в виде последовательности действий, которые приводят к желаемому результату. Непосредственно само программирование с пониманием архитектуры процессора или сетевой работы является ремеслом , которое ничего общего не имеет с романтикой и называется кодированием (но в кодировании есть своя романтика).
    Ответ написан
    4 комментария
  • Правильно ли я понимаю суть программирования?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Ээээ...Вам точно в webdev? Вопросы-то совсем не вебовские, а больше свойственные автоматчикам - разработчикам устройств промышленной автоматики :) Между вебщиком и Instruction Set - лежит несколько уровней архитектуры, на которые ему спускаться смысла не имеет.

    Первым интерпретатором текстовой программы было устройство чтения с перфокарт - я еще застал такое в 1992 году :) Одна строка программы - одна карта. Именно поэтому раньше строки программ назывались "картами".
    Ответ написан
    Комментировать
  • Как изменить конфигурацию стандартного шаблона Rails приложения?

    Freika
    @Freika
    Senior Ruby on Rails developer
    railsbricks.net ничего такой шаблон, но я попользовался и перестал, ну его. Лучше знать, что внутрях сразу.
    Ответ написан
    Комментировать