Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
В свое время у Страуструпа прочитал, что надо обязательно делать прототип будущей программы, который выполняет роль каркаса без наполнения конкретным функционалом. Подобный прототип: 1. Сразу показывает основные несостыковки проекта (без всяких uml). 2. Позволяет при наполнении подсистем более точно чувствовать их смысл и содержание. 3. Упрощает проектирование всей системы (не сваливаясь в детали задается структура проекта). Появилась идея писать прототип на языке быстрой разработки, и только поняв узкие места производительности применять эффективный С++. Это позволит львиную долю кода написать значительно быстрее (и опять же упростит систему, внеся дополнительное разделение проекта). Но! Нужно чтобы отладка происходила "бесшовно", т.е. я начинаю использовать отладчик Python, а по мере спуска по стеку вызовов автоматически (без лишних движений с моей стороны) стартует отладчик для С++, а потом при поднятии по стеку- опять отладчик Python..... Как такое организовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 11:09 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, что делать то хочешь? для начала нужно выбрать: либо расширяешь питон либо встраиваешь его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:20 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)AlekseySQL, что делать то хочешь? для начала нужно выбрать: либо расширяешь питон либо встраиваешь его Вы не поняли мою мысль: я ничего никуда встраивать не хочу и такими категориями вообще не мыслю. Я хочу разделить проект на кусок занимающий 90% времени выполнения (вычислительное ядро) и вспомогательный код (обертка). Первое пишется на С++, второе- на Python. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:25 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, поясню пишешь модуль для питона встраиваешь интерпретатор питона в своё приложение соответственно, в каждом случае стратегия будет отличаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:31 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, разъясню вторую ситуацию на примере я встраивал в своё приложение VBScript (язык не суть важен, попутно оно и JScript и со своим движком работало) соответственно саму программу я спокойно отлаживал в IDE - тут делать ничего не нужно для скриптого безобразия я делал фактически IDE (редактирование, отладка и пр.). Фактически я мог сесть за любой ПК и отладить скриптовое безобразие, но естественно не нативный код Что бы это бесшовно работало со студией, например, придётся писать плагин для студии, ибо она вообще не знает откуда и что исполняется, ибо скрипт может быть частью документа или вообще храниться на сервере из огромных минусов - отладить скрипт где-то в другой IDE практически невозможно, так как он завязан на специфические объекты, которых нет в самом языке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:45 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)AlekseySQL, поясню пишешь модуль для питона встраиваешь интерпретатор питона в своё приложение соответственно, в каждом случае стратегия будет отличаться Это проект, в котором часть файлов написано на Python, а часть на С++. Возможен такой стек вызовов: С++ Python C++ Python Что здесь во что вложено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 12:47 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLВозможен такой стек вызовов: С++ Python C++ Python Что здесь во что вложено?если вы не можете хотя бы для себя решить, что у вас первым запускаться будет, то наверное вам рано до таких проектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 13:29 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)AlekseySQLВозможен такой стек вызовов: С++ Python C++ Python Что здесь во что вложено?если вы не можете хотя бы для себя решить, что у вас первым запускаться будет, то наверное вам рано до таких проектов Всегда считал, что задача определяет инструменты, а не наоборот. Например, тот набор стека, который я привел может выполнять следующие действия: С++ - интерфейс, написанный на Qt. Python - макрологика приложения (код который в программе выполнится 1 раз). C++ - конкретная вычислительная задача. Python - любые обслуживающие действия для основных вычислений, например, запись промежуточных результатов вычислений в файл. Пока расклад примерно такой, но разумеется из- за специфики конкретной задачи он может измениться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 16:42 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, пока расклад такой: каждый пилит что может, готовое врят ли кто даст запуск скрипта - десяток строчек, нужна отладка - пиши IDE или минимум расширение-отладчика для студии можно конечно закостылить типа CGI, но кажется вам такой вариант не понравится по скорости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 00:24 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, Насчет быстрого прототипирования - идея верная. А обоснование использования отладчика слабое. Есть 2 серъезных кейса когда отладчик нужен. 1) фиксится баг. Но логгирования недостаточно чтобы понять что происходит в prod или QA environment. 2) изучение или исследование чужого кода в динамике. В вашем случае - не первое и не второе. Так что там у вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 08:04 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
maytonAlekseySQL, Насчет быстрого прототипирования - идея верная. А обоснование использования отладчика слабое. Есть 2 серъезных кейса когда отладчик нужен. 1) фиксится баг. Но логгирования недостаточно чтобы понять что происходит в prod или QA environment. 2) изучение или исследование чужого кода в динамике. В вашем случае - не первое и не второе. Так что там у вас? А у нас пишется новый код. Неужели вы можете написать, например, 10 листов А4 совсем не смотря в отладчике что делает программа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 09:15 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLА у нас пишется новый код. Неужели вы можете написать, например, 10 листов А4 совсем не смотря в отладчике что делает программа?Скрипты обычно маленькие пишут, дебаг-вывода как правило хватает. А более сложные скрипты не завязанные на логику программы можно в поноценной IDE Отладить (PyCharm например). Вы просто не представляете "стоимость включения" более-менее полноценной IDE в проект. Это делают когда уже есть солидный профит от проги и всех задолбало отсутствие отладчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 09:25 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLНо! Нужно чтобы отладка происходила "бесшовно", т.е. я начинаю использовать отладчик Python, а по мере спуска по стеку вызовов автоматически (без лишних движений с моей стороны) стартует отладчик для С++, а потом при поднятии по стеку- опять отладчик Python..... Как такое организовать? https://docs.microsoft.com/ru-ru/visualstudio/python/debugging-mixed-mode-c-cpp-python-in-visual-studio ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 10:30 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, Делишь программу на две части - библиотечную (можешь ее на этапе прототипа делать на том же питоне) на С++ и Основной каркас. Библиотечная часть делается со своими юнит-тестами. Всё. Потом из каркаса лазить в отладчик в библиотеку не надо. Если всплывает ошибка - вставляешь исходные в юнит тесты и там отлаживаешь библиотеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 10:43 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmaytonAlekseySQL, Насчет быстрого прототипирования - идея верная. А обоснование использования отладчика слабое. Есть 2 серъезных кейса когда отладчик нужен. 1) фиксится баг. Но логгирования недостаточно чтобы понять что происходит в prod или QA environment. 2) изучение или исследование чужого кода в динамике. В вашем случае - не первое и не второе. Так что там у вас? А у нас пишется новый код. Неужели вы можете написать, например, 10 листов А4 совсем не смотря в отладчике что делает программа? Мне сложно оперировать листами A4. Но та область в которой я работаю предполагает Самый верхний уровень архитектуры приложения Описывать в терминах конфигураций Spring/Camel. Туда незачем ходить отладчиком. Грубо говоря вы проектируете независимые (слабо связные) компоненты на обычном ЯП. Тестируете. А потом уже в терминах dsl вашего интеграционного фреймворка вы склеиваете эти компоненты в приложение. И отладчик тут тоже мало помогает. Даже диалектически. Debugger от ловли багов. А не от архитектур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 11:37 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
maytonЕсть 2 серъезных кейса когда отладчик нужен. 1) фиксится баг. Но логгирования недостаточно чтобы понять что происходит в prodОсобенно хорошо искать отладчиком баги в многопоточном коде. И особенно - на промышленной системе. Пользователь, такой, работает, а разработчик сначала убил основу бага, а потом еще и залип в монитор на пару минут: "И почему это проблема не воспроизводится?.." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:19 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovmaytonЕсть 2 серъезных кейса когда отладчик нужен. 1) фиксится баг. Но логгирования недостаточно чтобы понять что происходит в prodОсобенно хорошо искать отладчиком баги в многопоточном коде. И особенно - на промышленной системе. Пользователь, такой, работает, а разработчик сначала убил основу бага, а потом еще и залип в монитор на пару минут: "И почему это проблема не воспроизводится?.." По твоему обязательно брейкпоинтом стоять? Мы ходили на прод через jdb и смотрели статусы потоков и всякое разное. Это было в том случае когда jmx-порты были по различным причинам закрыты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 21:59 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
maytonМы ходили на прод через jdb и смотрели статусы потоков и всякое разное. Это было в том случае когда jmx-порты были по различным причинам закрыты.Странно - у нас разработчики просили: 1. Логи уровня debug; 2. Дампы стека; 3. Дампы кучи. Чтобы цепляться отладчиком - даже поползновений таких не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 22:54 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
Всё зависит от того как построена система взаимоотношений с кастомером. И нигде нет одинаковой системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 23:05 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLВсегда считал, что задача определяет инструменты, а не наоборот. Например, тот набор стека, который я привел может выполнять следующие действия: С++ - интерфейс, написанный на Qt. Python - макрологика приложения (код который в программе выполнится 1 раз). C++ - конкретная вычислительная задача. Python - любые обслуживающие действия для основных вычислений, например, запись промежуточных результатов вычислений в файл. Логичнее было-бы делать так (по степени "транслируемости"). Python Python C++ C++ C++ Assembler Другая мысль. Современная среда разработки позволяет держать одновременно много подключений к портам отладки. Яркий пример cвязка GWT-debug + Java-debug. Но если эту макрологику (как отдельную виртуалку класса Python) ты в состоянии конфигурировать - то ты наверное можешь для нее поднять отдельный порт дебага и тоже подключить к нему среду. Не спрашивай меня как это делать. Я не спец по Питонам. Но наверное помимо желания всё видеть и всё дебажить надо еще и где-то себя ограничить. Бизнес задача всё-таки имеет свои логические границы. В противном случае завтра ты захочешь подбежить весь стек операционной системы с дровами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 23:18 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЧтобы цепляться отладчиком - даже поползновений таких не было. А собрать дамп приложения и прицепиться отладчиком к нему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 16:13 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
WebSharperА собрать дамп приложения и прицепиться отладчиком к нему?Да бога ради. Только делается это не на промышленной системе, а во внутренней кухне разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 22:10 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
maytonНасчет быстрого прототипирования - идея верная. Нет. Автор языка Python предлагал его для прототипирования программ на C++ и были даже "истории успеха", но мода на это давно прошла. Зато Python всё больше используется для написания готовых программ. Когда не хватает скорости, используются библиотечные функции на C/C++ или использующие GPU. Поскольку таких библиотек (называются пакетами) накопилось много, то маловероятно, что их придётся добавлять самостоятельно. Например: AlekseySQLНапример, тот набор стека, который я привел может выполнять следующие действия: С++ - интерфейс, написанный на Qt. Python - макрологика приложения (код который в программе выполнится 1 раз). C++ - конкретная вычислительная задача. Неудачная идея типа "изобретение велосипеда". Не надо программировать интерфейс с Qt на С++ . Для Python уже есть модули связи (binding-и) с Qt причём даже 3: PySide, PyQt4, PyQt5. Все хорошо документированы. Они позволяют использовать только ту часть Qt, которая относится к визуальному интерфейсу, но остальное в Python не нужно, так как и без того для него есть много пакетов на разнообразные темы. Связывание Python с Qt впрочем нужно не для скорости, а просто чтобы пользоваться функциями Qt. AlekseySQLC++ - конкретная вычислительная задача. Для конкретной вычислительной задачи надо изучить конкретные средства её решения. А то полезете к программистам на Python с предложением своего умения программировать на C++, и неожиданно окажется, что у них уже используется математическая библиотека NumPy, которая может использовать вычисления в GPU (если оно доступно), так что ваша приблуда на С++ будет медленнее. Примечание. Из API для GPU в Python есть хорошая поддержка только для CUDA. Вообще, программисты на C++ склонны преувеличивать значимость своих знаний. Python им будет полезен для расширения кругозора. Я сейчас в основном программирую на Java, но для расширения кругозора осваиваю также Python и Go. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2018, 10:31 |
|
||
|
Как совместить Python для быстрой разработки "обертки" и С++ для "вычислительного ядра"?
|
|||
|---|---|---|---|
|
#18+
Я ставил Python как необходимость в cli для cassandra. Вообще многие консольные "прослойки" на нем написаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2018, 10:35 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39669964&tid=1340079]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 279ms |

| 0 / 0 |
