LINUX.ORG.RU

безтиповые языки

 ,


0

3

Есть такие?

У меня есть клевый и классный компилятор диалекта сишечки, в котором int == char, вот. Указатель и число это одно и тоже, даже кастовать не надо, збс.

Так вот, у меня что, безтиповый язык?

Deleted

Ответ на: комментарий от buddhist

А как можно изучить язык ассемблера не изучая разные там восьмеричные, шестнадцатиричные и тп. Возможно ли это? Или маш код? Ведь я так понимаю, надо просто адресовать записи в регистры, ведь это можно делать и напрямую? Но как не откроешь какой-нибудь учебник, там заставляют зубрить всякую лабуду. Хотелось бы попробовать, просто, что это такое - работать напрямую с железом, поэксперементировать. Давно хотел попробовать взятся за него, но когда начинается эта фигня я засыпаю. А ведь настоящий мужчина должен писать на асме! Еще хотелось бы TECO, говорят мощнейший был редактор и язык. Но не могу найти для openbsd.

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

А ну залогинься!

Хотелось бы попробовать, просто, что это такое - работать напрямую с железом, поэксперементировать

Это можно делать с успехом из C.

Но как не откроешь какой-нибудь учебник, там заставляют зубрить всякую лабуду

Конкретно можно?

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

Такое впечатление, что он всё таки имел в виду размер символьного литерала. Так мне телепатия говорит. Но в C так и должно быть

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

Это можно делать с успехом из C.

А си разве не сложнее чем асм? Я си тоже не знаю. Вообще хотелось бы понять основы, думаю асм больше подходит, не?

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

Конкретно можно?

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

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

Кажется, меня троллят

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

anonymous
()

Вроде шелл оперирует только символами.

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

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

Шестнадцатеричные числа используются только по причине удобства их использования (а оно вытекает из того, что одна шестнадцатеричная цифра соответствует 4-м двоичным). Не хочешь — забей. Любой ассемблер позволяет тебе все числа писать в десятичной, двоичной и восьмеричной системах.

ак добраться непосредственно до транзисторов процессора - вот что меня интересует. Об этом интернет молчит в тряпочкупочему-то.

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

Почитай что-нибудь о том, как эти самые процессоры работают.

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

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

Самое главное представлять как это в двоичной системе. Все остальные системы второстепенны.

Как добраться непосредственно до транзисторов процессора - вот что меня интересует.

Это напрямую невозможно. )

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

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

У меня нет аккаунта на лоре. Щас зарегистрируюсь и войду. Только не понимаю, что это даст, ведь можно регится 1000 раз, это все один хрен. Про транзисторы я спрашивал не в смысле того, что их потрогать пальцами. Должен же существовать какой-то слой, который связывает двоичный код и электрические сигналы? Что это?

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

А как можно изучить язык ассемблера не изучая разные там восьмеричные, шестнадцатиричные и тп.

Можно. Только это очень, очень, очень плохая идея. Настоящему мужчине системы счисления — не помеха!

TECO? Ну тогда тебе в конец 70-х — начало 80-х. Он развился в Emacs.

Deleted
()

в котором int == char

Если ты про длинну, то ЕМНИП стандарт не запрещает. Главное чтобы char был не больше int.

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

Самое главное представлять как это в двоичной системе. Все остальные системы второстепенны.

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

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

если мы имеем дело с электрическими сигналами

Асм не настолько низкоуровневый =)
Обычно в распоряжении есть регистры, память и, возможно, порты. Всё, можно играться байтами, а при желании и дрыгать ножками.

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

Он развился в Emacs

Я в курсе, но Emacs - это монстр. я где-то читал, что олдскульные программисты считали TECO самым выразительным, и при этом, самым нечитаемым, из всех языков.

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

Должен же существовать какой-то слой, который связывает двоичный код и электрические сигналы? Что это?

Микрокод или в примитивном случае прямо устройство управления.

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

Там 16 бит, виртуальная машина.

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

Вот. хотелось бы получить доступ напрямую к транзисторам. Но не дают.

Может тогда дорога к HDL'ям?

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

Микрокод или в примитивном случае прямо устройство управления.

Как к нему получить доступ (из под оси, или еще как-то)?

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

Ну да, так и есть. А еще оно все беззнаковое, пока, по крайней мере.

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

Ибо каждый иногда прикидывается дурачком из-под анонимуса.

и только я всегда прикидываюсь из-под регистранта. а иногда и не прикидываюсь

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

доступ напрямую к транзисторам. Но не дают.

Да, к сожалению не дают )

Должен бы отметить что программирование на чистом asm-е в современном мире это практически атавизм.

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

http://ru.wikipedia.org/wiki/Язык_описания_аппаратуры

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

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

Да я встречался с подобными вещами, но хотелось бы не виртуальную, а реальную машину пощупать, и прямо щас.

Харе дураком прикидываться. Пошел купил ПЛИС и делай шо хочешь.

А в микроконтроллерах такое тоже невозможно(напрямую)?

Разумеется, микроконтроллер - это cpu + память + всякая периферия (порты ввода/вывода, таймеры, DAC/ADC)

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

А в микроконтроллерах такое тоже невозможно(напрямую)?

Разве только в наборах МС годов 70х, где процессор собрать надо из нескольких десятков корпусов. Начиная с 80х максимум контроля - подёргать ногой, которой управляет обычно запись в порт или память.

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

Вообще, зачем реально что-то щупать? Ты хочешь программировать или комманды электронам отдавать? «Ты иди по этому проводу, а ты через 10 нанометров поверни налево»

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

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

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

Не, ты упоротыш.

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

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

Я немного дергал лисп, но мне больше нравяться ранние, лисп-1, лисп-1.5, Мне кажется для понимания основ - самое оно. А CL по моему, слишком перегружен синтаксисом. Поседеешь пока его изучишь. А надо ли? А за плис спасибо, я глянул бегло в вики, возможно это то что мне надо. Хотя хотелось без суеты, но это все же лучше чем ничего.

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

Должен же существовать какой-то слой, который связывает двоичный код и электрические сигналы? Что это?

Если на проводке «малое» значение напряжения или тока, то это 0, если «большое» — 1.

Способов аппаратной реализации двоичной логики много. Можешь почитать вот:

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

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

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

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

Ты ведь понимаешь, что за последние 30 лет произошел огромнейший прогресс в этой отрасли?

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

тебе нужен высокий уровень абстракции от реализации разных возможностей

Просто я однажды заметил, когда учился программировать, что к примеру конструкция if-else свободно выражается в терминах or and. А ведь это прямая электросхема!!! Вот тогда я и подумал, что все эти слои, которые наплодили, включая асм и даже регистры - это искуственно созданная «матрица» которая нах не нужна.

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

огромное спасибо, буду разбираться

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

Должен бы отметить что программирование на чистом asm-е в современном мире это практически атавизм.

Всё еще необходимо, если пишешь загрузчик или ОС.

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

конструкция if-else свободно выражается в терминах or and.

Интересно услышать детали, про ветвление особенно.

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

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

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

Всё еще необходимо, если пишешь загрузчик или ОС.

Или если нужно чтоб что-то было совсем быстро.

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

Мне надо вспомнить Я напишу чуть позже, сразу не могу, в течении часа думаю вспомню, давно это было.

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

Я подозреваю, что товарищ имел ввиду соотв. логические элементы. Если он конечно не тролль;-) Но после прокодера я уже готов во все поверить.

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

Если имеются в виде сишные ленивые && и ||, то это делается легко:

if (c) { a; } else { b; }

(c) && (a, 1) || (b);

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