Навыки програмирования и алгоритмизации для современного инженера-нефтяника

Последнее сообщение
YanP 196 13
Мар 16

В чате подняли тему про навыки програмирования и алгоритмизации, которые могут потребоваться (и могут ли?) современному инженеру-нефтянику. Т.к. тема большая интересная, решили перенести в форум.

Делимся соображениями и опытом.

Вот начало темы:

volvlad 2240 14
Мар 16 #1

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

Практика показывает, что наиболее востребованными оказываются знания скриптовых языков (perl, python) и VBA.

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

TealGlass 167 8
Мар 16 #2

геологу, значит, Ексель и ВБА учить? а я чет на зарубежных форумах читала и SQL нужен, преувеличивают?

YanP 196 13
Мар 16 #3

Во-первых, определимся с терминами

Wikipedia пишет:

Программи́рование — процесс создания компьютерных программ.
По известному выражению Никлауса Вирта «Программы = алгоритмы + структуры данных»; иными словами, ключевыми непосредственными задачами программирования являются создание и использование алгоритмов и структур данных.

...

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

https://ru.wikipedia.org/wiki/Программирование

Wikipedia пишет:

Алгори́тм — набор инструкций, описывающих порядок действий исполнителя для достижения некоторого результата. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Независимые инструкции могут выполняться в произвольном порядке, параллельно, если это позволяют используемые исполнители.

https://ru.wikipedia.org/wiki/Алгоритм

Т.е. для нефтяного инженера вполне достаточно обладать навыками создания алгоритмов. Программирование само по себе требует довольно значительных усилий и знаний, которые не возьмешь просто так из первого попавшегося ресурса. По своему опыту скажу, что все книги и интернет-ресурсы, которые я пытался осмыслить действуют по следующему принципу:

1. Написать простую команду для вывода на экран "Hello World!"
2. Описание кучи функций с абстрактными примерами применения.
Графически это выглядит вот так:

У нормального занятого инженера нет возможности вникать во все хитросплетения написания программ.

Для меня вопрос состоит в том, как описывать эти алгоритмы. Тут можно использовать Python как модуль Techlog или VBA как часть Excel и т.д. В этом случае задача существенно упрощается.

Antalik 1664 14
Мар 16 #4

А во все хитрости и не нужно вникать, и тем более программы писать.

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

Гоша 1197 14
Мар 16 #5

Я бы отделил программистов - как людей, профессия которых обязывает создавать программный продукт. И соответственно им нужны другие инструменты.

А инженеру в действительности нужны навыки со скриптовыми языками - интерпретаторами. Называть это Programming - весьма условно, но другого подходящего термина навскидку не знаю.

VIT 1124 14
Мар 16 #7

Для инженеров очень хорошее знание Excel обязательно. VBA будет очень полезным так что в итоге придется его освоить так что лучше раньше чем поздно. Многие задачи для Excel VBA сильно упрощает или делает их намного быстрее (например просчитать 100 вариантов профилей добычи по monte-carlo вряд ли получится без VBA). Мне всегда для инженерных нужд хватало этой связки, другие языки если есть особое желание. SQL я пользуюсь реже, но тем не менее иногда возникают задачи, особенно если бежишь впереди паровоза, где его знание необходимо. Опять же для наших задач потребуется самое базовое знание SQL которое можно освоить за несколько дней. Вряд ли вам придется писать сложные запросы и процедуры на сервере.

MironovEP 2082 12
Мар 16 #8

я при помощи связки VBA+SQL например дергаю данные телемеханики с АСУ ТП сервера. там оболочка примитивная без возможности экспорта. а  так полчается гораздо быстрее выдернуть данные для анализа

MironovEP 2082 12
Мар 16 #9

)) не будем кидать помидорами) не переживай) 

наверное вы правы. нужно двигаться вперед, развиваться, не стоять на месте. 

я не сталкивался с пайтон, насколько он интегрирован или легок в интеграции с эксель или БД на SQL не могу оценить

YanP 196 13
Мар 16 #10

Давно дело было.

Надо было переместить большой разрозненный массив данных по керну в базу данных. Оболочка СУБД была кошмарная, импорт только для родного формата. Предстояло набивать все руками.

Вопрос решил построением большой сводной таблицы в Excel, через связку Excel-Access конвертацию в dBase, и импорт в БД.

Обошлось простыми формами запросов SQL на стадии проверки целостности БД и общим пониманием принципов работы и структуры СУБД.

Dorzhi 965 14
Мар 16 #11

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

Иван007 864 10
Мар 16 #12

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

Считаю что в наше время это актуально не только для инженера-разработчика.

Celebrity 1678 13
Мар 16 #13

я тоже считаю, что начиная с определеного уровня, тем кто пользуется для работы различным ПО необходимо навыки программирования для написания скриптов и утилит. Сейчас все чаще используется для этого Python. С++ (С#) опционно тоже полезно, для разработичков-нефтяников и тем кто реально много работает с экселем кончено VBA. 

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

voron4m 380 12
Мар 16 #14

VBA + SQL необходимы. Часто бывает проще сделать самому, чем поставить задачу IT, потом контролировать ее выполнение и дождаться результатов. К тому же IT департаменты сейчас другие. Лет 10-15 назад они были "ближе" к народу.

MironovEP 2082 12
Мар 16 #15

voron4m пишет:

VBA + SQL необходимы. Часто бывает проще сделать самому, чем поставить задачу IT, потом контролировать ее выполнение и дождаться результатов. К тому же IT департаменты сейчас другие. Лет 10-15 назад они были "ближе" к народу.

про ИТ департаменты вообще лучше не вспоминать, там сейчас днем с огнем не найдешь людей, знающих хоть какой то язык программирования. в основном сисадмины все, сетевики, безопасники.

YanP 196 13
Мар 16 #16

Приведите пожалуйста пример использования "Python for dummies".

Одно дело, когда вставляем Python script в оболочку типа Techlog. Другое, когда пишется код для обработки массива из, допустим, ASCII файла. Какие самые первые шаги установки модулей? В какой среде?

EmptyEye13 102 14
Мар 16 #17

YanP пишет:
Какие самые первые шаги установки модулей? В какой среде?

Советую пакет Anaconda https://www.continuum.io/downloads , в нём уже все библиотеки полезные будут сразу доступны после установки

как редактор использую notepad++

old_newbie 51 12
Мар 16 #18

ИМХО, сегодня нужно еще знать R. Это открытая среда для статистической обработки данных и работы с графикой, есть море приложений и дополнений. Я использую Excel только для сбора исходных данных, потом о нем можно не вспоминать.

sirayr 83 5
Мар 16 #19

YanP пишет:

Приведите пожалуйста пример использования "Python for dummies".

Одно дело, когда вставляем Python script в оболочку типа Techlog. Другое, когда пишется код для обработки массива из, допустим, ASCII файла. Какие самые первые шаги установки модулей? В какой среде?

Немного забегая вперед можешь глянуть ipython notebook-и, эдакие примеры с пошаговыми инструкциями. Например, на гитхабе есть страничка с тьюториалами от SEGSeismic_petrophysics_1.ipynb в папке 1504_Seismic_petrophysics_1 о том как можно работать с каротажками и какие библиотеки для этого можно использовать.

Насчет IDE, PyCharm вроде самый популярный. Я пока для курсов использую бесплатную версию Enthought Canopy (не знаю почему, просто повинуюсь инструктору).

 

Dorzhi 965 14
Мар 16 #20

Можно поставить Visual Studio Community 2015 (она бесплатная), установить Python 2.7 и Python Tools для VS. Удобная среда. Потом если что можно с IronPython заморочится, там и формы лепить можно. 

voron4m 380 12
Мар 16 #21

old_newbie пишет:

ИМХО, сегодня нужно еще знать R. Это открытая среда для статистической обработки данных и работы с графикой, есть море приложений и дополнений. Я использую Excel только для сбора исходных данных, потом о нем можно не вспоминать.

 

Ссылку в студию!

old_newbie 51 12
Мар 16 #22

voron4m пишет:

old_newbie пишет:

ИМХО, сегодня нужно еще знать R. Это открытая среда для статистической обработки данных и работы с графикой, есть море приложений и дополнений. Я использую Excel только для сбора исходных данных, потом о нем можно не вспоминать.

Ссылку в студию!

Основной сайт - https://cran.r-project.org . Там же можно найти готовые пакеты по названиям и по "интересам". Далее - в зависимости от ваших задач, времени и фантазии :)

Удобная бесплатная среда для R - https://www.rstudio.com

На английском много опубликованных книг и сайтов, на русском стали только недавно появляться.

Antalik 1664 14
Мар 16 #23

в visual studio тоже есть R Tools - https://microsoft.github.io/RTVS-docs/

Гоша 1197 14
Мар 16 #24

old_newbie пишет:

voron4m пишет:

old_newbie пишет:

ИМХО, сегодня нужно еще знать R. Это открытая среда для статистической обработки данных и работы с графикой, есть море приложений и дополнений. Я использую Excel только для сбора исходных данных, потом о нем можно не вспоминать.

Ссылку в студию!

Основной сайт - https://cran.r-project.org . Там же можно найти готовые пакеты по названиям и по "интересам". Далее - в зависимости от ваших задач, времени и фантазии :)

Удобная бесплатная среда для R - https://www.rstudio.com

На английском много опубликованных книг и сайтов, на русском стали только недавно появляться.

На русском есть очень хороший блог : http://r-analytics.blogspot.ru/

И здесь тоже неплохо: http://r-statistics.livejournal.com/

 

Celebrity 1678 13
Мар 16 #25

sirayr,

а есть похожая тема (как по петрофизике), но для сейсмики в питоне? Например расчет аттрибутов попадался тебе?

А вообще прикольный ресурс много полезного вижу, спасибо тебе!!!

Antalik 1664 14
Мар 16 #26

вот у этих ребят на сайте много про python и сейсмику http://www.agilegeoscience.com/

sirayr 83 5
Мар 16 #27

Celebrity пишет:

sirayr,

а есть похожая тема (как по петрофизике), но для сейсмики в питоне? Например расчет аттрибутов попадался тебе?

А вообще прикольный ресурс много полезного вижу, спасибо тебе!!!

Мне попадалось следующее:

1) SEG tutorials уже упомянутые выше (вижу там есть AVO и coherency)

2) можно порыться в профиле компании Agile Geosciences и одного из ее основателей Matt Hall

3) есть еще такой чувак Wayne Mogg, который написал open-source плагины для OpendTect. Они написаны на C++ (языке OpendTect), но один из его плагинов позволяет использовать Python скрипты для расчета атрибутов в OpendTect. К этому плагину у него есть несколько Python скриптов для примера.

4) быстрый Google search привел к https://github.com/joferkington/scipy2014-3d_seismic

Сорри, что много линков.. ничего из вышеперечисленного собственными руками еще не пробовал, только начинаю присматриваться.

EmptyEye13 102 14
Апр 16 #28

sirayr,

интересно. Я как-то пару лет назад использовал либу https://docs.obspy.org/archive/0.10.2/contents.html  чтобы прочитать кубы segy разных атрибутов. Правда данные не умещались в память, пришлось ставить закладку в код либы, чтобы не открывать весь куб, а переводить данные в формат БД hdf5, с которым уже легко работать.

denfromufa 89 9
Апр 16 #29

sirayr пишет:

4) быстрый Google search привел к https://github.com/joferkington/scipy2014-3d_seismic

Посмотрите еще ответы Joe Kington (senior specialist at Chevron) по визуализации и интерполяции на SO:

http://stackoverflow.com/users/325565/joe-kington

некоторые ответы как статьи!

 

 

 

denfromufa 89 9
Апр 16 #30

у компании enthought (https://www.enthought.com/) много пакетов для нефтегаза - Canopy Geo, Virtual Core. они же поставляют пакет pyxll для альтернативы vba в excel, включая UDF. также есть открытыe пакеты xlwings & openpyxl.

sirayr 83 5
Апр 16 #31

EmptyEye13 пишет:

sirayr,

интересно. Я как-то пару лет назад использовал либу https://docs.obspy.org/archive/0.10.2/contents.html  чтобы прочитать кубы segy разных атрибутов. Правда данные не умещались в память, пришлось ставить закладку в код либы, чтобы не открывать весь куб, а переводить данные в формат БД hdf5, с которым уже легко работать.

Obspy, будучи разработанным сейсмологами, наверное не очень подходит для разведочной сейсмики, как раз в связи со спецификой больших массивов данных. Мне кажется, External Attribute для OpendTect от Wayne Mogg должен позволить сфокусироваться на алгоритмах расчета атрибутов, что как раз под силу геофизикам с навыками программирования, на тратя время и усилия на импорт/экспорт данных, создание приличной визуализации и тд.

Гоша 1197 14
Апр 16 #32

Dorzhi пишет:

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

Стендинг и Ко так, например, вообще все по палеткам считали - и, надо сказать, не шибко ошибались...

volvlad 2240 14
Апр 16 #33

Гоша пишет:

Стендинг и Ко так, например, вообще все по палеткам считали - и, надо сказать, не шибко ошибались...

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

Гоша 1197 14
Апр 16 #34

volvlad пишет:

Гоша пишет:

Стендинг и Ко так, например, вообще все по палеткам считали - и, надо сказать, не шибко ошибались...

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

Хм... ну вот здесь можно контраргумент привести: палетки как раз для скорости расчетов придуманы, если в наш цифровой век использовать их на компе, то все очень быстро. Ну и в некоторых расчетные методах исторически функции подгонялись, чтобы воспроизводить палетки (например, z-фактор по разным корреляциям - по сути воспроизведение палетки Стендинга-Каца).

 

Занятный тезис о написании компьютерных программ есть в этом видео  - не знаю, правда или нет (где-то ближе к концу чуть ли не на последней минуте): https://www.youtube.com/watch?v=7wbRi0LJaLY

Go to top