Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

я не пойму, почему во многих языках нужно указывать тип переменным?

Padre Karlo Профи (918), на голосовании 12 лет назад
вот люблю php и JS в них не обязательно этого, а в том же паскале нужно указывать тип переменных перед тем как записать в нее какие то данные
Дополнен 12 лет назад
в языках программирования
Дополнен 12 лет назад
оговорочка! в php и JS не обязательно указывать, но возможно
Дополнен 12 лет назад
неа, машинный код не для меня)
Голосование за лучший ответ
Helmeric Профи (885) 12 лет назад
потому что языкам нужно знать как именно интерпретировать данные. . как символ\значение\указатель на чтолибо и т д... .
Padre KarloПрофи (918) 12 лет назад
а php не нужно знать?
ILUSHKA Мастер (1166) PHP в зависимости от такого как последний раз присвоено значение сам выбирает тип переменной, т.е. по сути тоже указывается тип, но неявно.
ILUSHKA Мастер (1166) 12 лет назад
На самом деле в 32-битной среде реально только 3 типа переменных - 1,2 и 4 байта, все остальное - синонимы, призванные понять компилятору как с ними производить операции, защитить программиста от ошибок и дать понять программисту для чего служит переменная.
А php, js - это байт-код (поэтому такая абстракция) , а Паскаль - машинный код (т. е. прямая работа с процессором).
Jurijus ZaksasИскусственный Интеллект (467236) 12 лет назад
Сдается мне, ты забыл про операции с плавающей точкой. В 4 байта не поместимся, ась?
ILUSHKA Мастер (1166) Сдается мне, ты забыл про принцип программирования центрального процессора - в 32-битной среде регистры 32 бита и инструкции в большинстве своём работают с объёмом памяти в 32 бита. И мне придётся тебя удивить, но на x86 float = 4 байта. Всё остальное, что больше 4-х байт в 32-битной среде - есть обманка, на самом деле работа идёт с двумя 32битными наборами и более. Поэтому в таком случае рекомедуется отказываться от 8-байтных типов, т.к. работа с ними довольно накладна для 32-битных процессоров.
Дмитрий Логов Знаток (260) 12 лет назад
php и JS легкие т. к. все эти задачи решают за программсита, но вы сами подумайте сколько ресурсов занимают эти задачи. Программы написанные на С++ в 5-10 раз быстрее и надежнее
ILUSHKAМастер (1166) 12 лет назад
На современном PHP эти задачи не занимают настолько много ресурсов. Такая же абстракция, написанная на С++ будет отнимать такое же количество ресурсов - разницы то почти никакой. Откуда такая информация, что программы, написанные на C++ в 5-10 раз быстрее и надёжнее? Не надо придумывать волшебные свойства плюсов и дезинформировать людей. Всё зависит от конкретной задачи - можно и на машинном коде писать одно место.
На современном PHP эти задачи не занимают настолько много ресурсов. Такая же абстракция, написанная на С++ будет отнимать такое же количество ресурсов - разницы то почти никакой. покажите это
Jurijus Zaksas Искусственный Интеллект (467236) 12 лет назад
Потому что от типа переменной зависит количество выделяемой для нее памяти.
Для лентяев есть тип variant.
Но скорость работы с этим типом будет вроде твоих любимых ПХП и жабоскрипта.
Евгений Гуру (3083) 12 лет назад
компилятор:
при указании типа переменных становится известно, как будет по ресурсам использоваться оперативная память, т. о. при запуске программы, система производит подготовку её для этих типов переменных и далее уже выполняется сам алгоритм
это позволяет при эффективном написании кода повысить производительность программы по сравнению с интерпретатором
среды использующие компилятор: Delphi, C++ ,pascal...

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