The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Dropbox прекращает разработку Pyston. Опубликован финальный ..."
Отправлено Аноним, 10-Фев-17 01:07 
>Или ты имел в виду «в контексте оператора»? Тогда причем тут «выбор основы»?

В контексте оператора естевенно. Ведь, если подумать, кроме операторов ничего нет. Присвоить значение -- используем оператор присваивания. Сравнение -- используем оператор сравнения. Обратиться к n-элементу массива -- используем оператор доступа. И тут есть другой ньюанс смешивание операторов в одной конструкции. Что будет тут тебе известно:

$array[1] = <STDIN>;

А тут, ты знаешь, что будет? Давай без помощи use warnings; Т.к. в других ситуациях он тебя и не спасет:

@array[1] = <STDIN>;

Вот, подумай почему "в контексте опрератора" присваивания получаем разные результаты? Может потому что нет никаких "контекстов операторов"?

А есть контексты списка, скаляра, никакого значения? Увы, ты пропустил момент, что число в перле это тоже адрес чего-либо, а строка она и в Африке строка. Пример 0 == "0 but true" показывает как Perl хитрописан, ведь если ты не прочитаешь исходники, ты не поймешь, почему тут все валидно:

#!/usr/bin/perl

use strict;
use warnings;

if (0 == "0 but true") {
  print "but true\n";
}

Оцениваем: http://ideone.com/iViUX3

А тут, все иначе:

#!/usr/bin/perl

use strict;
use warnings;

if (0 == "устал повотрять 100500 раз, что надо читать копипасты") {
  print "but true\n";
}

Оцениваем (увы, ideone имеет свою патченную версию перл, где варнинга нет, а должен): http://ideone.com/Si7wM2

>О чем это должно говорить? О слабой типизации питона? Или просто другом подходе?

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

Кстати, зачем наезжать на меня, когда очевидно, что в одних и тех же конструкция ЯП ведут себя по-разному (что логично):

shell> # перл любит выплевывать пустую строку в случае "False", делаем это за него
shell> perl -le 'print ((1 == "0") ? "true" : "false");'
false
shell> perl -le 'print ((1 == "") ? "true" : "false");'
false
shell> perl -le 'print ((0 == "0") ? "true" : "false");'
true

>Или тебе нужны рантайм сообщения?

Ох. Мне нужны были сообщения какие выплевывает перл:

Argument "abc" isn't numeric in numeric eq (==) at abc.pl line 6.

В райнтайме, а не в момент компиляции, ибо для Perl ошибка выше не фатальная: типы он приведет кое-как и код, кое-как, отработает. Ну, ты привел доказательства, меня они устраивают. Ок, спасибо.

>оператор внезапно зависит от контекста. Это теперь неявное преобразование?

Контекста чего? Я в Python не бум-бум, но давай читать вместе:

ValueError: invalid literal for int() with base 10: '3d'

Давай смотреть, что будет и в перле одновременно:

shell> perl -wle 'print int("3a")'
Argument "3a" isn't numeric in int at -e line 1.
3

Ну, как видишь, работает все примерно одинаково. Дальше что? Я, как не про по питону, надеялся увидеть сильную типизацию, ну, чтобы на этапе компиляции все валилось, а че-то примеры походу неправильно выбраны, поэтому спор заходит в тупик.

В итоге, википедия дает все ответы:

Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that the given object is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.

https://en.wikipedia.org/wiki/Python_%28programming_lan...

Чтение https://en.wikipedia.org/wiki/Duck_typing дает все ответы. Да, я зафейлился, не вникся в детали ЯП и оказался не прав: мои надежды насчет строгой типизации не оправдались. И это хорошо. Это еще раз подтвердило правильность моих мыслей, что профессиональный программист ДОСКАНАЛЬНО изучает ЯП, который он хочет критиковать.

Возможно, ты это знал и подловил меня. А, возможно, и сам не знал. Ибо спорим мы на этот счет уже трындец много времени.

>using namespace std;

Я в плюсах не бум-бум. Пиши на сишке, пожалуйста :) А лучше вообще закрыть спор или поспорить о чем-то другом.

>int x(double a) {return (int)a;}

Ты же понимаешь, что это платформозависимая конструкция? Почитай про извлечение квадратного корня в Quake III, будет интересно, а может это боян для тебя.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру