LINUX.ORG.RU

Все есть строка?

 , ,


0

1

Многие интерпретируемые ЯП, нпример тот же шелл, перл, декларируют красивый лозунг (сабж). Я попробовал программировать в таком стиле в JS, и это действительно великолепно! Не нужно забивать голову, например, тем, что массив имеет метод а строка или объект - нет, приходится создавать какие то велосипедные интерфейсы совместимости, и прочее. Если все есть строка - этих проблем просто не возникает, программировать приятно, ни на что лишнее не отвлекаешься. Метопрограммирование - вообще ништяк.

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



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

Потому что «5» и 5 — две большие разницы. И исходное утверждение справедливо, может быть, разве что для тикля и шелла, да и то до какой-то степени.

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

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

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

Для того чтобы на языке можно было нормально программировать, в нём должны быть числа, строки, списки, словари и функции. Разница между «5» и 5 проявляется уже на операции сложения.

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

проявляется уже на операции сложения.

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

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

Кто-то в каком-то треде писал, что не может сложить носорога с бегемотом, и вот те на! Что так повлияло на ваше мировоззрение?

vonenij
()

Разные типы — разные методы и свойства, больше гибкость. Тот же 5 и «5» тому пример.

TGZ ★★★★
()
Ответ на: комментарий от anonymous
"abc" + "xyz" == "abcxyz"

Да, для этого есть умное слово конкатенация, но его дольше печатать, да и во многих ЯП оно изображается знаком +.

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

Может это конкатенация?

Да, в идеале. Это если вообще забыть о слове ф-ция.

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

как-как, «int func (int x) {return x + 5}». в интерпретируемом языке никаких проблем.

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

Я имел в виду не минимальный базис, а минимально удобный для использования базис. Мне без словарей неудобно.

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

Что так повлияло на ваше мировоззрение?

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

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

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

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

азные типы — разные методы и свойства, больше гибкость. Тот же 5 и «5» тому пример.

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

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

Про что? Не, не он. А лисп был на чистых списках только на бумаге, насколько я знаю.

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

У тебя в черепе убожество.

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

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

Лучше лишний раз написать tonumber или tostring, чем получить равенство «0» и false.

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

Внезапно, любаяфункция.tostring() в жабоскрипте именно исходник и выдаёт.

Выдает, а так бы даже в функцию оборачивать не нужно было бы.

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

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

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

Strings, and concatenation of strings can be treated as an algebraic system with some properties resembling those of the addition of integers

Да, это не сложение действительных чисел, ну и чо? Нормально обозвать это сложением чисто формально.

Это же полугруппа. Как целые числа со сложением.

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

не делает конкатенацию сложением.

Вообще-то, сложение отображается в конкатенацию. Т.е. Оно представимо конкатенацией.

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

Интересно, как функцию представить строкой?

например так: erlang:

%% somewhere onto erlangs console
term_to_binary(fun() -> 1 end). 

%% part of output
<<131,112,0,0,2,139,0,153,130,242,188,160,26,53,42,69,147,
  42,109,185,90,19,54,0,0,0,20,0,0,...>>

для многих языков это не значимая проблема

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

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

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

Про что я и говорил, собственно. Но проблема в том, что у тебя множество чисел счетное, так?

Но тем не менее, таки да, конкатенация и сложение похожи

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

Это что, какой-то вариант сериализации?

с некоторой натяжкой - да. Но это более компактная и портабельная вещь - дословно бинарное представление терма (любого, валидного в данной системе)

http://www.erlang.org/doc/man/erlang.html#term_to_binary-1

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

Во-первых, покажи, что ты имеешь в виду.

Выше написать. Реальный код мне писать неохота, в little schemer ЕМНИП, есть пример подобного подхода.

А во-вторых, это ничего не подменяет :)

Подменяет то, что в числах, как отдельном типе днных, во многих случаях нет нужды вообще.

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

Я об этом и говорил, когда сказал, что списков достаточно. Вот только при чем тут строки?

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

что у тебя множество чисел счетное, так?

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

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