реклама на сайте
подробности

 
 
7 страниц V  « < 3 4 5 6 7 >  
Reply to this topicStart new topic
> Python для разработчика, зачем?
Leka
сообщение Mar 15 2018, 11:33
Сообщение #61


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



bb-offtopic.gif
У меня. Давно, работа, первое, что вспомнилось:
- контрольно-измерительные стенды для исследований/отбраковки разработанных интегральных схем
(мелкая серия для внутренних нужд), на базе ПК с многоканальной платой аналого-цифрового ввода-вывода -
все ПО писал сам на Паскале, с выводом на экран графиков, осциллограмм, и тд;
- вспомогательное ПО разработки ИС - на Паскале;
- что-то подсчитать/проанализировать - на Паскале (что сложнее - Maple).
Это все было в дополнение к основной задаче - разработке схемотехники/топологии/методологии ИС
(вел всю цепочку от согласования ТЗ до готового кристалла).

Сейчас, хобби:
- трансляторы своих языков в Верилог - на Паскале;
- обработка данных от ПЛИС - чаще Паскаль, редко Си, еще реже Octave.
- дизайны для ПЛИС - свои языки + Верилог.

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

Сообщение отредактировал Leka - Mar 15 2018, 11:34
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 15 2018, 17:33
Сообщение #62


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(dxp @ Mar 15 2018, 17:37) *
Ну, самодельные костыли всё же не так удобны, безопасны и просты для понимания и использования, как встроенные в язык средства.

это не костыли, а именно средства языка, которые позволяют копать, ну или не копать, надо ООП и наследование - пожалуйста.
Цитата(dxp @ Mar 15 2018, 17:37) *
Выглядеть будет обычно. Конечно, рантайм ему потребуется. У меня есть опыт только с Qt, так вот когда я запускал программу под вендой, мне достаточно было установить питон и PyQt, дальше всё запустилось без вопросов. Для венды придётся слепить инсталлятор, который установит вышеупомянутое, но инсталляторы для венды - обычное дело.

ну то есть для совсем простого приложения которое пусть, например, не знаю id3 tagи от mp3 анализирует/сортирует, но с совсем простым гуём, придётся не одну сотню МБ скачать.
да, объёмы дисков нынче в терабайтах измеряются, а скорости интернета в десятках и сотнях мбит, но как-то всё равно некрасиво.
помнится как-то понадобилось посмотреть некий специфичный софт для расчётов, на питоне, будучи с ним совсем не знаком, сначала по совету сдуру поставил какую-то анаконду, ещё как оказалось не той 2/3 версии.
а потом оно ещё попросило определённую версию MSVC, чтобы какую-то из зависимых библиотек вроде scipy или чего-то похожего пересобрать.
вот это сходил за хлебушком, а надо-то было совсем какую-то простую вещь сделать.
Цитата(dxp @ Mar 15 2018, 17:37) *
Однако на нём успешно пишут приложения (Node.js). И жабоскрипные приложения мне попадались много чаще, чем на луа.

тем не менее не могу назвать ни одно приложение на node.js, которым бы именно приходилось пользоваться.
Цитата(dxp @ Mar 15 2018, 17:37) *
Ну, так вон народ и на Tcl лабает приложения, и объекто-ориентированные, и с гуями... Но, полагаю, вы не будете сторонником этого подхода. sm.gif

да если гуи совсем простые вроде нескольких полей ввода и пары кнопок, то без разницы на чём делать и весь Qt для этого совсем не нужен.
Цитата(dxp @ Mar 15 2018, 17:37) *
О, а я на питон как раз внимание обратил именно из-за того, что эти оба так достали при обработке многострочных текстов. Собственно, питон именно для этих случаев и начал использовать. А потом пошло-поехало - сперва простые утилиты, потом как интерактивная среда для вычислений, исследований, а потом и полноценные GUI приложения. До момента знакомства с питоном утилиты писал на С++, с тех пор исключительно на питоне.

аналогично, только с lua и mathematica пришлось познакомиться из-за femm и radia для магнитостатики, а потом как-то затянуло.
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 16 2018, 08:52
Сообщение #63


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(_pv @ Mar 16 2018, 00:33) *
это не костыли, а именно средства языка, которые позволяют копать, ну или не копать, надо ООП и наследование - пожалуйста.

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

Код
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? Не измерения ради, а правда любопытно, как это реализовывается на языке, где нет встроенной поддержки таких средств.


Цитата(_pv @ Mar 16 2018, 00:33) *
ну то есть для совсем простого приложения которое пусть, например, не знаю id3 tagи от mp3 анализирует/сортирует, но с совсем простым гуём, придётся не одну сотню МБ скачать.

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

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

Цитата(_pv @ Mar 16 2018, 00:33) *
помнится как-то понадобилось посмотреть некий специфичный софт для расчётов, на питоне, будучи с ним совсем не знаком, сначала по совету сдуру поставил какую-то анаконду, ещё как оказалось не той 2/3 версии.
а потом оно ещё попросило определённую версию MSVC, чтобы какую-то из зависимых библиотек вроде scipy или чего-то похожего пересобрать.
вот это сходил за хлебушком, а надо-то было совсем какую-то простую вещь сделать.

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

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

Цитата(_pv @ Mar 16 2018, 00:33) *
тем не менее не могу назвать ни одно приложение на node.js, которым бы именно приходилось пользоваться.

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

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

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

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 16 2018, 09:35
Сообщение #64


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(dxp @ Mar 16 2018, 10:52) *
Мне вот этим довелось попользоваться. Правда, не всё устраивало, а поправить под себя эффективно не мог (не владею инструментом), поэтому идею позаимствовал и реализовал на питоне. sm.gif

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

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

В embedded гораздо выгоднее изучать и применять JavaScript.
Он и в микроконтроллеры встраивается, и WEB GUI на нем делают, и кросплатформенные приложения и серверные.
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 16 2018, 10:02
Сообщение #65


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(AlexandrY @ Mar 16 2018, 16:35) *
Хотел бы я посмотреть на реализацию на питоне вот такой идеи - https://habrahabr.ru/post/327628/ .

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

Цитата(AlexandrY @ Mar 16 2018, 16:35) *
Похожая тема, но гораздо полезней для разработчиков.

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

Цитата(AlexandrY @ Mar 16 2018, 16:35) *
Нет, что ни говорите, а экосистема питона включая либы просто эрзац более продвинутых решений.

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

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

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

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






--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Mar 16 2018, 10:09
Сообщение #66


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



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

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

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


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

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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Leka
сообщение Mar 16 2018, 10:19
Сообщение #67


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(AlexandrY @ Mar 16 2018, 12:35) *
Хотел бы я посмотреть на реализацию на питоне вот такой идеи - https://habrahabr.ru/post/327628/ .

по ссылке: "написал программу в Delphi которая импортирует файл и фильтрует мусор" a14.gif
(сам, правда, использую Delphi, а FPC)

Go to the top of the page
 
+Quote Post
Tpeck
сообщение Mar 16 2018, 10:27
Сообщение #68


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Off
А в питоне можно сделать высокоскоростной модулятор DVBS2 с добавлением АБГШ и отправкой этого счастья по UDP и приема обратно?
Где-то на 5-10 Мбод.
Всем спасибо.
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 16 2018, 10:52
Сообщение #69


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(dxp @ Mar 16 2018, 15:52) *
Как подобный код выглядит на 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



Цитата(dxp @ Mar 16 2018, 15:52) *
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 и обратно
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 16 2018, 10:56
Сообщение #70


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Эдди @ Mar 14 2018, 11:59) *
А учитывая то, что у меня рвотный рефлекс на синтаксис пхытона, лучше при мне об этой дряни вообще не говорить (а то могу и заляпать ненароком)!!!

А Вас сюда кто-то силком затащил? Автор попросил поделиться опытом тех, кто применяет Питон в своих разработках. Показать преимущества.
Вы же, в привычной своей манере, вломились в ветку облить помоями то, что Вам не пришлось по душе, и, соответственно, "маст дай".
Коверкая язык и изрыгая ругательства, устраиваете здесь очередной холивар. Этим взрослый человек пришёл поделиться с коллегами?
Я прошу Вас, как минимум, воздерживаться в дальнейшем от участия в этой теме и вообще от грубостей.
И всех присутствующих - не превращать тему в очередной оффтоп.
Go to the top of the page
 
+Quote Post
Leka
сообщение Mar 16 2018, 11:49
Сообщение #71


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(dxp @ Mar 16 2018, 13:02) *
На питоне эта задача выполнена, результат тут

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

Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 16 2018, 12:13
Сообщение #72


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Leka @ Mar 16 2018, 18:49) *
При беглом взгляде это интерактивная задача, надо глазами проверять формат таблиц для разных устройств.

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

Цитата(_pv @ Mar 16 2018, 17:52) *
"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. sm.gif Надо осмыслить эту механику со стеком. И понять, как это обернуть, чтобы при использовании было проще.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 16 2018, 13:29
Сообщение #73


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(dxp @ Mar 16 2018, 19:13) *
Спасибо за пример. Собрал, запустил, ответ 50. sm.gif Надо осмыслить эту механику со стеком. И понять, как это обернуть, чтобы при использовании было проще.

помимо просто С функций, тоже самое что со слонами и мамонтами выше, можно делать и из С/С++ кода, в результате с луа можно обмениваться уже классами из с++.
и для этого так же хватает всяких всяких готовых обёрток.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 17 2018, 09:57
Сообщение #74


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(dxp @ Mar 16 2018, 12:02) *
Задача: распарсить таблицы, извлечь информацию и родить набор заголовочных файлов для всех периферийных устройств.
На питоне эта задача выполнена, результат тут. Три набора файлов (разные стили - макросами, перечислениями и константами).
Покажите всю мощь и мастерство владения дельфями?

Я бы рад, но вы здесь здорово присочинили.
Посмотрите документацию по вашей ссылке и там не найдете имен использованных в хидерах.
Вас кто-то ввел в заблуждение. Это на самом деле было сделано вручную, скрипты если и были, то на этапе выравнивания синтаксиса. laughing.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 17 2018, 11:43
Сообщение #75


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(AlexandrY @ Mar 17 2018, 16:57) *
Я бы рад, но вы здесь здорово присочинили.
Посмотрите документацию по вашей ссылке и там не найдете имен использованных в хидерах.
Вас кто-то ввел в заблуждение. Это на самом деле было сделано вручную, скрипты если и были, то на этапе выравнивания синтаксиса. laughing.gif

Каких имён?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

7 страниц V  « < 3 4 5 6 7 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.016 секунд с 7
ELECTRONIX ©2004-2016