LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

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

Во всех нормальных языках и фреймворках системная кодировка всегда одна (UTF-8 или UTF-16). А перекодирование осущещствляется только внутри функций ввода-вывода. Это гораздо удобнее, потому что в любой момент времени быть уверенным, в какой кодировке строка. А если строка имеет отличную кодировку, то это уже не строка, а массив чисел (хотя её можно преобразовать из/в строку с помощью спецфункций, явно указав кодировку). Иначе почём зря раздувается стандартная библиотека (все строковые функции надо продублировать для всех кодировок) и добавляется куча проверок. Что будет если сложить строку в кодировке Windows-1251 со строкой в кодировке CP-866? Каков бы не был ответ, он будет нифига неинтуитивен и приведёт к ошибкам. А если мне нужна кодировка, которую не умеет твой компилятор? Править компилятор? Или нарушать единообразие, работая с такой строкой как в других языках (перекодировать в юникодовскую строку, обработать по-человечески, перекодировать обратно)?

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».

Исправление KivApple, :

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

Во всех нормальных языках и фреймворках системная кодировка всегда одна (UTF-8 или UTF-16). А перекодирование осущещствляется только внутри функций ввода-вывода. Это гораздо удобнее, потому что в любой момент времени быть уверенным, в какой кодировке строка. А если строка имеет отличную кодировку, то это уже не строка, а массив чисел (хотя её можно преобразовать из/в строку с помощью спецфункций, явно указав кодировку). Иначе почём зря раздувается стандартная библиотека (все строковые функции надо продублировать для всех кодировок) и добавляется куча проверок. Что будет если сложить строку в кодировке Windows-1251 со строкой в кодировке CP-866? Каков бы не был ответ, он будет нифига неинтуитивен и приведёт к ошибкам. А если мне нужна кодировка, которую не умеет твой компилятор? Править компилятор? Или нарушать единообразие, работая с такой строкой как в других языках (перекодировать в юникодовскую строку, обработать по-человечески, перекодировать обратно)

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».

Исправление KivApple, :

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

Во всех нормальных языках и фреймворках системная кодировка всегда одна (UTF-8 или UTF-16). А перекодирование осущещствляется только внутри функций ввода-вывода. Это гораздо удобнее, потому что в любой момент времени быть уверенным, в какой кодировке строка. А если строка имеет отличную кодировку, то это уже не строка, а массив чисел (хотя её можно преобразовать из/в строку с помощью спецфункций, явно указав кодировку). Иначе почём зря раздувается стандартная библиотека (все строковые функции надо продублировать для всех кодировок) и добавляется куча проверок. Что будет если сложить строку в кодировке Windows-1251 со строкой в кодировке CP-866? Каков бы не был ответ, он будет нифига неинтуитивен и приведёт к ошибкам. А если мне нужна кодировка, которую не умеет твой компилятор? Править компилятор?

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».

Исправление KivApple, :

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

Во всех нормальных языках и фреймворках системная кодировка всегда одна (UTF-8 или UTF-16). А перекодирование осущещствляется только внутри функций ввода-вывода. Это гораздо удобнее, потому что в любой момент времени быть уверенным, в какой кодировке строка. А если строка имеет отличную кодировку, то это уже не строка, а массив чисел (хотя её можно преобразовать из/в строку с помощью спецфункций, явно указав кодировку). Иначе почём зря раздувается стандартная библиотека (все строковые функции надо продублировать для всех кодировок) и добавляется куча проверок. Что будет если сложить строку в кодировке Windows-1251 со строкой в кодировке CP-866? Каков бы не был ответ, он будет нифига неинтуитивен и приведёт к ошибкам.

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».

Исправление KivApple, :

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

Во всех нормальных языках и фреймворках системная кодировка всегда одна (UTF-8 или UTF-16). А перекодирование осущещствляется только внутри функций ввода-вывода. Это гораздо удобнее, потому что в любой момент времени быть уверенным, в какой кодировке строка. А если строка имеет отличную кодировку, то это уже не строка, а массив чисел. Иначе почём зря раздувается стандартная библиотека (все строковые функции надо продублировать для всех кодировок) и добавляется куча проверок. Что будет если сложить строку в кодировке Windows-1251 со строкой в кодировке CP-866? Каков бы не был ответ, он будет нифига неинтуитивен и приведёт к ошибкам.

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».

Исправление KivApple, :

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

Во всех нормальных языках и фреймворках системная кодировка всегда одна (UTF-8 или UTF-16). А перекодирование осущещствляется только внутри функций ввода-вывода. Это гораздо удобнее, потому что в любой момент времени быть уверенным, в какой кодировке строка. А если строка имеет отличную кодировку, то это уже не строка, а массив чисел. Иначе почём зря раздувается стандартная библиотека (все строковые функции надо продублировать для всех кодировок) и добавляется куча проверок. Что будет если сложить строку в кодировке Windows-1251 со строкой в кодировке CP-866.

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».

Исходная версия KivApple, :

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

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

Знаешь в чём проблема твоего способа? То что невозможно отличить объявление строки от вызова функции. Это очень плохо. Синтаксис должен быть единообразным. Ты принял, что «идентификатор(параметры)» - это вызов функций, так пусть это будет вызовом функций с соответствующей семантикой (даже паскалевское приведение типов более-менее подходит под это правило - можно считать, что для каждого типа есть одноимённая функция, которая принимает void и возвращает нужный тип). А у тебя появляется исключение из правил «конечно, это вызов функции, однако если имя функции такое-то, то это не функция, а сахар, а вместо аргументов может быть произвольная последовательность символов, в том числе зависящая от части себя».