LINUX.ORG.RU
ФорумTalks

Почему у питона батарейки севшие?

 ,


2

2

ну вот, подфартила шабашка - надо накропать на джанге унутренний сервис.

Ну ладно там все динамическое - обмазался тайпхинтами, стало чуть похоже на божественную яву. Но ёмаё чуть шаг в лево - надо все делать руками.

- объект в json не засовывается (только словарь)

- тип надо указывать, в комментарии! # type: RageString

- модель джанги хитронаговнякана так что ide пишет, мол Model.objects - в первый раз вижу

- снять дамп потоков? фиг вам!

- прервать поток если приложение тушат? лови сигналы и катай солнце вручную!

И эти люди говорят про батарейки!

Deleted

Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Zenom

Потому что откладывает проверку типов и выявление ошибок с ними связанных на неопределённый срок, весьма мало давая взамен. Вся та «гибкость», о которой говорят сторонники динамической типизации в подавляющем большинстве случаев выражается и в нормальных статических системах типов. А если и не выражается, то практически всегда есть возможность некоторой эмуляции динамической типизации. Но и эта возможность нужна очень редко, а оправданно нужна ещё реже. Весьма небольшой трейд-офф за статические гарантии безопасности типов.

Приведение типов можно делать и при статической типизации. Типа integer -< rational.

А вещи типа Nil -> 0 - это баловство, лень и насилие над тем, кто будет читать код.

lochness
()
Ответ на: комментарий от Zenom

Язык дженериков в Java тоже Тьюринг-полный. Сюрприз!

Очешуительный сюрприз, расскажи поподробнее.

Deleted
()

Из динамических языков самый нормальный для веба это Ruby. Бидон всегда был говном. Джангу и прочий бред придумали для тех, кто умеет только в бидон и не осилил нормальные языки.

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

Из динамических языков самый нормальный для веба это Ruby.

Под это говно до сих пор нет нормальной очереди задач. Resque, разве что, с оговорками.

И массовость всё портит.

lochness
()
Ответ на: комментарий от Deleted

Да, а ничего что разговор был про сериализацию объектов?

Так вот, если говорить в контексте того о чем речь была, а не о том о чем хочется, то методы - часть объектов безусловно. Речь не про точечки, но и не про ораганизацию работы памяти в CPython. Да, и CPython никто вообще ничего не говорил.

BigAlex ★★★
()
Ответ на: комментарий от BigAlex

методы - часть объектов безусловно.

Бгг, ты необучаем. Смотри

class Test {
    fun do() {}
    var field
}

var one = Test(field=1)
var two = Test(field=2)

Чем отличается one от two? значением поля. Метод у них один. Если ты сериализуешь-> десериализуешь только поля объекта этого типа, то метод всегда будет тотже самый. Именно потому что он принадлежит типу и не меняется от инстанса к инстансу.

Поэтому желание сериализовать методы - показатель профнепригодности.

Deleted
()
Ответ на: комментарий от Zenom

Типизацией в Java невозможно пользоваться без боли в хоть сколько-то сложных случяях, ну!

А что не так с типизацией в джва?

Siado ★★★★★
()
Ответ на: комментарий от Deleted

есть империативные языки с хвостовой рекурсией

дело не в языке, дело в мат.задаче «развернуть». можем начать с не хвостовой.

Rastafarra ★★★★
()
Ответ на: комментарий от Zenom

Потому что откладывает проверку типов и выявление ошибок с ними связанных на неопределённый срок

Еще раз. Во всех типизированных языках придумывают типы где могут быть ЛЮБЫЕ типы. А проверять типы можно и в динамических языках.

dmxrand
()
Ответ на: комментарий от KSCHNK

Слава богу я уже три года на нем не пишу, хотя снится иногда в кошмарах.

dmxrand
()
Ответ на: комментарий от dmxrand

Но для чего вообще замыкания?

Так и запишем - dmxrand запрещает любое использование замыканий, кроме каррирования.

Xellos ★★★★★
()
Ответ на: комментарий от dmxrand

В 90% программ которые я видел на С она есть.

О да, C — это просто эталон мощной системы типов! (табличка «сарказм»)

Zenom ★★★
()
Ответ на: комментарий от Siado

А что не так с типизацией в джва?

Если сравнить со Scala, которая на данный момент — мой основной рабочий инструмент, и которую я могу привести как один из примеров выразительной системы типов, то вот чего нет в Java из того, что я реально использую в работе:

  • Трейты. Интерфейсы в Java — не то, даже с дефолтными методами
  • Self type annotation
  • Экзистенциональные типы. В Java есть только wildcard
  • Type classes
  • Ко-/контр-/инвариантность в декларации дженериков

А если тупо сравнить список фич, то найдутся ещё пункты, которые мне пока использовать не приходилось, но которые имеют реальное применение в других проектах. Структурные типы, higher-kind types, path-dependent types и многое другое.

Zenom ★★★
()
Ответ на: комментарий от dmxrand

Ииии?

И где здесь разные типы у переменных?

Zenom ★★★
()
Ответ на: комментарий от dmxrand

Для этого есть статические анализаторы и функциональные тесты.

Никакие статические анализаторы не могут решить halting problem, а тесты могут служить лишь доказательством наличия ошибки, но не гарантируют отсутствия ошибок.

Zenom ★★★
()
Ответ на: комментарий от Deleted

оно вообщето до ужоса кривое и умеет только джанговые кверисеты

Поверю на слово. Короче, страдайте :)

true_admin ★★★★★
()
Ответ на: комментарий от dmxrand

Электрическая лампочка горит от 120 кирпичей, потому что структура у нее, так сказать, похожа у нее на кирпич.

Xellos ★★★★★
()
Ответ на: комментарий от RazrFalcon

За 7 лет не осилили транслитерацию названия выучить?

Один товарищ говорил: «раби для динамических петушков».

lochness
()
Ответ на: комментарий от dmxrand

Ииии?

Ты с дуба рухнул? Когда это в Си была строгая типизация? Там легко можно сделать так: double a = 1.0; int b = a; и это считается корректным. В Си++ то же. Это не языки со строгой типизацией.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Так. Давайте уже разберемся. В Python динамическая типизация и товарищи орут, что это плохо. В С статическая типизация и опять плохо? Тогда почему при обсуждении С никто не вопит как резанный? Собственно подсказки типов в Python от С ничем не отличаются. Давайте тогда уже примеры.

dmxrand
()
Ответ на: комментарий от dmxrand

В С статическая типизация и опять плохо?

Статическая и строгая это разные вещи.

Давайте тогда уже примеры.

Ну, например Standard ML. Я в них не разбираюсь, но кажется, его система типов считается строгой. Там нельзя, например, два float числа проверить на строгое равенство.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Я знаю разницу между строгой и не строгой. Но вопли про типизацию обычно в тредах о Python. Воплей в тредах о C# я не помню. Так в чем тогда дело? Все пишут в Standart ML?

dmxrand
()
Ответ на: комментарий от dmxrand

Все пишут в Standart ML?

Твой способ делать логические заключения просто поражает.

i-rinat ★★★★★
()
Ответ на: комментарий от dmxrand

Я знаю разницу между строгой и не строгой

А создаётся впечатление, что нет. И ещё создаётся впечатление, что не знаешь разницы между строгостью типизации (строгая/не строгая) и временем проверки типов (статическая/динамическая).

Zenom ★★★
()
Ответ на: комментарий от i-rinat

его система типов считается строгой. Там нельзя, например, два float числа проверить на строгое равенство.

По-моему, это совершенно ничего не говорит о строгости типизации. У них просто такая операция не определена т.к. пытаются заставить программистов сравнивать через fabs(a, b) < epsilon.

Строгая типизация это когда нельзя, например, вместо float подсунуть int. Или если int32 не может быть использован в контексте int64. Во всяком случае, я себе это так представляю.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

нельзя, например, вместо float подсунуть int.

Кажется, так там тоже нельзя. Нужно явно конвертировать. Давно уже SML не запускал.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от Zenom

А создаётся впечатление, что нет.

JS не строгая []+{}

Python строгая []+{} -> Error

Динамическая я подразумеваю как утиная. В C# я не могу передать в функцию не тот класс даже если он один в один. А в Python без подсказок я вообще могу в функцию передать хоть число хоть List так устроит?

dmxrand
()
Ответ на: комментарий от Deleted

functools.partial или def inner_func(y=y):

Но да, в целом это известный квирк.

aedeph_ ★★
()
Ответ на: комментарий от dmxrand

Динамическая я подразумеваю как утиная

Лично я это воспринимаю по-другому.

«Утиная» для меня значит что всё работает на интерфейсах. Если объект «имплементирует» нужный интерфейс то он «подходит».

«Динамическая» для меня значит ЯП никак не проверяет типы и сыпет эксепшенами в рантайме.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

«Динамическая» для меня значит ЯП никак не проверяет типы и сыпет эксепшенами в рантайме.

Цитирую

А в Python без подсказок я вообще могу в функцию передать хоть число хоть List так устроит?

Но да утиная это похоже на интерфейсы за одной лишь разницей если интерфейс требует поля А Б Ц, а в функции используется только А, то я могу передать объект только с А.

dmxrand
()
Ответ на: комментарий от true_admin

до этого твоего поста, только я три раза упомянул nonlocal, но ты гордо показал что все бесполезно - никто не читает

Deleted
()
Ответ на: комментарий от dmxrand

Динамическая я подразумеваю как утиная

Нет

так устроит?

А дело вовсе не в том, что меня устроит. Я, хвала богам, не преподаватель и экзаменов ни у кого не принимаю.

Zenom ★★★
()
Ответ на: комментарий от Deleted

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

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.