LINUX.ORG.RU

Как кому удается быстро писать на Питоне ?

 ,


1

4

Обычная программка по парсингу чего-то и пропихивания этого чего-то, в зависимости от формата, в API, которое это поедает.

Основное время занимает отладка исключений AttributeError или другого, которое возникает при вызове несуществующего метода класса или неправильного списка параметров функции или метода.

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

Так вот, спрашивается, какую в таком случае нишу занимает питон ? Мне нужно написать тесты на каждый метод и use case только потому, что питон не чекает синтаксис ?

анонiмус, ты упоролся и открыл в себе новую личность?

отладка исключений AttributeError

Кривые руки они такие. Но они ничто по сравнению с кривой головой.

anonymous
()

Хотя нет, толсто

zolden ★★★★★
()

Основное время занимает отладка исключений AttributeError или другого, которое возникает при вызове несуществующего метода класса или неправильного списка параметров функции или метода.

Дело пойдёт значительно быстрее, если вызывать только существующие методы классов.

proud_anon ★★★★★
()

Еще один прозрел насчет динамических языков. Они нужны, чтобы тяп-ляп — и в продакшен. И каждый релиз есть, чем заняться, — багфиксами.

iVS ★★★★★
()

Пиши на haskell. Там если код скомпилируется - уже почти означает, что всё делает правильно. А если не компилируется - значит, напутал с типами. Исключений во время выполнения - минимум - большая часть ошибок на этапе компиляции проверяется.

BattleCoder ★★★★★
()

Слишком жирно, прости

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

Мой редактор не умеет подсказывать методы и атрибуты, потому что он не знает тип переданного объекта ( знает, если он создан только в этой же области видимости )

Непонятно, как делать работу быстрее, может, какой-то статический анализатор имеется хороший ?

Я не тролль, я злобный юзер поневоле.

Мне в столб не уперлись возможности вертеть классы на столбе в рантайме, добавлять атрибуты или методы, все что нужно - быстро написать в С++ - стиле программу ( не буду говорить тут «ООП», чтобы не разжигать )

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

быстро написать в С++ - стиле программу

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

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

Там если код скомпилируется - уже почти означает, что всё делает правильно

Хорош тупорылить, это означает лишь то, что ошибок типов нет. Для офисного планктона самое оно, да, но для проектирования не годится, так как это превращает язык в неуклюжее говно.

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

Нет, как раз будет, это мне и надо.

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

anymouse
() автор топика
Ответ на: комментарий от vurdalak

В C++ компилятор перестанет давать тебе по пальцам за кривой код?

Конечно. Он же переваривает приведение любых указателей к любым :)

KRoN73 ★★★★★
()

Вроде type hinting добавили (или собираются) в 3.5

Если этого нет, то значит должно чем-то другим компенсироваться, как минимум в docstring

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

Мой редактор не умеет подсказывать методы и атрибуты, потому что он не знает тип переданного объекта

Ну ты-то знаешь, какие методы должны быть у передаваемых в твою функцию объектов, нет? Приведи пример такой функции, где у тебя вылезают AttributeError.

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

Да, наверное, должен знать, но неохота помнить. Нахрена мне это помнить, если это должен помнить code completion или компилятор, на худой конец.

Я конкретно сейчас делаю такой рефактор - был класс для парсинга одного формата, теперь нужно сделать 3, я разумеется не хочу вставлять кучу условий, парсеры будут отдельными. В процессе растаскивания кода можно сделать много ошибок. В компилируемом языке, компилятор дает по рукам до запуска программы, а этот хренов питон ничего не проверяет. Тогда, нахрен он нужен, этот питон ?

anymouse
() автор топика

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

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

Мне нужно написать тесты на каждый метод и use case только потому, что питон не чекает синтаксис ?

Получается, что ты настолько невнимательный, что не можешь делать мало текстуальных ошибок, но достаточно внимательный, чтобы не делать таких же простых алгоритмических ошибок?

Конечно, так никогда не бывает - если человек невнимательный, то он такой примерно всюду. Потому полноценные функциональные тесты, затрагивающие весь код, как бы обязательны (руками разово сделанные или в виде кода - не суть важно). В случае с динамическими ЯП это доставляет некоотрые неудобства, а в плюсах с такой халатностью можешь заработать гораздо больше проблем чем ~AttributeError.

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

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

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

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

Ребятки, вы либо никогда не занимались рефакторингом, либо не пишете ничего сложнее простыни из input'ов и output'ов. Любые преобразования над структурой самого кода влекут десятки ошибок и несоответствий, и увидеть их в сотню раз сложнее, потому что при написании кода контекст в голове есть, а при рефакторинге он сильно размыт. На холодную вообще рефакторить не стоит, даже с нормальным тайпчекером.

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

Кресты ругаются сразу, а питон нужно еще заставить.

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

Ребятки, вы либо никогда не занимались рефакторингом

Хамить не надо. Тебе тут тоже могут пояснить, что рефакторил ты только школьные поделки на 200 строк.

anatoly
()

Основное время занимает отладка исключений AttributeError

PyDev это сильно облегчает.

Не было минуты, чтобы я не назвал себя идиотом за свой выбор языка - я мог бы написать на С++ или Perl

И кто тебе мешал это сделать, безвольная тряпка?

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

Ребятки, вы либо никогда не занимались рефакторингом, либо не пишете ничего сложнее простыни из input'ов и output'ов.

Прямо зришь в корень, как догадался то? Только недавно законичили ВУЗы и работаем стажёрами хер знает где.

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

Тебе тут тоже могут пояснить, что рефакторил ты только школьные поделки на 200 строк.

Поделись рецептом успешного рефакторинга хотя бы 2к строк на Python.

tailgunner ★★★★★
()

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

Ещё один всё понял.

no-such-file ★★★★★
()
Ответ на: комментарий от arturpub

Ребятки, вы либо никогда не занимались рефакторингом,

За прошлую неделю 3k измененных строк на питончике. Несколько глобальных рефакторингов.

либо не пишете ничего сложнее простыни из input'ов и output'ов.

Касались денег и работы с платежными агентами.

Да, без тестов — я сраный джедай и могу делать быстро и аккуратно.

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

Тогда, нахрен он нужен, этот питон ?

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

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

За прошлую неделю 3k измененных строк на питончике. Несколько глобальных рефакторингов.

Т.е., 3000/5 = 600 строк в день или 600/8 = 75 строк в час. Рассказывай это юным девственницам.

Да, без тестов — я сраный джедай и могу делать быстро и аккуратно.

А не, юные девственницы засмеют.

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

Не поделюсь, т.к. нет такого опыта.

Могу лишь предположить, что рецепт всегда один: изначально писать код нормально, понимая, что его придётся рефакторить.

Гибкость python'а позволяет точно так же и подойти к написанию тестов.

А то, что отрефакторенный код на С++ скомпилировался, может создать ложное чувство, что программа работает правильно.

Если конечно рефакторинг не заключался только в переименовании переменных.

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

Если конечно рефакторинг не заключался только в переименовании переменных.

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

mashina ★★★★★
()

Вон из профессии.

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

Получается, что ты настолько невнимательный, что не можешь делать мало текстуальных ошибок, но достаточно внимательный, чтобы не делать таких же простых алгоритмических ошибок?

Пожалуй, это верно. На плюсах, конечно, могу писать. Я здорово привык к статической проверке.

anymouse
() автор топика
Ответ на: комментарий от BattleCoder

Что можно написать только на динамическом языке, в чем именно будет состоять мой прогресс ?

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

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

Пожалуй, это верно. <...> Я здорово привык к статической проверке.

Не «пожалуй». Получается, текстуальные и логические ошибки делаешь везде, но почему-то считаешь что тесты тебе не нужны.

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

И кто тебе мешал это сделать, безвольная тряпка?

Именно, необходимость рефакторинга. Ну, я же оптимизирую свое время, думаю, что проще, переписать заново или дописать. Ошибся. Думаю, почему Питон учат даже в неплохих вузах.Бытовое понимание типа ( лампочку можно включить, но не съесть, а яблоко - наоборот ) интуитивно ближе динамически неизменяемым классам, то есть, тем, которые можно проверить при компиляции. Кому это фуфло нужно ?

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

Ошибки типов — весьма небольшой класс ошибок, возникающих при рефакторинге. Рефакторинг без автоматических тестов — путь боли и страданий.

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

Ошибки типов — весьма небольшой класс ошибок, возникающих при рефакторинге.

Но очень, очень полезный.

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

И, что пытаешься доказать ?

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

Мне нужно быстро написать код, протестировать только отличия от старой версии, выполнить, проверить результат.

anymouse
() автор топика
Ответ на: комментарий от tailgunner

Вот именно, только тем, кто посчитал и решил, что будет выгода. А если посчитал и не уверен, то лучше ничего на нем не делать. Это как с awk - написал маленький парсер, все работало, потом понадобилось прикрутить еще функционал, потом еще, потом стало ясно что скрипт проще выбросить и переписать на perl.

Меня сцуко беспокоит эта популярность питона, нужно его запретить нах вместе с Си и Бейсиком.

anymouse
() автор топика
Ответ на: комментарий от PolarFox

Как я могу писать «серьезное» приложение на питоне, если понимаю, что оно считает в 20 раз медленнее ? Конечно, я пишу одно-двух-трех-разовое поделие, рассчитывая, что разработаю его быстрее, чем на другом языке. Однако, то ли из-за особенностей разработчика, или динамических типов, получаю хрен без масла.

anymouse
() автор топика
Ответ на: комментарий от iVS

Т.е., 3000/5 = 600 строк в день или 600/8 = 75 строк в час.

Измененных строк, не новых. Хотя иногда получается и 400 строк выдать за смену, правда с тестами. Не вижу ничего удивительного.

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

На питоне пишут не что-то, что считает, а что-то, что склеивает или что-то, что бóльшую часть времени проводит в ожидании IO.

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