#python #debugging #vba #vb6
Вопрос к специалистам Python: почему в этом самом распространённом в мире языке программирования, который рекламируется как лёгкий для изучения, так затруднена отладка? Я начинал кодить в Visual Basic 6 и VBA, и я вам скажу, после среды отладки VB6/VBA работать в Питоне - это примерно как плыть со связанными руками. Вот написал ты скрейпер для сложных неструктурированных данных, запустил его, через два дня в середине сложного процесса он падает на непредусмотренном пустом поле, к примеру.
Дай Бог, ты запустил скрипт с параметрами -m pdb, тогда ты хоть сможешь посмотреть, на каком куске данных упало и какие были переменные. Но внести простую правку в код и продолжить с того же места ты не сможешь. Какого хрена, спрашивается? Мне этого особого места в коде опять 2 дня ждать? Это же интерпретируемый язык, какого черта? В VB6/VBA я мог спокойно в режиме отладки подправить код текущей строки, процедуры, да хоть полмодуля новых написать, поменять порядок выполнения строк, выполнить строки повторно, заменить содержимое памяти как мне надо, и продолжить выполнение уже нового кода по F5, не завершая программы.
Почему Питон такой кастрированный, кто знает? Ладно бы он был хотя бы быстрым, типизированным и компилируемым, но это же самое медленное, что сейчас есть, наверное. Я чего-то не знаю, и все как-то эту проблему решают пайчармом или какими-то другими средами? Ведь сам по себе отладчик pdb может только показать стек, и бессильно завершиться?
P.S. Это удивительный пример того, как софтверная компания (Microsoft) задушила собственного одарённого ребёнка (VB6). VB6 должен был стать тем, чем стал Python, но вместо развития (кросс-платформенности, x64) его похоронили мелкософтовские манагеры.
Вопрос к специалистам Python: почему в этом самом распространённом в мире языке программирования, который рекламируется как лёгкий для изучения, так затруднена отладка? Я начинал кодить в Visual Basic 6 и VBA, и я вам скажу, после среды отладки VB6/VBA работать в Питоне - это примерно как плыть со связанными руками. Вот написал ты скрейпер для сложных неструктурированных данных, запустил его, через два дня в середине сложного процесса он падает на непредусмотренном пустом поле, к примеру.
Дай Бог, ты запустил скрипт с параметрами -m pdb, тогда ты хоть сможешь посмотреть, на каком куске данных упало и какие были переменные. Но внести простую правку в код и продолжить с того же места ты не сможешь. Какого хрена, спрашивается? Мне этого особого места в коде опять 2 дня ждать? Это же интерпретируемый язык, какого черта? В VB6/VBA я мог спокойно в режиме отладки подправить код текущей строки, процедуры, да хоть полмодуля новых написать, поменять порядок выполнения строк, выполнить строки повторно, заменить содержимое памяти как мне надо, и продолжить выполнение уже нового кода по F5, не завершая программы.
Почему Питон такой кастрированный, кто знает? Ладно бы он был хотя бы быстрым, типизированным и компилируемым, но это же самое медленное, что сейчас есть, наверное. Я чего-то не знаю, и все как-то эту проблему решают пайчармом или какими-то другими средами? Ведь сам по себе отладчик pdb может только показать стек, и бессильно завершиться?
P.S. Это удивительный пример того, как софтверная компания (Microsoft) задушила собственного одарённого ребёнка (VB6). VB6 должен был стать тем, чем стал Python, но вместо развития (кросс-платформенности, x64) его похоронили мелкософтовские манагеры.
👍1😢1
#python #debugging #ic #icecream
https://medium.com/pythoneers/debugging-in-python-replace-print-with-ic-and-do-it-like-a-pro-18f330c863cb
from icecream import ic
# Using ic() to debug
ic(add(10, 20))
ic(add(30, 40))
ic| add(10, 20): 30
ic| add(30, 40): 70
ic.disable() # Disables ic()
ic(multiply(3, 3)) # Prints nothing
ic.enable() # Re-enables ic()
ic(multiply(3, 3)) # Output: ic| multiply(3, 3): 9
def log_to_file(text):
with open("debug.log", "a") as f:
f.write(text + "\n")
ic.configureOutput(prefix="DEBUG| ", outputFunction=log_to_file)
ic(multiply(7, 7))
https://medium.com/pythoneers/debugging-in-python-replace-print-with-ic-and-do-it-like-a-pro-18f330c863cb
Medium
Debugging in Python: Replace print() with ic() and Do It Like a Pro
Introduction:
✍1