Здравствуйте, B0FEE664, Вы писали:
...
Sorry, если я (вполне преднамеренно), допустил некоторый сарказм в моём предыдущем посте!
Насчёт различных методов отладки, в т.ч. и TDD методики — я в курсе.
Для чего-то она подходит, для чего-то — нет.
ИМХО — здесь даже не важно, это обычный C или это C++, всё-равно всё зависит от задачи.
Часто удобно сочетать различные методы отладки:
1) Debug-ер
2) Выдача сообщений в LOG-файл
3) Выдача отладочных ASSERT-ов
4) Прогон набора UNIT-тестов с различными условиями (что особо рекомендуют апологеты TDD)
5) Визуальный анализ (для интерактивных приложений с GUI)
...
Возможны ещё какие-либо, не упомянутые выше.
Я расставил методы в порядке убывания (IMHO) частоты применения.
То есть — наиболее часто (лично я) прибегаю к обычному отладчику
Мой первоначальный посыл был в том,
что правильный стиль написания кода — это отступы,
это каждый "оператор" — в отдельной строке.
В общем-то: классика
P.S. По теме: Python — язык хороший и полезный.
Прививает красивый стиль написания кода.
И несмотря на то, что я в основном пишу на C++
(на Python занимался относительно мало), я причисляю себя к лагерю сторонников Python.
Здравствуйте, AlexGin, Вы писали:
AG>Мой первоначальный посыл был в том, AG>что правильный стиль написания кода — это отступы, AG>это каждый "оператор" — в отдельной строке.
Во всем нужна мера, в соблюдении стиля. Вариант "if (a) { smth(); return; }" во всех отношениях лучше Вашего, если религиозные предпочтения почему-то иногда называемые "принципами" или "обязательными правилами" не припутывать.
P.S. Совершенно в сторону, но в некоторой степени на эту же тему. Немало обсуждений о том, какая беда этот ООП-стиль, так вот там тоже нагромоздили множество "принципов", соблюдение которых поклонники в какой-то момент объявили обязательным, а потом почему-то сокрушаются, что за монстра мы родили.
P.P.S. Ваш вариант написания того условия и пары операторов немоден, нужно же было фигурную скобку на первой строке оставить, по-фиг, что безобразно и уродливо, но все пацаны так пишут, а кое-где и в требования к синтаксису языка прошили
Здравствуйте, okon, Вы писали:
O>Взяли бы для кросс-платформенности любой активный и живой язык C++/C#/Java например ? Зачем плодить сущности которые делают тоже самое ?
Питон это заменитель бейсика. Бейсик как то подпротух, но свято место пусто не бывает.
Здравствуйте, okon, Вы писали:
O>Почему не дали ему спокойно умереть ?
Не дали умереть? А он умирал? Что за бредовые фантазии? Питон всю свою жизнь развивался более менее равномерно, заняв значимые позиции в ряде ниш и даже став однозначным лидером в ещё нескольких. Возможно кому-то кажется что о Питоне активно заговорили только в последнее время, но это только так кажется, людям далёким от темы. В основном в связи с тем, что одна из ниш (ML), в которых Питон царил (задолго до этого!), в последнее время вырвалась на передний край развития индустрии.
O>Взяли бы для кросс-платформенности любой активный и живой язык C++/C#/Java например ? Зачем плодить сущности которые делают тоже самое ?
Все перечисленные языки намного менее продуктивны, чем Питон для проектов небольшого размера (сюда естественно включаются и произвольные админские/сборочные скрипты и научные/инженерные расчёты в Jupyter и бэкенд веб-страничек и ещё много чего подобного). Разве что C++ после выхода стандарта C++20 (в котором в язык добавятся Ranges) станет сравнимым по набору удобств, но всё равно при этом останется намного более многословным, не говоря уже сложности инфраструктуры.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Mr.Delphist, Вы писали:
MD>>Был тот же самый TCL — кроссплафторменный, дефолтный для многих дистрибутивов Linux. Почему не он?
НС>Имхо тикль слишком уж тяготеет к командной строке.
Не более чем Питон. И был Tcl/Tk — кроссплатформенный UI-фреймворк. Ещё раз повторюсь — сравнивать надо не с сегодняшним днём 2019, а с началом двухтыщных. Для того времени TCL был очень бодренький кросс-платформенный скриптовый язык. К сожалению, за ним не было каких-то Больших Папочек, разве что ActiveState, но для них он был не более чем ещё одним из продуктов (ActiveTcl, наравне с ActivePerl и т.п.). На роль Большого Папы это не тянуло.
Здравствуйте, novitk, Вы писали:
N>Здравствуйте, Mr.Delphist, Вы писали:
MD>>TCL — аналогчино. N>TCL? Он на порядок хуже по всему: библиотекам, средствам, поддержке, рынку труда. Единственный возможный конкурент питону — js.
Сегодня — да. В начале двухтысячных — нет. Тогда наиболее мощными скриптерами были TCL и Lua (более того, у нас в одном проекте использовались оба: для внутреннего скриптинга — Lua, а для внешнего управления приложением — TCL, исторически так сложилось, хе-хе).
Здравствуйте, Mr.Delphist, Вы писали:
НС>>Имхо тикль слишком уж тяготеет к командной строке. MD>Не более чем Питон.
ИМХО существенно больше.
Хотя и Питон тоже, не лишен наследия. Отсюда и синтаксис, а вовсе не из за того что некоторые любители Питона понапридумывали.
MD> И был Tcl/Tk — кроссплатформенный UI-фреймворк. Ещё раз повторюсь — сравнивать надо не с сегодняшним днём 2019, а с началом двухтыщных.
В начале двухтыщных не было Django и AI, и оба, и тикль и Питон, пользовались ограниченной популярностью.
Здравствуйте, Mr.Delphist, Вы писали:
N>>TCL? Он на порядок хуже по всему: библиотекам, средствам, поддержке, рынку труда. Единственный возможный конкурент питону — js. MD>Сегодня — да. В начале двухтысячных — нет. Тогда наиболее мощными скриптерами были TCL и Lua (более того, у нас в одном проекте использовались оба: для внутреннего скриптинга — Lua, а для внешнего управления приложением — TCL, исторически так сложилось, хе-хе).
Что там у указанных языков с наличием срезов и генераторов? Без этого в Data Science (и как его подмножество ML, хотя сейчас моднее уже говорить AI) делать нечего...
Так же важна бесшовная интеграция с C/C++, т.к. без этого Питон не стал бы лидером в научных/инженерных областях — там с вычислениями могут справиться только эти языки, но гораздо удобнее управлять процессом из Питона, на более высоком уровне. Ну и кстати опять же без наличия в языке такого инструмента как срезы (которые по сути абстрагируют собой пару итераторов C++, которые опять же в большинстве подобных задач сводятся к паре голых указателей на данные в массиве) это вряд ли возможно реализовать эффективно.
Для всяческих админских скриптов по идее разницы нет между всеми этими языками, главное чтобы синтаксис не цеплялся (как в Perl). А вот для инструментов посложнее (типа систем сборки (waf/scons), контроля версий (Mercurial), удалённой автоматизации (fab или вообще какой-нибудь ansible) и т.п. удобностей) становятся уже актуальны такие инструменты языка как декораторы — некое подобие метапрограммирования.
Для веб'а (где Питоне тоже популярен) актуальна скорее удобная модульность (включая гибкое ООП), наличие фреймворков и библиотек (доступных для автоматической установки из пакетного менеджера в одну строчку).
Это первое что пришло в голову, вспоминая ниши, в которых Питон популярен, и сравнивая с указанными языками...
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Mr.Delphist, Вы писали:
N>>>TCL? Он на порядок хуже по всему: библиотекам, средствам, поддержке, рынку труда. Единственный возможный конкурент питону — js. MD>>Сегодня — да. В начале двухтысячных — нет. Тогда наиболее мощными скриптерами были TCL и Lua (более того, у нас в одном проекте использовались оба: для внутреннего скриптинга — Lua, а для внешнего управления приложением — TCL, исторически так сложилось, хе-хе).
_>Что там у указанных языков с наличием срезов и генераторов? Без этого в Data Science (и как его подмножество ML, хотя сейчас моднее уже говорить AI) делать нечего...
Срезы — в смысле слайсинг? Тоже есть, пусть и не в виде нативного синтаксиса (хотя для скриптовых языков говорить о синтаксисе можно довольно условно, т.к. он расширяется подключаемыми пакетами, как, например, поддержка ООП для TCL).
_>Так же важна бесшовная интеграция с C/C++, т.к. без этого Питон не стал бы лидером в научных/инженерных областях
В общем, инструментально эти языки никак не назвать отстающими по сравнению с Python. Им всего лишь недоставало какой-то жалкой сотни ежегодных конференций по всему миру
Здравствуйте, okon, Вы писали:
O>Это опять же реализация тулзы , она не имеет отношения к синтаксису. Что мешает a = a + 2 выполнить как в питоновском синтаксисе так и в шарповом.
Не-не-не дэвид блейн. Так у нас ничего не получится. Скриптовые языки очень сильно отличаются по семантике от традиционных.
Например, в синтаксисе C# 'a = a + 2' выполнить невозможно, т.к. непонятно, что такое это 'a'.
Вот если, к примеру, написать что-то типа 'var a = 0;', то уже после этого можно было бы писать 'a = a + 2'.
Но опять же — это гипотетически; на практике мы не можем просто взять и написать var a = 0.
В "шарповом синтаксисе" такое может встречаться только лишь внутри какого-то метода; а метод должен жить в каком-то классе.
Ок, мы можем делать вид, что в нашей консольке текст является частью какого-то main(). Но там появляется ещё масса проблем, т.к. шарп не проектировался для написания в стиле "всё внутри main()".
Можно посмотреть, куда привели попытки написать скриптовый шелл на дотнете — это powershell.
Он, мягко говоря, очень другой, чем C#. И по синтаксису, и по семантике. И тормозит он тоже адски — я поверить не мог, что на современной машине задачки типа "подсчитать частоты слов в двухмегабайтном документе" могут занимать наблюдаемое невооружённым глазом время. То есть возвращаемся в щасливые времена моего детства, когда программа рисовала окружность и ты это видел.
И адски противоестественный, как и всё скриптовое. Писать на нём для повторного использования — боль.
Хотя по сравнению с питоном — норм, всё надёжненько.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.