innuendo
> Smalltalk знаешь?
Нет, но имел опыт работы на Ruby. Говорят, что там объектная модель ближе к смоллтолку, т.к. в нем вызов методов устроен примерно так же. Впрочем, Ruby я знаю не настолько глубоко, как питон.
В Питоне же, если говорить строго, вообще нет ни методов (за исключением магических), ни полей, ни свойств - есть только операция атрибутирования объекта (плюс механизм дескрипторов, с помощью которого unbound метод в классе превращается в bound метод объекта, причем это не часть языка, а stdlib-реализация get-дескриптора для объектов типа "функция"), и магический метод __call__ у bound-метода.
Dmitry_Milk
> Нет, но имел опыт работы на Ruby. Говорят, что там объектная модель ближе к
> смоллтолку
так и есть - кроме деталей
> Ruby я знаю не настолько глубоко, как питон.
вот и расскажи про разные реализации пайтона
0iStalker
> Тем не менее, в питоне не динамическая типизация
Комикс демонстрирует нестрогую типизацию. В питоне она строгая, поэтому там строка с числом не складывается. При этом и в питоне и в JS она динамическая. Удивительно, как некоторые до сих пор путают эти вещи.
https://ru.wikipedia.org/wiki/Сильная_и_слабая_типизация
Python является одним из примеров языка с сильной динамической типизацией
Я кроме обычной реализации питона никакими другими не пользовался, так что про другие реализации не могу ничего сказать. Впрочем, думаю, что объектная модель (то есть, как питоновский текст превращается в последовательность аллокаций объектов и вызовов их magic-методов) должна быть во всех реализациях одна и та же, хотя могу и ошибаться.
Лол, остальные реализации питона никому не нужны, так как подавляющее число либ, собственно ради которых и нужен питон, там тупо не заводятся, даже базовые вроде numpy, matplotlib. Поэтому никто в здравом уме для разработки/ресёча ничего кроме CPython не использует.
Насчет строгой или нестрогой типизации в питоне - приведу пример:
class MyStr(str): def __add__(self, second): return str(self) + str(second) def __radd__(self, first): return first + type(first)(self) s = MyStr("1") print(repr(s + 2)) # '12' print(repr(2 + s)) # 3
Dmitry_Milk
Это перегрузка оператора. В крестах тоже есть, но никто из-за этого не называет их языком со слабой типизацией.
Zefick, в принципе да. Я про то, что в том комиксе вообще непонятно что, там даже не про слабую типизацию. Там просто про то, что в JS для разных типов аргументов в разном порядке получаются результаты разных типов. Пример выше демонстрирует, что в питоне может быть то же самое. Но при этом нельзя сказать, что в питоне слабая типизация - у любого объекта в любой момент времени четко известен его тип.
thevlad
> Лол, остальные реализации питона никому не нужны, так как подавляющее число
> либ, собственно ради которых и нужен питон, там тупо не заводятся, даже базовые
> вроде numpy, matplotlib. Поэтому никто в здравом уме для разработки/ресёча
> ничего кроме CPython не использует.
то есть IronPython PyPy это фуфло ? понятно
Давайте уже все сойдёмся на том что фуфло это С++
Nomad
> Давайте уже все сойдёмся на том что фуфло это С++
Ты что, тогда же окажется, что НульСталкер только на фуфле и может программировать. Чем тогда он будет компенсировать своё эго? Помидорностью позиции на проекте?
Моя позиция такова.
Асимптотически, при увеличении затраченных человеко-лет до бесконечности - программа на С++ окажется второй по быстроте и экономности памяти (после ручной ассемблероты).
Если же бюджет рабочей силы ограничен - то вполне может оказаться, что разработка на других языках пойдёт побыстрее.
В общем, С++ - это high skill ceiling, high skill floor.
В частности, если рассматривать кастомные заказные энтерпрайз-решения, то между двумя альтернативами "заплатить X апельсинов крестовикам" и "заплатить Y апельсинов питонистам и докупить серверов за Z", получается X > Y+Z.
Пожалуй, единственное исключение, где С++ актуальнее всех живых - это геймдев, где вместо Z у нас "теряем W прибыли от людей, которые рефанднули нашу игру из-за тормозов", а X составляет не больше 10% от аналогичных специалистов в энтерпрайзе.
Имбирная Ведьмочка
> Пожалуй, единственное исключение, где С++ актуальнее всех живых
все компиляторы
Nomad
> Давайте уже все сойдёмся на том что фуфло это С++
Вот если бы ты сказал, что C++ это фуфло, возможно были бы возражения. А так ты даже возвысил этот язык программирования, как базовый для изучения.
return [](){};
> все компиляторы
Ты о чем вообще? Какие компиляторы? Все само собой получается. Там в трущобах, за долю малую, рабы все запилят. А мы, как хозяева тру-ойти, будем пожинать и горизонтально масштабироваться.
return [](){};
> все компиляторы
Там не настолько всё однозначно, ведь кресты - это далеко не только убэшки и кекешки, это ещё шаблоны, концепты, стдлиба и ещё куча всякого органического нароста. А убэшки - они же присутствуют и в си.
Так что, если ты о проблемах в LLMV IR и аналогах, тут ещё вопрос - может, это всё тяжёлое наследие бородатой сишки времён К и Р? Или это прекрасное разнообразие способов превратить программу в тыкву - на самом деле "бэкпортнули" в сишку из крестов, как это сделали с атомиками? Ещё большой вопрос, действительно ли роль крестов тут настолько велика, или всё это - это голый си, а кресты только по наследству довольствуются теми же самыми фичами. Ну, или ты знаешь об этом больше меня и для тебя это - не вопрос, тоже возможно.
Кстати, конкретно GHC, вроде как, обходится вообще без крестов - вся нативная часть написана на си, и все стадии - тоже собственные, от исходника до готового бинарника. Ну типа, если подать флажки - то можно поменять линкер на внешний, и можно вместо встроенной стадии STG->bin (под самый конец, когда оптимизация уже прошла, типы стёрты и остались только танцы с регистрами) использовать бэк-энд ллвм. Но это вовсе не обязательно, и даже не является мейнстримом (опять же, для оптимизации у гхк есть своя система, со своими собственными правилами).
Так что, тут тоже утверждение сомнительное.
Так что, скорее не "кресты", а "си", и не "все", а только "многие".
return [](){};
> все компиляторы
Обычно таки компиляторы зрелых языков пишутся на них самих. Да и в принципе если выбирать на чём писать если не на самом языке, то кресты не лучший выбор с любой точки зрения. Вот интерпретаторы это уже другое дело, но даже интерпретатор питона написан почему-то всего-лишь на Си.
Тема в архиве.