Перейти к содержанию
    

Профессия RTL Designer не имеет будущего?

SystemVerilog is a parallel programming language. [iEEE Std 1800]. Это фраза из стандарта самого SV. противопоставлять программистов HDL-дизайнерам бессмысленно. Есть программисты, которые программируют на RTL-уровне. В скором времени этот уровень уйдет из масс в узкие ниши, как ушел уровень схематика и ассемблера. А на сисетмном уровне совсем не факт, что железо описывать на SV будет удобнее чем не матлабе или C++.

 

З.Ы. SV имеет туманное будущее еще и потому что не имеет open-source и универститетской поддержки - это узкоспециализированный индустриальный язык, развивающийся 14 конторами для внутреннего междусобойчика. Фанаты SV не сидят по всему миру и не прикладывают его ко всем возможным теориям, как это происходит с тем же С++. А SV реально обламывается тремя существующими компиляторами, которые до сих пор не могут масив интерфейсов обработать, а параметризацию классов можно нормально только макросами делать - весь VMM это сплошной макрос который потом хрен отладишь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю топикстартеру или админам закрыть тему, дабы ВРЕМЯ рассудило отписавшихся тут копьеломателей.

П.С. Всему своё место. Ассемблер не умер, не умрёт и HDL описание. Не думаю, что кто-то рискнёт с ходу делать SoC напрямую из С++. Затратно это :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы зачем усекли мою фразу? У меня было не "программа - это алгоритм", а "программа - это алгоритм, записанный на каком-либо языке". Алгоритм как таковой - это вообще чисто информационная сущность. Записанный алгоритм - это уже несколько иной объект, т.к. отображен на том или ином материальном носителе.

 

Вы напрасно так уперлись и придираетесь не по делу. Если угодно, то алгоритм можно не только записать, но еще и устно объяснить или жестами. Поэтому тот факт, что алгоритм записывают на каком-то языка (русском, английском, Си, Бейсике и т.д.) еще не превращает его в программу. Его записывают просто потому, что так удобно его хранить и передавать из поколенья в поколенье :) Поэтому усечение вашей фразы ни на что не влияет. Кроме того, когда хотят какой-то алгоритм детализировать и "приблизить" его к реализации используют так называемый псевдокод. Но даже это все еще не программа, хотя реализация алгоритма, записанного псевдокодом проще. Таким образом, алгоритм, записанный на каком-либо языке на кокой-нибудь носитель - это всего лишь алгоритм, записанный на каком-либо языке на кокой-нибудь носитель, но никак еще не программа. Ну а как Вы его передавать людям собираетесь, если ниначем его не запишите и никому не расскажете?

 

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

 

Это опять же, просто более детализированный алгоритм и ничего более. Да, более детализированный алгоритм сужает круг исполнительных устройств, для которых может быть написана программа, реализующая этот алгоритм. Кроме того, надо не забывать, что наравне с программой алгоритм может быть реализован и чисто апаратно. Т.е. для реализации алгоритма Вы можете взять готовую подходящую плату с процессором и написать программу, а можете изготовить плату, где не будет процессора и не будет программы, а будет десяток другой микросхем, которые сделают то же самое. А может это и не плата будет...

 

Давайте разберем ваш пример

 

Это легко показать на примере:

 

Задание: есть МК AVR, к его выводу подключен светодиод, надо мигнуть светодиодом длительностью 1 секунда.

 

Алгоритм:

 

1. Инициализация (если светодиод был включен, выключить его).

2. Включить светодиод.

3. Подождать 1 сек.

4. Выключить светодиод.

 

Реализация алгоритма (на С):

 

if( PORTA & 0x01) PORTA &= ~0x01;

 

PORTA |= 0x01;

__delay_cycles(...);

PORTA &= ~0x01;

 

Реализация исходного алгоритма, как видите, тоже является алгоритмом, но более детально проработанным - конкретно указаны адреса порта и маска бита, конкретно указана величина задержки и способ ее реализации (через встроенный интринсик __delay_cycles()).

 

Если пропустим этот код через компилятор, то получим еще более детальную реализацию алгоритма (уже в командах целевого процессора). Это тоже будет алгоритм.

 

Поэтому противопоставлять термины "алгоритм" и "реализация алгоритма" не совсем корректно - второе является первым (но добавляет информации о нюансах).

 

Реализация алгоритма на Cи уже не является алгоритмом:

 

1) Алгоритм может быть реализован не только с использованием AVR, но и ПЛИС и "рассыпухи", а реализация на Си может работать только на AVR и то не на любом, а только на том, к которому подсоединен светодиод и то, не к любой ножке, а только к определенной и, к тому же, светодиод должен быть подсоединен строго определенным образом (так, чтобы запись 1 в соответствующий бит его зажигала, а не гасила)

 

2) В п.2 алгоритма сказано "Включить светодиод", а что сказано в записи на языке Си? А там сказано "PORTA |= 0x01;" Скажите, ну как из этого кода догадаться, что тут имеется ввиду зажигание светодиода??? Ну как понять из описания на Си, что к AVR должен быть подключен светодиод??? Да почему Вы вообще считаете, что светодиод зажигается когда бит = 1 и гаснет, когда бит = 0? Припаяйте светодиод по другой схеме и 0 будет его зажигать, а 1 гасить.

 

Если Вы кому-то дадите на реализацию то, что у вас записано под словом "Алгоритм:", то вы получите устройство (причем не обязательно на AVR), которое мигает светодиодом. Но если Вы попросите реализовать то, что написано под словами "Реализация алгоритма (на С):", то вы не получите ничего - не надейтесь, что кто-то догадается, что тут нужен светодиод.

 

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

 

1. Возьми деньги.

2. Оденься.

3. Обуйся.

4. Иди в магазин, который за углом.

5. Купи хлеба и водки.

6. Отнеси водку отцу в гараж.

7. Принеси домой хлеб.

8. Возьми с полки конфетку.

 

Алгоритм? Алгоритм. Записанное в виде вышепредставленных строк - программа (действий)? Программа. Исполнительное "устройство" - чадо мамаши.

 

Ну, начнем с того, что не мамаши являются исполнительными устройствами, а дети.

 

Это алгоритм, но это не программа. Давайте разберем почему.

 

1. Возьми деньги. - Сколько? Представьте себе, что ребенок возьмет всего 1 рубль. Хватит ему на водку с хлебом? Для алгоритма такая формулировка годится, но для программы нет. Для программы, как минимум, нужно уточнить сколько денег, в какой валюте и где именно их взять.

 

2. Оденься. А что это значит? одеть трусы этого будет достаточно? или нужно одеть штаны и рубашку? или может без куртки не обойтись?

 

3. Обуйся. Тапки? Сандали? Ботинки? Валенки? Резиновые сапоги?

 

4. Иди в магазин, который за углом. За каким углом? За тем, что в коридоре у ванной комнаты или на улице? За углом что справа или слева? У кого-то за углом 1 магазин, а у кого-то 4 магазина. В какой идти?

 

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

 

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

 

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

 

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

 

 

Алгоритм — точный набор инструкций, описывающих порядок действий ...

 

Нет. Алгоритм описывает, прежде всего метод решения задачи. В том числе, может быть описан и порядок действий, но это не обязательно.

 

А вот программа - это уже "точный набор инструкций" и порядок их исполения.

 

 

 

Ок, оставим философию в стороне.

 

int a;
int b;
int c;

int f(int x, int y)
{
    return a + b;
}

c = f(a, b);

Это программа? Программа. Где исполнительное устройство?

 

Нет. Это не программа.

 

На каком языке она написана? На английском? НЕТ. Что на английском означает слово int? Она написана на Си? НЕТ. На Бейсике? НЕТ. На каком-то другом языке программирования? НЕТ.

 

Это просто набор английских букв. Что делает эта программа. Да ничего.

 

А в чем заключается алгоритм? Да ни в чем!

 

Обратите внимания, что функция f принимает в качестве параметров x и y а складывает a и b.

 

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

 

Что Вы, собственно, этим примером хотели показать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Еще раз. Программа - это алгоритм записанный на каком-либо языке. Реализация алгоритма - это тоже алгоритм, более проработанный в деталях. В данном примере программа на языке программирования Си - т.е. алгоритм, записанный на языке Си. А исполняемый код - это программа на низкоуровневом языке (коды процессора) - реализация алгоритма. И то, и другое - программа, это очевидно.

 

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

 

Ну, и вообще, если вот тот код написан на языке программирования Си, но программой не является, то почему язык-то называется языком программирования?

 

Ну, можно вообще каждого второго в этом топике "обламать" и "подловить", если начать использовать слово "программа" в значении "программа передач".

 

Разве в этом смысл?

Причем тут подловить? А программа передач - это алгоритм [записанный на языке]? Если да, то программа в обсуждаемом смысле. Если нет, то нет. Критерий простой.

 

 

SystemVerilog is a parallel programming language. [iEEE Std 1800]. Это фраза из стандарта самого SV. противопоставлять программистов HDL-дизайнерам бессмысленно. Есть программисты, которые программируют на RTL-уровне. В скором времени этот уровень уйдет из масс в узкие ниши, как ушел уровень схематика и ассемблера. А на сисетмном уровне совсем не факт, что железо описывать на SV будет удобнее чем не матлабе или C++.

 

+1000! Ни добавить, ни прибавить. HDL - это именно ассемблер для параллельных систем (по уровню абстракции) и его ждет та же судьба, что и ассемблеры других платформ - он останется для "вылизывания" конкретных "тугих" мест, но в целом дизайн переместится на языки, которые по уровням абстракции будут еще выше, чем тот же С++ (матлабо-питоно-эрланги).

 

 

З.Ы. SV имеет туманное будущее еще и потому что не имеет open-source и универститетской поддержки - это узкоспециализированный индустриальный язык, развивающийся 14 конторами для внутреннего междусобойчика. Фанаты SV не сидят по всему миру и не прикладывают его ко всем возможным теориям, как это происходит с тем же С++. А SV реально обламывается тремя существующими компиляторами, которые до сих пор не могут масив интерфейсов обработать.

 

И снова +1000!

 

Вы напрасно так уперлись и придираетесь не по делу.

Я не придираюсь, я пытаюсь навести полную ясность, а это требует кропотливого ковыряния в мелочах. Только и всего.

 

Если угодно, то алгоритм можно не только записать, но еще и устно объяснить или жестами.

Объяснить можно. Но это будет не программа.

 

Поэтому тот факт, что алгоритм записывают на каком-то языка (русском, английском, Си, Бейсике и т.д.) еще не превращает его в программу. Его записывают просто потому, что так удобно его хранить и передавать из поколенья в поколенье :) Поэтому усечение вашей фразы ни на что не влияет. Кроме того, когда хотят какой-то алгоритм детализировать и "приблизить" его к реализации используют так называемый псевдокод. Но даже это все еще не программа, хотя реализация алгоритма, записанного псевдокодом проще. Таким образом, алгоритм, записанный на каком-либо языке на кокой-нибудь носитель - это всего лишь алгоритм, записанный на каком-либо языке на кокой-нибудь носитель, но никак еще не программа.

Ок. Дайте определение что есть программа. В общем виде.

 

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

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

 

Реализация алгоритма на Cи уже не является алгоритмом:

Ну вот, один оппонент утверждает, что код на Си - это не программа, а алгоритм (см пост №130), вы наоборот говорите, что это не алгоритм... И по-вашему же, вроде, и не программа. А что тогда? :biggrin:

 

1) Алгоритм может быть реализован не только с использованием AVR, но и ПЛИС и "рассыпухи", а реализация на Си может работать только на AVR и то не на любом, а только на том, к которому подсоединен светодиод и то, не к любой ножке, а только к определенной и, к тому же, светодиод должен быть подсоединен строго определенным образом (так, чтобы запись 1 в соответствующий бит его зажигала, а не гасила)

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

 

2) В п.2 алгоритма сказано "Включить светодиод", а что сказано в записи на языке Си? А там сказано "PORTA |= 0x01;" Скажите, ну как из этого кода догадаться, что тут имеется ввиду зажигание светодиода??? Ну как понять из описания на Си, что к AVR должен быть подключен светодиод??? Да почему Вы вообще считаете, что светодиод зажигается когда бит = 1 и гаснет, когда бит = 0? Припаяйте светодиод по другой схеме и 0 будет его зажигать, а 1 гасить.

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

 

Если Вы кому-то дадите на реализацию то, что у вас записано под словом "Алгоритм:", то вы получите устройство (причем не обязательно на AVR), которое мигает светодиодом. Но если Вы попросите реализовать то, что написано под словами "Реализация алгоритма (на С):", то вы не получите ничего - не надейтесь, что кто-то догадается, что тут нужен светодиод.

Вы контекст упускаете. Ну, в самом деле нельзя же перейти на нижний уровень и оперировать понятиями верхнего уровня. Вот возьмите обобщенный стек протоколов: 7 уровней, верхний - прикладной, нижний физический (еще там всякие промежуточные - канальные, логические и т.д.) и попробуйте перейдя с прикладного уровня на физический оперировать этими же понятиями. Ничего не получится. Так и тут. Для того ведь и вводят люди разные уровни абстракции, чтобы упростить построение моделей реализации - на каждом уровне своя модель. А если бы эти уровни были бы одинаковыми, то какой в них вообще смысл?

 

 

Ну, начнем с того, что не мамаши являются исполнительными устройствами, а дети.

Ну, я так и написал: "исполнительное "устройство" - чадо мамаши", сиречь, ребенок. :) Прошу простить, но если читать мои посты внимательнее, то и цитат, на которые я не возражаю (см выше), будет в корне меньше. :)

 

Это алгоритм, но это не программа. Давайте разберем почему.

 

1. Возьми деньги. - Сколько? Представьте себе, что ребенок возьмет всего 1 рубль. Хватит ему на водку с хлебом? Для алгоритма такая формулировка годится, но для программы нет. Для программы, как минимум, нужно уточнить сколько денег, в какой валюте и где именно их взять.

 

2. Оденься. А что это значит? одеть трусы этого будет достаточно? или нужно одеть штаны и рубашку? или может без куртки не обойтись?

 

3. Обуйся. Тапки? Сандали? Ботинки? Валенки? Резиновые сапоги?

 

4. Иди в магазин, который за углом. За каким углом? За тем, что в коридоре у ванной комнаты или на улице? За углом что справа или слева? У кого-то за углом 1 магазин, а у кого-то 4 магазина. В какой идти?

 

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

Да вы опять упускаете контекст. Ведь это алгоритм/программа заданы уже на определенном уровне абстракции и в неком конкретном контексте. И любой алгоритм и программа всегда имеют смысл в конкретном контексте. Всегда! Потому что, вообразите, что я задал бы все эти нюансы, которые вы указали, но тогда кто-то (а может и вы) сказали бы, что все равно неполнота - а место действия (город, страна, планета, галактика)? А время действия (час, день, месяц, год, век)? А погодные условия (может надо сапоги одевать и зонт брать при выполнении инструкции "оденься")? И т.д. Поэтому всегда надо иметь в виду контекст, в котором рассматривается алгоритм и программа.

 

Еще раз повторю: языки программирования не для записи алгоритмов, а для их реализации ввиде программ.

А запись алгоритма на языке - это разве не реализация его? Да, я уже понял, что вы реализацией считаете уже непосредственно выполнение. Но мне это не понятно (выше я уже спрашивал, что именно является программой - весь код, только выполняющаяся в данный момент инструкция или что). И заодно и вам адресую уже заданный мною вопрос: если код на языке программирования не является программой, то почему тогда язык называется языком программирования? А человек, которые пишет этот код - программистом?

 

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

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

 

Нет. Это не программа.

 

На каком языке она написана? На английском? НЕТ. Что на английском означает слово int? Она написана на Си? НЕТ. На Бейсике? НЕТ. На каком-то другом языке программирования? НЕТ.

 

Это просто набор английских букв. Что делает эта программа. Да ничего.

Как это набор английский букв? Это код на языке Си. Что вам в нем не понравилось, что вы его таковым не посчитали?

 

А в чем заключается алгоритм? Да ни в чем!

 

Обратите внимания, что функция f принимает в качестве параметров x и y а складывает a и b.

Это я ошибся - сперва у меня был чуть другой пример, который оперировал с глобальными переменными, потом я решил перенести это в функцию, а выражение сложения не поправил. Конечно, правильно будет return x + y;. Но сути это не меняет.

 

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

Не понимаю, что мешает вам увидеть там код на Си. :( Функцию main не увидели? Ну, так она-то тут причем? Я ведь не законченное приложение привел, а лишь код, реализующий конкретный простой алгоритм.

 

Что Вы, собственно, этим примером хотели показать?

Да, просто хотел узнать мнения участников обсуждения, считают ли они код на ЯП программой. Честно, был удивлен ответами. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю топикстартеру или админам закрыть тему

+1. уже в глазах рябит, а концом и не пахнет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю топикстартеру или админам закрыть тему

Предлагаю сначала написать синтезируемое "устройство печати таблицы умножения", ~100 млн. знаков/сек. И по затраченному времени, числу строк и наглядности кода, ресурсам ПЛИС - дать субъективную характеристику использованным языкам и средствам синтеза.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

+1. уже в глазах рябит, а концом и не пахнет

Последние 4 страницы вообще ни о чем, люди флудят о терминах. Что к теме топика имеет опосредованное отношение. Но думаю что мнения участников о будущем прозвучали, подождем года 2-3/5-6 потом вернемся к теме %)

 

Предлагаю сначала написать синтезируемое "устройство печати таблицы умножения", ~100 млн. знаков/сек. .

тогда уж полное ТЗ вываливайте, с указанием типов и видов используемых интерфейсов. Количества ресурсов, требования к системе и тд. и т.п. И ставьте условия задачи: с нуля, на основе готовых компонентов и т.д. и т.п.

В противном случае задача не корректна. Я даже знаю с вероятностью на 99% как именно вы ее решите за 5 минут %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Последние 4 страницы вообще ни о чем, люди флудят о терминах.

А вы считаете, что навести ясность в терминах не важно? Термины составляют словарь того [технического] языка, на котором идет обсуждение уже предметной области. Если тут нет взаимопонимаия и однозначности, то дальше тем более конструктивного общения не получится.

 

Что к теме топика имеет опосредованное отношение.

По теме топика уже давно и не раз высказали обоснованное мнение: профессия RTL дизайнера будет сродни профессии программиста на ассемблере - уметь писать код на HDL будет всегда кстати, и в специфичных областях останется еще немало пространства для этого. Но в целом тенденция та же что и в классическом программировании (асм порядка 1% и меньше). Которое, кстати, в реализациях идет "навстречу" - появляется все больше решений для реализации "классического программистского кода" на параллельно работающем железе - например, CUDA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы считаете, что навести ясность в терминах не важно? Термины составляют словарь того [технического] языка, на котором идет обсуждение уже предметной области. Если тут нет взаимопонимаия и однозначности, то дальше тем более конструктивного общения не получится.

Да это важно, но не в этой теме. Создайте себе отдельную тему о терминах и флудите себе на здоровье. В последних 4-х страницах одни эмоции и словоблудие, к теме не относящиеся.

 

По теме топика уже давно и не раз высказали обоснованное мнение:

ИМХО не стоит обобщать, в этой теме у каждого собственное мнение. Мое высказано на 1 и 2 страницах топика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, и вообще, если вот тот код написан на языке программирования Си, но программой не является, то почему язык-то называется языком программирования?

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

 

А программа передач - это алгоритм [записанный на языке]? Если да, то программа в обсуждаемом смысле. Если нет, то нет. Критерий простой.

Даже не записанная ни на каком языке "программа передач" является программой, и исключительно потому, что она исполняется оператором режиссерского пульта, или еще кем-то там, я не в курсах как эта профессия называется правильно. Но программа может быть только в его уме (памяти) находиться, и записана вовсе не обязана быть.

 

HDL - это именно ассемблер для параллельных систем (по уровню абстракции) и его ждет та же судьба, что и ассемблеры других платформ -

А я вот считаю, что HDL ждет развитие по уровню абстракции. Возможно до уровня языков функционального программирования. Как в языках программирования С развился в C++, так и в HDL V->SV->далее. Да и изобретение HDL с синтаксисом C++ (SC) тоже неслабый шаг в увеличении абстракции HDL. И соответственно этому профессия RTL designer просто изменится, как и изменится уровень абстракции описания этой самой RTL. Но, естествеенно, и спрос на "ассемблерщиков" будет всегда.

 

Ок. Дайте определение что есть программа. В общем виде.

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

 

По-вашему, программой он станет только при выполнении?

Именно. А до этого момента - оно просто запись программы, исходный текст программы, код программы, как угодно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Даже не записанная ни на каком языке "программа передач" является программой, и исключительно потому, что она исполняется оператором режиссерского пульта,

Тем не менее, заметьте, она назвается программой задолго то того, как начинает исполняться. А еще могут быть изменения в программе - как же могут быть изменения в том, что еще программой не стало (если изменения происходят до выполнения)?

 

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

 

Именно. А до этого момента - оно просто запись программы, исходный текст программы, код программы, как угодно.

А в какой именно момент оно становится программой? В момент начала исполнения первой инструкции? Или программой является только лишь текущая исполняемая инструкция? А вот .exe файл является программой? А .dll файл является программой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в какой именно момент оно становится программой? В момент начала исполнения первой инструкции? Или программой является только лишь текущая исполняемая инструкция?

В момент передачи устройству для исполнения. Еще до исполнения первой инструкции. Возможно даже задолго до этого.

 

Тем не менее, заметьте, она назвается программой задолго то того, как начинает исполняться. А еще могут быть изменения в программе - как же могут быть изменения в том, что еще программой не стало (если изменения происходят до выполнения)?

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

 

А вот .exe файл является программой? А .dll файл является программой?

они являются исполняемым модулем и библиотекой соответственно. А программу могут и не содержать. Вдруг там только секция ".data" и оно никогда не будет исполняться никаким устройством и для этого вовсе не предназначено...

 

По вашему объяснению языком программирования является только лишь тот код, на котором закодированы конкретные инструкции исполнительного устройства (процессора, например).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В момент передачи устройству для исполнения. Еще до исполнения первой инструкции. Возможно даже задолго до этого.

 

Она уже передана на исполнение исполнителю - вот и стала программой,

 

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

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

 

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

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

 

А на деле все гораздо проще: языки программирования - это те, которые специально предназначены для записи (и, если угодно, с последующим хранением для передачи потомкам и/или исполнением) алгоритмов и ни для чего другого, этим и отличаются от обычных языков.

 

Короче ладно, мне все ясно. Не смею больше отвлекать. Всего хорошего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По теме топика уже давно и не раз высказали обоснованное мнение: профессия RTL дизайнера будет сродни профессии программиста на ассемблере - уметь писать код на HDL будет всегда кстати, и в специфичных областях останется еще немало пространства для этого. Но в целом тенденция та же что и в классическом программировании (асм порядка 1% и меньше). Которое, кстати, в реализациях идет "навстречу" - появляется все больше решений для реализации "классического программистского кода" на параллельно работающем железе - например, CUDA.

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

ПЛИСины пока что дорогие, что бы разбрасываться их ресурсами на "программирование мышкой"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это вы тоже сами придумали.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...