LINUX.ORG.RU
решено ФорумTalks

Программирование без процессора

 теория вычисления


0

1

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

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

Перемещено DoctorSinus из development



Последнее исправление: anonimous (всего исправлений: 1)

плис /thread

anonymous
()
Ответ на: комментарий от mm3

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

anonimous
() автор топика
Ответ на: комментарий от shamaz

А это имеет отношение к делу? Я хочу научится программировать. Поэтому я хочу знать что есть что, чтобы определять сразу, что мне нужно, а что нет. Хочу найти кратчайший путь и отсеить дерьмо. А глядя на современных программистов, я вижу, что они больше похожи на секретуток. Дал им дядя функцию sum - они довольны. Хотя какое это отношение имеет к вычислениям - непонятно. Да, я упорот.

anonimous
() автор топика
Ответ на: комментарий от emulek

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

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

mm3 ★★★
()
Ответ на: комментарий от mm3

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

Программирование - возможно. Исполнение программы - тоже. Как? Очень просто - сажаешь кучу секретуток за выполнение расчетов по твоему алгоритму. Хотя стоп, им же кто-то в школе дал функцию sum - они довольны, хотя какое это отношение имеет к вычислениям - непонятно.

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

eagleivg ★★★★★
()
Ответ на: комментарий от anonimous

Где тут необходимость проца, я не пойму?

Процессором называют тот механизм или совокупность механизмов которые выполняет алгоритм. Если хочешь, поиграйся в minecraft с красной пылью. Там как раз повторители, инверторы, поршни, фотоэлементы, кнопки, рычаги и прочее.

rezedent12 ☆☆☆
()
Ответ на: комментарий от eagleivg

Аргументы есть, или что-то по теме, или только разоблачение заблуждений? Я соглашусь, что ошибаюсь, когда пойму свою ошибку. Это нормально.

anonimous
() автор топика
Ответ на: комментарий от anonimous

А потом ты добавляещь еще 2 реле для ИЛИ, и еще 2 для НЕ. А потом ты из них делаешь сумматор. А потом ты для удобства обзываешь эту мешанину реле процом и определяешь в нем функцию sum, чтобы не писать каждый раз кучу бинарного кода. А через 20 лет ты придумаешь С, еще через 20 - ООП. Ты правда хочешь повторить весь путь эволюции?

eagleivg ★★★★★
()
Ответ на: комментарий от anonimous

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

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

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

Процессором называют тот механизм или совокупность механизмов которые выполняет алгоритм

По вашему получается, что в моем примере проц - это 2 реле и провода?

anonimous
() автор топика
Ответ на: комментарий от anonimous

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

eagleivg ★★★★★
()

первые компьютеры были по-сути релейными схемами

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

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

mentalmenza
()
Ответ на: комментарий от eagleivg

Мне важно понимание основ. И чтобы понять что-либо, ты болжен до всего дойти сам, в определенном смысле, переизобрести, иначе останешся в матрице.

Ты правда хочешь повторить весь путь эволюции?

Я не уверен, что этот путь - не тупиковая ветвь. Возможно где то в основании стоило пойти другим путем. В вашем же примере, я подчеркиваю, что сумматор нужен не всегда, почему я должен все делать через него? Может здесь какая то логическая трещина в основании CS? Кто знает.

anonimous
() автор топика
Ответ на: комментарий от mentalmenza

Эти компьютеры не были программируемыми (напр. компьютер Атанасова).
Просто на вход подаёшь какие-то исходные данные, схема их преобразует, получаешь данные на выходе.

А это что не программирование чтоли? Исх данные - программа, схема - вычислитель. Почему это не ЭВМ?

anonimous
() автор топика
Ответ на: комментарий от anonimous

По вашему получается, что в моем примере проц - это 2 реле и провода?

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

Jurik_Phys ★★★★★
()

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

Если не считать ПЛИС процессором, то вполне возможно. Если таки хочешь совсем без микроэлектроники — железный феликс.

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonimous

Я не уверен, что этот путь - не тупиковая ветвь.

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

А что касается основ - поищи, мне в детстве попалась книжка об истории ЭВМ, еще советского издания. Там очень подробно расписывалось, начиная с табулятора Холерита. Очень тяжело перепечатывать ее всю тут, да еще и с диаграммами.

Хотя, порыскав по сети, нашел слабое подобие левой руки: http://evm-story.narod.ru/ Обрати особое внимание на способы программирования ЭНИАКа. Тогда ты и поймешь, насколько зажрался.

eagleivg ★★★★★
()
Ответ на: комментарий от Jurik_Phys

Но тогда нахрена это четкое разделение на процессор и память??? Ведь память реализуется теми же простыми логическими элементами.

anonimous
() автор топика
Ответ на: комментарий от eagleivg

Да есть. Во первых - интуиция. Я знаю реализацию электро-схем не по наслышке, это связано с моей профессией. Знаю, например, реализацию Релейных защит. И я вижу огромный разрыв между этим и ЭВМ. А этого быть не должно, поскольку и то и другое есть вычислители. Например, нам постоянно пытаются навязать, что в компе есть какие то числа, которых нет там и в помине, и ничего на них на нижнем уровне не завязано. Нахрена на асме завязывается все на арифм операциях, и на этом акцентируется внимание - для меня загадка. Говорят что так удобней, но я не вижу удобства в том, чтобы выполнять задачи через Ж.

anonimous
() автор топика
Последнее исправление: anonimous (всего исправлений: 1)
Ответ на: комментарий от anonimous

Вот смотри. Ты спаял схему, на вход которой подаёшь генератором напряжения 2 вольта, на выходе меряешь вольтметром и получаешь 4 вольта. Это значит, что ты построил компьютер, который принимает число, возвращает в два раза большее. Можно ли назвать кручение ручек на генераторе напряжения программированием? Мне кажется нет.

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

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

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

mentalmenza
()
Ответ на: комментарий от eagleivg

Со своими (вычислительными) задачами они справляются намного лучше, чем их изобретатели

Смешно. Это обеспечивается милиардами секретуток-программистов, которые пишут очень важные гуи. get то put туда. Индустрия массового производства. Под это и заточено сегодняшнее программирование, а может и архитектура. У нас банковские терминалы работают под windows. Ни о чем не говорит? С чем они справляются лучше?

anonimous
() автор топика
Ответ на: комментарий от eagleivg

К сожалению, в педивикии куцые обрывки, совсем неясно, как до них дошли.

Цель этих обрывков не объяснить всю глубину вопроса, а определить направление дальнейшего поиска, изучения вопроса.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от anonimous

Мне важно понимание основ.

Дал им дядя функцию sum - они довольны.

Я тоже так когда-то думал. А потом почитал SICP и узнал про абстракцию.

mentalmenza
()
Ответ на: комментарий от mentalmenza

Я говорил о логической схеме. Каким боком тут преобразование величины напряжения, мне не понятно. Так можно и трансформатор компьютером называть. Я Вам про Фому а Вы - про Ярему.

anonimous
() автор топика
Ответ на: комментарий от anonimous

CS это вычислительная наука? Она сама по себе чисто прикладное явление. Может быть тебя интересует кибернетика?

sin_a ★★★★★
()
Ответ на: комментарий от anonimous

Но тогда нахрена это четкое разделение на процессор и память???

Модульная система, разделение ролей. Другой пример - APU видео и центральный процессор объединены, не всем это подходит. Не всем подойдёт и процессор с 20ГБ оперативной памяти.

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

Jurik_Phys ★★★★★
()
Ответ на: комментарий от anonimous

например, реализацию Релейных защит. И я вижу огромный разрыв между этим и ЭВМ

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

sin_a ★★★★★
()
Ответ на: комментарий от mentalmenza

А потом почитал SICP

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

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

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

mentalmenza
()
Ответ на: комментарий от sin_a

Почитай про OSI.

Читать нет желания. Вы не понимаете о чем я. Я хочу строить свои абстракции а не пользоваться чужими поделиями. Пользоваться чужими - это тупость. Одно дело - быть оператором ЧПУ, другое - спроектировать и запрограммировать его. Улавливаете разницу?

anonimous
() автор топика
Ответ на: комментарий от anonimous

Мы должны строить абстракции сами, а не пользоваться готовыми.

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

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

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

Jurik_Phys ★★★★★
()
Ответ на: комментарий от mentalmenza

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

Это как раз Вы так думаете. Я выше написал, что числа не имеют никакого отношения к реальным вычислениям. Первичны электросигналы, а как вы их назовете, 01 или true false, значения не имеет.

Дальше - какой то бред, про учительницу я ничего не понял.

anonimous
() автор топика
Ответ на: комментарий от anonimous

не пользоваться чужими поделиями

До какого уровня? Желание производить свои полупроводники и переоткрывать закон Ома ещё не пришло?

sin_a ★★★★★
()
Ответ на: комментарий от anonimous

Мы должны строить абстракции сами, а не пользоваться готовыми.

Как можно было такой вывод сделать?

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

Исходный код Linux что-то вроде пяти миллионов строк. Это где-то 100 томов по 1000 страниц каждый. Linux Developer должен прочитать всё это, что ли?

mentalmenza
()
Ответ на: комментарий от anonimous

Читать нет желания.

Пользоваться чужими - это тупость.

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

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

Jurik_Phys ★★★★★
()
Ответ на: комментарий от sin_a

Это нужно только для четкого понимания. Никто не говорит, что нужно программировать на транзисторах.

anonimous
() автор топика
Ответ на: комментарий от anonimous

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

mentalmenza
()
Ответ на: комментарий от mentalmenza

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

Это нужно только для четкого понимания

Понимания чего именно?

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

sin_a ★★★★★
()
Ответ на: комментарий от anonimous

По вашему получается, что в моем примере проц - это 2 реле и провода?

http://ru.wikipedia.org/wiki/Процессор

У тебя простая логическая схема. Это не программирование, а конструирование. Программирование начнётся когда в погоне за гибкостью ты усложнишь свою схему настолько что она станет процессором.

rezedent12 ☆☆☆
()
Ответ на: комментарий от anonimous

Вы должны сами строить слои абстракции, для себя же

Как Вы полагаете, возможно ли в каких либо случаях говорить об «объективных» слоях абстракции?

sin_a ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.