Задать вопрос
@RailsPack

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

Являюсь новичком, изучающим программирование методом сравнительного изучения языков программирования, используемых в интересующей меня предметной области — Web dev'е. Делаю я это для того, чтобы изучить несколько языков, а конкретнее — их общие функциональные свойства, элементы и приёмы кодирования, путём создания с их помощью одних и тех же программ, чтобы уверенно себя чувствовать перед тем, как пытаться строить карьеру в предметной области.

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

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

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

Вот ещё один волнительный вопрос: если программирование начиналось с мучительного прямого введения последовательностей бинарных электрических сигналов в машину на интерпретацию, то как был создан первый первый интерпретатор именно текстовой программы?
  • Вопрос задан
  • 1873 просмотра
Подписаться 3 Оценить 2 комментария
Ответ пользователя Saboteur К ответам на вопрос (9)
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
1. "Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором"

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

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

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

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

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

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

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

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

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

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

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

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

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