Если переменным одного типа можно присваивать значения другого типа, (зачем вообще типизация нужна тогда?)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Лис
Сообщения: 1639
ОС: Zenwalk

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение Лис »

Portnov, drBatty, понятно. Спасибо за разъяснения.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение drBatty »

Portnov писал(а):
24.10.2007 13:38
drBatty писал(а):
24.10.2007 10:33
В жизни придётся познать Си, причём чужую и кривую реализацию, ещё и заточеную под процессор, который сейчас только в музеях увидишь

Если я правильно понял, вы имеете ввиду некоторую абстрактную реализацию С, заточенную под MIX-процессор. Я никогда такой не видел. Современные компиляторы оптимизируют под современные процессоры.

не, неправильно вы меня поняли. Я привёл пример того, что даже если нет вообще никаких типов(как в ассемблере MIX), всё равно можно писать переносимые программы, а если стандарт языка позволяет использовать типы, и даже часто помогает находить ошибки, то этому можно только радоваться.
Лис писал(а):
24.10.2007 10:12
А как она может помешать? Она ведь всего лишь обязывает явно приводить типы данных, т.е. приучает к порядку.

Про "приучает к порядку" - не спорю, это конечно хорошо. Как она может мешать - да вот банальный пример из C:

Код: Выделить всё

int i=2;
float j = (float)(1/i);

Не всем сразу очевидно, что j окажется равным 0.

причём тут типы? Это стиль, надо писать что-то вроде:

Код: Выделить всё

int i = 2;
float x = 1.0/((float)i);

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

Код: Выделить всё

 int a[100];
int j;
int b = j[a];
...работает, а не понятно.
drBatty писал(а):
24.10.2007 10:40
Вообще ошибки связаные с типом очень легко найти и исправить

Ой не факт... В том же C до чёрта примеров совершенно неуловимых багов, появляющихся из-за недостаточно строгой проверки типов при работе с целыми и дробными числами, с указателями и пр.

Если программист изначально использовал опасные преобразования - да. Кроме того, он просто обязан искать ошибки в первую очередь там где есть такие преобразования, к примеру как в вашем примере. :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение Portnov »

"float x = 0" вполне может быть просто опечаткой. И найти ее потом - целая проблема.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
phasma
Сообщения: 405

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение phasma »

вас почитаешь, задумаешься, действительно ли я быдлокодер )))
NB: Dell XPS 1330 T5250|DDR2 4GB|NV 8400|250 GB
Old NB: Asus A6km AMD Turion MT-32|DDR 2 GB|NV GFGO 7300|60 Gb
OS: Ubuntu 9.10, FreeBSD 8.0
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение eduard_pustobaev »

phasma писал(а):
24.10.2007 19:02
вас почитаешь, задумаешься, действительно ли я быдлокодер )))

Не переживай, тупость других не сделает тебя умнее.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
phasma
Сообщения: 405

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение phasma »

eduard_pustobaev, сам то понял что сказал ?) любой человек отличается умственными способностями относительно кого-то ... следовательно чем тупее другие, тем умнее я ... иль yбунтовцы так не считают ?)
NB: Dell XPS 1330 T5250|DDR2 4GB|NV 8400|250 GB
Old NB: Asus A6km AMD Turion MT-32|DDR 2 GB|NV GFGO 7300|60 Gb
OS: Ubuntu 9.10, FreeBSD 8.0
Спасибо сказали:
Лис
Сообщения: 1639
ОС: Zenwalk

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение Лис »

чем тупее другие, тем умнее я ... иль yбунтовцы так не считают ?)

С такими принципами Вы далеко не уйдете. Уровень знаний - понятие абсолютное, а не относительное.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение sash-kan »

drBatty писал(а):
23.10.2007 17:50
Конечно Си удобнее.
да да да. а бульдозер, конечно, удобнее экскаватора. и даже по алфавиту раньше идет.

перлы, достойные башорга, действительно, так и сыплются.

Uncle_Theodore писал(а):
23.10.2007 17:29
Нет, ПРОЛОГ -- декларативный язы, а ЛИСП -- функциональный. Разные парадигмы.
гхм. гхм. afaik, все-таки принято глобально делить языки на декларативные и императивные.
приблизительно, конечно. есть и нюансы.
так что, и пролог и лисп — вполне себе оба декларативные.
есть и более мелкое (опять-таки, приблизительное) деление декларативных языков: функциональные (лисп — один из них) и языки логического программирования (например, пролог).

нда. начинали за здравие, а кончили за упокой. это я про phasma
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение drBatty »

Portnov писал(а):
24.10.2007 18:43
"float x = 0" вполне может быть просто опечаткой. И найти ее потом - целая проблема.

в данном случае, это разве ошибка? Я не пойму, ну инициализировал я х нулём, ну и что? Тип int разве нельзя абсолютно безопасно переводить в float(да ещё и такое малое число)? Может вы имели ввиду что-то вроде:

Код: Выделить всё

char *s = 0;

такая строка почти везде будет работать правильно, но на эту ошибку почти любой компилятор укажет предупреждением(или ошибкой).
Кстати и что-то вроде float x = 7.3/3; ошибкой не будет, перед выполнением деления констант компилятор обязан всё превисти в один тип(если не указано какой - в самый длинный), а уж потом делить.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение drBatty »

sash-kan писал(а):
27.10.2007 03:05
drBatty писал(а):
23.10.2007 17:50
Конечно Си удобнее.
да да да. а бульдозер, конечно, удобнее экскаватора. и даже по алфавиту раньше идет.
перлы, достойные башорга, действительно, так и сыплются.

да конечно, ваши высказывания вообще в рассылки с анекдотами постить(между "про блондинко" и "про чукчу"). И оправдать это алфавитом. Я ведь ясно писал: мне Си удобней лиспа. Потму-что задачи у меня такие. А надо будет канаву прорыть - использую экскаватор, потому что удобнее для рытья канав.

ЗЫ И взял sash-kan бульдозер, и стал им рыть канавы. И получались канавы большие и смешные :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Если переменным одного типа можно присваивать значения другого типа,

Сообщение sash-kan »

drBatty писал(а):
27.10.2007 14:54
Я ведь ясно писал: мне Си удобней лиспа.
извините, если обидел. как-то из Вашего поста не следовало, что Си удобнее именно для Вас. наверно, где-то между строк затерялось ):
но теперь все понятно. после Вашего уточнения все точки над i расставлены.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: