четверг, 24 января 2013 г.

Сложное или простое?

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

Пример программы на ассемблере(код не настоящий, это только пример):


код ассемблера

получаемый код

пояснение
mov a,[bc]7eпересылаем из ячейки памяти, адресуемой регистром bc в регистр a

mov d,[hl]7dто же самое, регистры другие
add a, d2aскладываем содержимое регистра a и d, результат остается в a
mov [bc],a72сохраняем результат в памяти по адресу из регистровой пары bc

Сложность языка определяется количеством ключевых слов, количеством комбинаций этих слов. Сложность ассемблера напрямую зависит от сложности процессора. Есть два направления развития процессоров:
  1. С комплексной системой команд (CISC)
  2. С минимальной системой команд (MIPS)
 Комплексная система команд содержит множество сложных инструкций, например подпрограмма приведенная выше могла быть представлена одной командой add [bc],[hl]. Естественно, для эффективного программирования на ассемблере нужно хорошо знать действие каждой инструкции.

Хотелось бы иметь язык разработки полный по Тьюрингу, но не такой великий и ужасный как Brainfuck. Мне не нравятся громоздкие конструкции шаблонных классов в C++, не нравятся указатели на функции в C. JavaScript меня вполне устраивает, но под него нужна громоздкая виртуальная машина и её нельзя запустить в микроконтроллере с ограниченным объемом ресурсов. А компилятора с JavaScript я не встречал :(

2 комментария:

  1. на эту тему намедни разгорелся срач we.easyelectronics.ru (http://goo.gl/JCEyK)

    Почитайте, будет интересно.

    ОтветитьУдалить