LINUX.ORG.RU
ФорумTalks

Упоротая идея для ЯП

 , , , ,


0

1

Недавно дискутировал на тему, какой ЯП самый Ъ.
Я утверждал, что это Си, мне ответили, что ASM хардкорнее, что я парировал так:

Ассемблеров много, а Си един (только с типами данных беда, конечно).

В ответ на это я получил совет: «Создавай свои типы @ будь мужиком».
Тогда я сформулировал идею ультрахардкорного языка:

При объявлении переменной мы указываем только число бит, которое под неё выделяется.
Получается, что типов данных бесконечное количество.
Все они приводятся к двоичному виду, который можно легко сравнить или сделать бинарную операцию.
Конечно, тут очень много нюансов (например, нужно самому запоминать, где signed, а где unsigned или где просто большое целое число, а где double-precision floating-point), их нельзя между собой сравнивать, нельзя проводить межтиповые операции. С приведением тоже придётся подумать.
А вообще есть такие языки? Может ли подобная идея взлететь?

★★★★★

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

хаскеллисты в ужасе.

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

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

В чём смысл типов в твоём ЯП?

PolarFox ★★★★★
()

Только лишь количеством байт не отжелаешся. Что делать с endianess?

nanoolinux ★★★★
()

А вообще есть такие языки?

ну, жаба, например :)

указываешь число бит: byte=8, short=16, int=32, long=64 - и вперед

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

Ну, тут смысл как раз в том, что нет никаких типов.

Языков без типов не бывает. Даже в самых примитивных языках есть тип «машинное слово».

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 2)

На Brainf[is]k вполне реализуемо. Но там нет переменных как таковых, только сплошная лента.

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

юзаешь byte.

если ооочень надо - сделай обертку, которая будет AND-ить с маской 0x3 или 0x7 соответственно

двух- и трёх-битные типы

если речь о таком, то сишечка тоже вполне умеет: struct { int x:2; int y:3; }

а в C++ есть бит-векторы на случай, если 64 бит тебе не хватит, и захочется 65

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

Что делать?

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

Но нет же. Ради такой примитивной хрени, городить целый язык.
Тебя Поттеринг покусал?
Прими 2 диска с BSD внутрипопочно и полечись с помощью K&R равномерными ударами по фейсу:)

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

C и Asm - для неосиляторов высоко-уровневых языков (хотя-бы уровня C++/Java/C#/ObjC)

ваистену. Я C++ так и не осилил. Да что там C++, вообще объектное программирование не осилил нормально. Только ASM, паскаль, octave и хаскель.

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

Ты только что придумал LLVM IR. Правда, там есть ещё структурки, указатели, векторы и функции.

ilammy ★★★
()

Привет, любимая отладка! О, ты не одна...

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

Ну, тут смысл как раз в том, что нет никаких типов.

тип - в первую очередь не описание того, как данные хранить, а описание того, что и как с ними делать.


А вот мне вдруг понадобились двух- и трёх-битные типы. Что делать?

на разных архитектурах в int и так разное число бит, а вообще - ООП.

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

Только ASM, паскаль, octave и хаскель.

И как с трудоустройством? Проблем не возникает с поиском работы?

нет %)

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

Ну так бы и сказали, что не программистом работаете :-)

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

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

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Anonymous
 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
 .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
 ------.--------.>+.>.
u283
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.