Перейти к содержанию
    

Python для разработчика

:bb-offtopic:

У меня. Давно, работа, первое, что вспомнилось:

- контрольно-измерительные стенды для исследований/отбраковки разработанных интегральных схем

(мелкая серия для внутренних нужд), на базе ПК с многоканальной платой аналого-цифрового ввода-вывода -

все ПО писал сам на Паскале, с выводом на экран графиков, осциллограмм, и тд;

- вспомогательное ПО разработки ИС - на Паскале;

- что-то подсчитать/проанализировать - на Паскале (что сложнее - Maple).

Это все было в дополнение к основной задаче - разработке схемотехники/топологии/методологии ИС

(вел всю цепочку от согласования ТЗ до готового кристалла).

 

Сейчас, хобби:

- трансляторы своих языков в Верилог - на Паскале;

- обработка данных от ПЛИС - чаще Паскаль, редко Си, еще реже Octave.

- дизайны для ПЛИС - свои языки + Верилог.

 

Раньше было интереснее - все можно было делать своими руками.

Сейчас инженеры, как роботы на конвейере, называется - "умение работать в команде".

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, самодельные костыли всё же не так удобны, безопасны и просты для понимания и использования, как встроенные в язык средства.

это не костыли, а именно средства языка, которые позволяют копать, ну или не копать, надо ООП и наследование - пожалуйста.

Выглядеть будет обычно. Конечно, рантайм ему потребуется. У меня есть опыт только с Qt, так вот когда я запускал программу под вендой, мне достаточно было установить питон и PyQt, дальше всё запустилось без вопросов. Для венды придётся слепить инсталлятор, который установит вышеупомянутое, но инсталляторы для венды - обычное дело.

ну то есть для совсем простого приложения которое пусть, например, не знаю id3 tagи от mp3 анализирует/сортирует, но с совсем простым гуём, придётся не одну сотню МБ скачать.

да, объёмы дисков нынче в терабайтах измеряются, а скорости интернета в десятках и сотнях мбит, но как-то всё равно некрасиво.

помнится как-то понадобилось посмотреть некий специфичный софт для расчётов, на питоне, будучи с ним совсем не знаком, сначала по совету сдуру поставил какую-то анаконду, ещё как оказалось не той 2/3 версии.

а потом оно ещё попросило определённую версию MSVC, чтобы какую-то из зависимых библиотек вроде scipy или чего-то похожего пересобрать.

вот это сходил за хлебушком, а надо-то было совсем какую-то простую вещь сделать.

Однако на нём успешно пишут приложения (Node.js). И жабоскрипные приложения мне попадались много чаще, чем на луа.

тем не менее не могу назвать ни одно приложение на node.js, которым бы именно приходилось пользоваться.

Ну, так вон народ и на Tcl лабает приложения, и объекто-ориентированные, и с гуями... Но, полагаю, вы не будете сторонником этого подхода. :)

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

О, а я на питон как раз внимание обратил именно из-за того, что эти оба так достали при обработке многострочных текстов. Собственно, питон именно для этих случаев и начал использовать. А потом пошло-поехало - сперва простые утилиты, потом как интерактивная среда для вычислений, исследований, а потом и полноценные GUI приложения. До момента знакомства с питоном утилиты писал на С++, с тех пор исключительно на питоне.

аналогично, только с lua и mathematica пришлось познакомиться из-за femm и radia для магнитостатики, а потом как-то затянуло.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это не костыли, а именно средства языка, которые позволяют копать, ну или не копать, надо ООП и наследование - пожалуйста.

Что сделать-то можно, не сомневаюсь. Вон люди на С в ООП стиле пишут, вполне работает. Но вопрос цены: удобство, безопасность, прозрачность и т.д. Хочется узнать поподробнее, как это выглядит на практике. Например, в питоне класс:

 

class TSlon
    a = 5
    def __init__(self):
        self.b = 10

...

slon = TSlon()

a = slon.a + slon.b  # a:  15

 

Далее, наследование:

class TMamont(TSlon):
    def __init__(self):
        super().__init__()

    def add(self, x):
        self.a += x

...

mamont = TMamont()

mamont.add(4)  # mamont.a: 9

 

Как подобный код выглядит на Lua? Не измерения ради, а правда любопытно, как это реализовывается на языке, где нет встроенной поддержки таких средств.

 

 

ну то есть для совсем простого приложения которое пусть, например, не знаю id3 tagи от mp3 анализирует/сортирует, но с совсем простым гуём, придётся не одну сотню МБ скачать.

Зачем? Нужен сам питон и графические либы (Qt, wxWidgets или что там используется). В линухах питоны есть "искаропки", для венды придётся скачать. Инсталлятор для 64-битной версии: Python 2.7 что-то порядка 20 МБ, 3.6 - 30 МБ. Далее, сами графические либы - это преимущественно динамические библиотеки (dll/so), они нужны будут в любом случае для любого языка - в т.ч. и для С/С++, если только не собрать статически. Графический фреймворк PyQt5 вытягивается одной командой через pip (типа менеджера пакетов питона).

 

Для венды питоновое приложение можно собрать с помощью PyInstaller, который родит самодостаточный exe-шник. Да, размер тоже будет не 20 байт, где-то от полутора мегов, насколько помню, давно уже ничего такого не собирал. Не тянет совсем.

 

помнится как-то понадобилось посмотреть некий специфичный софт для расчётов, на питоне, будучи с ним совсем не знаком, сначала по совету сдуру поставил какую-то анаконду, ещё как оказалось не той 2/3 версии.

а потом оно ещё попросило определённую версию MSVC, чтобы какую-то из зависимых библиотек вроде scipy или чего-то похожего пересобрать.

вот это сходил за хлебушком, а надо-то было совсем какую-то простую вещь сделать.

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

 

Anaconda - это сборка Python + набор библиотек для научных расчётов, влючая Numpy, Matplotlib, IDE a-la Matlab Spyder, и прочее. Я предпочитаю ставить все эти штуки по отдельности по мере надобности, но на венде анаконда - пожалуй, единственный нормальный путь, быстро и без лишнего геморроя. И не такая уж она и огромная на фоне современных САПР. Матлаб тот же толще.

 

тем не менее не могу назвать ни одно приложение на node.js, которым бы именно приходилось пользоваться.

Мне вот этим довелось попользоваться. Правда, не всё устраивало, а поправить под себя эффективно не мог (не владею инструментом), поэтому идею позаимствовал и реализовал на питоне. :)

 

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

 

Согласитесь, что по количеству и разнообразию самостоятельных приложений питон и луа сравнивать не приходится. Как и по количеству встраиваемых (но уже с обратным приоритетом). И это неспроста. Всякому инструменту - своя ниша.

 

P.S. Я не спора для пишу посты сюда, мне правда интересно. Есть желание научиться встраивать Lua в приложения на C/C++. Если у вас есть подобный опыт, можете посоветовать что-нибудь для старта (ну, ссылки с внятным освещением вопроса или примерчик простейший - типа, программа на С с main, и из неё вызывать функцию на Lua)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне вот этим довелось попользоваться. Правда, не всё устраивало, а поправить под себя эффективно не мог (не владею инструментом), поэтому идею позаимствовал и реализовал на питоне. :)

Хотел бы я посмотреть на реализацию на питоне вот такой идеи - https://habrahabr.ru/post/327628/ .

Похожая тема, но гораздо полезней для разработчиков.

 

Нет, что ни говорите, а экосистема питона включая либы просто эрзац более продвинутых решений.

 

В embedded гораздо выгоднее изучать и применять JavaScript.

Он и в микроконтроллеры встраивается, и WEB GUI на нем делают, и кросплатформенные приложения и серверные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел бы я посмотреть на реализацию на питоне вот такой идеи - https://habrahabr.ru/post/327628/ .

Напишите на питоне и увидите.

 

Похожая тема, но гораздо полезней для разработчиков.

Ни разу не похожая. А похожая лежит тут.

 

Нет, что ни говорите, а экосистема питона включая либы просто эрзац более продвинутых решений.

Если хочется покозырять умением выдрать из pdf данные и сгенерить целевые файлы, вот вам задание:

 

SoC Xilinx Zynq-7000, вендор не озаботился составлением заголовочных файлов для периферии СнК. Поэтому приходится выполнять эту работу самостоятельлно. Файл документации, вторая его половина содержит таблицы с описаниями регистров кристалла. Задача: распарсить таблицы, извлечь информацию и родить набор заголовочных файлов для всех периферийных устройств.

 

На питоне эта задача выполнена, результат тут. Три набора файлов (разные стили - макросами, перечислениями и константами).

 

Покажите всю мощь и мастерство владения дельфями?

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расскажу, как я применяю питон в embedded.

 

Если микроконторллер имеет интерфейс для общения с ПК (а зачастую это так), то я использую питон для написания тестов. Все функции обмена реализую в коде на питоне.

Типа: считать текущие значения датчиков, задать параметры работы, изменить скорость опроса, и т. д.

 

Это мне помогает трижды:

  1. . При написании прошивки - я имею возможность проверить работу прошивки, обмен с ПК, соответствие обмена протоколу и т. д.
  2. . При передаче прошивки программисту прикладного уровня - он сразу видит, как можно работать с устройством.
  3. . При выяснении проблем с программистом прикладного уровня - если он мне говорит, что что-то не работает, я ему говорю -"тест работает, проблемы на твоей стороне" :)

 

Если программистом прикладного уровня являюсь я (такое тоже случается), то всё равно удобно сначала по-быстрому

накидать тесты на питоне, а уже потом реализовывать полноценную работу на Qt.

 

Ну и пару раз всякие алгоритмы расчётов/фильтрации обкатывал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел бы я посмотреть на реализацию на питоне вот такой идеи - https://habrahabr.ru/post/327628/ .

по ссылке: "написал программу в Delphi которая импортирует файл и фильтрует мусор" :a14:

(сам, правда, использую Delphi, а FPC)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Off

А в питоне можно сделать высокоскоростной модулятор DVBS2 с добавлением АБГШ и отправкой этого счастья по UDP и приема обратно?

Где-то на 5-10 Мбод.

Всем спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как подобный код выглядит на Lua? Не измерения ради, а правда любопытно, как это реализовывается на языке, где нет встроенной поддержки таких средств.

TSlon = {}

function TSlon:new(arg1)
  local this = {}
  this.a = 5
  this.b = arg1
  setmetatable(this, {__index = TSlon})   -- при обращении к методам конкретного экземпляра будут взяты методы из таблицы слона.
  return this
end

function TSlon:sub(x)
  self.a = self.a - x
  return self.a
end

setmetatable(TSlon, {__call = TSlon.new})   -- просто синтаксический сахар для конструктора  foo = TSlon(1)  <=>  foo = TSlon:new(1)

slon = TSlon(10)
print(slon.a + slon.b)  -- 15
print(slon:sub(1))      -- 4

TMamont = {}

function TMamont:new(arg1)
  local this = TSlon(arg1)
  setmetatable(this, {__index = TMamont})   
  return this
end

function TMamont:add(x)
  self.a = self.a + x
  return self.a
end

setmetatable(TMamont, {__index = TSlon, __call = TMamont.new}) -- при обращении к методам мамонта, если таквой не найден, пойдём к слону

mamont = TMamont(0)
print(mamont:add(4))     -- 9
print(mamont:sub(1))     -- 8, TSlon:sub

 

 

P.S. Я не спора для пишу посты сюда, мне правда интересно. Есть желание научиться встраивать Lua в приложения на C/C++. Если у вас есть подобный опыт, можете посоветовать что-нибудь для старта (ну, ссылки с внятным освещением вопроса или примерчик простейший - типа, программа на С с main, и из неё вызывать функцию на Lua)?

"programming in lua" от автора для начала самое оно. предыдущие издания лежат на прямо на lua.org.

найти последнее издание в pdf в интернете тоже не проблема.

да и изменения там не особо принципиальные.

 

--main.lua
function luafunc (x, y)
  return x + cfunc(y)
end

//main.c
int cfunc(lua_State * L){
  lua_pushnumber(L, lua_tonumber(L, 1) * 2); //взять первый параметр, удвоить и положить обратно.
  return 1;                                  //количество возвращаемых значений
}

void main(){
  lua_State * L = luaL_newstate();
  lua_register (L, "cfunc", cfunc);  //зарегистрировать свою С функцию в lua.
  luaL_dofile(L, "main.lua");  //выполнить луа код
  lua_getglobal(L, "luafunc"); //найти и положить на стэк глобальную луа функцию luafunc
  lua_pushnumber(L, 10);       //затем ещё два параметра
  lua_pushnumber(L, 20);       //
  lua_pcall(L, 2, 1, 0)        //взять эти два параметра со стэка, затем функуцию, позвать её, она в свою очередь позовёт cfunc и потом вернёт 1 значение на стэк
  int z = lua_tonumber(L, -1); //взять его сверху стэка (-1)
  lua_pop(L, 1);               //и почистить за собой
  printf ("%d", z);            //50  =  10 + 20*2
}

 

ну и есть куча всяких обёрток на плюсах для облегчения общения с lua,

например с автоматическим разворачиванием луа таблиц со стэка в std::map и обратно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А учитывая то, что у меня рвотный рефлекс на синтаксис пхытона, лучше при мне об этой дряни вообще не говорить (а то могу и заляпать ненароком)!!!

А Вас сюда кто-то силком затащил? Автор попросил поделиться опытом тех, кто применяет Питон в своих разработках. Показать преимущества.

Вы же, в привычной своей манере, вломились в ветку облить помоями то, что Вам не пришлось по душе, и, соответственно, "маст дай".

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

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

И всех присутствующих - не превращать тему в очередной оффтоп.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На питоне эта задача выполнена, результат тут

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Формат таблиц там одинаковый, вот наполнение местами отличается - разные люди, видимо, писали для разных модулей. И это была основная проблема - приходилось глазами отсматривать и дополнять исходник (на это основное время и ушло). Но парсинг и генерация сами по себе от этого не зависят, т.ч. задача корректна.

 

"programming in lua" от автора для начала самое оно. предыдущие издания лежат на прямо на lua.org.

найти последнее издание в pdf в интернете тоже не проблема.

да и изменения там не особо принципиальные.

 

--main.lua
function luafunc (x, y)
  return x + cfunc(y)

<...>

  lua_pop(L, 1);               //и почистить за собой
  printf ("%d", z);            //50  =  10 + 20*2
}

Спасибо за пример. Собрал, запустил, ответ 50. :) Надо осмыслить эту механику со стеком. И понять, как это обернуть, чтобы при использовании было проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за пример. Собрал, запустил, ответ 50. :) Надо осмыслить эту механику со стеком. И понять, как это обернуть, чтобы при использовании было проще.

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

и для этого так же хватает всяких всяких готовых обёрток.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

На питоне эта задача выполнена, результат тут. Три набора файлов (разные стили - макросами, перечислениями и константами).

Покажите всю мощь и мастерство владения дельфями?

Я бы рад, но вы здесь здорово присочинили.

Посмотрите документацию по вашей ссылке и там не найдете имен использованных в хидерах.

Вас кто-то ввел в заблуждение. Это на самом деле было сделано вручную, скрипты если и были, то на этапе выравнивания синтаксиса. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы рад, но вы здесь здорово присочинили.

Посмотрите документацию по вашей ссылке и там не найдете имен использованных в хидерах.

Вас кто-то ввел в заблуждение. Это на самом деле было сделано вручную, скрипты если и были, то на этапе выравнивания синтаксиса. :laughing:

Каких имён?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...