0
Мар 16
В чате подняли тему про навыки програмирования и алгоритмизации, которые могут потребоваться (и могут ли?) современному инженеру-нефтянику. Т.к. тема большая интересная, решили перенести в форум.
Делимся соображениями и опытом.
Вот начало темы:
Опубликовано
29 Мар 2016
Активность
34
ответа
5986
просмотров
15
участников
28
Рейтинг
Навыки алгоритмизации и программирования на мой взгляд очень полезны инженерам-разработчикам. Не скажу, чтобы они были крайне необходимы, т.е. не умея программировать можно жить, но наличие этих умений заметно упрощает жизнь. Знание какого-то конкретного языка не столь важно, сколько знание основ программирования в целом.
Практика показывает, что наиболее востребованными оказываются знания скриптовых языков (perl, python) и VBA.
Но я бы отметил еще один очень важный момент - знание Excel и максимальное использование его возможностей (не прибегая к VBA). А это как ни крути один из основных инструментов.
геологу, значит, Ексель и ВБА учить? а я чет на зарубежных форумах читала и SQL нужен, преувеличивают?
Во-первых, определимся с терминами
Т.е. для нефтяного инженера вполне достаточно обладать навыками создания алгоритмов. Программирование само по себе требует довольно значительных усилий и знаний, которые не возьмешь просто так из первого попавшегося ресурса. По своему опыту скажу, что все книги и интернет-ресурсы, которые я пытался осмыслить действуют по следующему принципу:
1. Написать простую команду для вывода на экран "Hello World!"
2. Описание кучи функций с абстрактными примерами применения.
Графически это выглядит вот так:
У нормального занятого инженера нет возможности вникать во все хитросплетения написания программ.
Для меня вопрос состоит в том, как описывать эти алгоритмы. Тут можно использовать Python как модуль Techlog или VBA как часть Excel и т.д. В этом случае задача существенно упрощается.
А во все хитрости и не нужно вникать, и тем более программы писать.
Базовый синтакс по примерам, запуск скриптов, умение подключать сторонние библиотеки и уже что-то полезное можно сделать в плане автоматизации рутины.
Я бы отделил программистов - как людей, профессия которых обязывает создавать программный продукт. И соответственно им нужны другие инструменты.
А инженеру в действительности нужны навыки со скриптовыми языками - интерпретаторами. Называть это Programming - весьма условно, но другого подходящего термина навскидку не знаю.
Я geoscientist, закончил один онлайн курс по питону на edx.org от MIT:
https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-6
и начал второй:
https://www.edx.org/course/introduction-computational-thinking-data-mitx-6-00-2x-3
В работе пока использовать не начал, но планирую.
Для инженеров очень хорошее знание Excel обязательно. VBA будет очень полезным так что в итоге придется его освоить так что лучше раньше чем поздно. Многие задачи для Excel VBA сильно упрощает или делает их намного быстрее (например просчитать 100 вариантов профилей добычи по monte-carlo вряд ли получится без VBA). Мне всегда для инженерных нужд хватало этой связки, другие языки если есть особое желание. SQL я пользуюсь реже, но тем не менее иногда возникают задачи, особенно если бежишь впереди паровоза, где его знание необходимо. Опять же для наших задач потребуется самое базовое знание SQL которое можно освоить за несколько дней. Вряд ли вам придется писать сложные запросы и процедуры на сервере.
я при помощи связки VBA+SQL например дергаю данные телемеханики с АСУ ТП сервера. там оболочка примитивная без возможности экспорта. а так полчается гораздо быстрее выдернуть данные для анализа
)) не будем кидать помидорами) не переживай)
наверное вы правы. нужно двигаться вперед, развиваться, не стоять на месте.
я не сталкивался с пайтон, насколько он интегрирован или легок в интеграции с эксель или БД на SQL не могу оценить
Давно дело было.
Надо было переместить большой разрозненный массив данных по керну в базу данных. Оболочка СУБД была кошмарная, импорт только для родного формата. Предстояло набивать все руками.
Вопрос решил построением большой сводной таблицы в Excel, через связку Excel-Access конвертацию в dBase, и импорт в БД.
Обошлось простыми формами запросов SQL на стадии проверки целостности БД и общим пониманием принципов работы и структуры СУБД.
Умение программировать не так уж необходимо для инженера-разработчика, но конкурентоспособность повышает.
Посчитал что нужно, не факт что программировать (желательно понимать что это). Получил второе образование в информационных технологиях.
Считаю что в наше время это актуально не только для инженера-разработчика.
я тоже считаю, что начиная с определеного уровня, тем кто пользуется для работы различным ПО необходимо навыки программирования для написания скриптов и утилит. Сейчас все чаще используется для этого Python. С++ (С#) опционно тоже полезно, для разработичков-нефтяников и тем кто реально много работает с экселем кончено VBA.
По работе пишу скрипты на Питоне, что значительно ускоряет и помогает в работе с данными и моделированием.
VBA + SQL необходимы. Часто бывает проще сделать самому, чем поставить задачу IT, потом контролировать ее выполнение и дождаться результатов. К тому же IT департаменты сейчас другие. Лет 10-15 назад они были "ближе" к народу.
про ИТ департаменты вообще лучше не вспоминать, там сейчас днем с огнем не найдешь людей, знающих хоть какой то язык программирования. в основном сисадмины все, сетевики, безопасники.
Приведите пожалуйста пример использования "Python for dummies".
Одно дело, когда вставляем Python script в оболочку типа Techlog. Другое, когда пишется код для обработки массива из, допустим, ASCII файла. Какие самые первые шаги установки модулей? В какой среде?
Советую пакет Anaconda https://www.continuum.io/downloads , в нём уже все библиотеки полезные будут сразу доступны после установки
как редактор использую notepad++
ИМХО, сегодня нужно еще знать R. Это открытая среда для статистической обработки данных и работы с графикой, есть море приложений и дополнений. Я использую Excel только для сбора исходных данных, потом о нем можно не вспоминать.
Немного забегая вперед можешь глянуть ipython notebook-и, эдакие примеры с пошаговыми инструкциями. Например, на гитхабе есть страничка с тьюториалами от SEG: Seismic_petrophysics_1.ipynb в папке 1504_Seismic_petrophysics_1 о том как можно работать с каротажками и какие библиотеки для этого можно использовать.
Насчет IDE, PyCharm вроде самый популярный. Я пока для курсов использую бесплатную версию Enthought Canopy (не знаю почему, просто повинуюсь инструктору).
Можно поставить Visual Studio Community 2015 (она бесплатная), установить Python 2.7 и Python Tools для VS. Удобная среда. Потом если что можно с IronPython заморочится, там и формы лепить можно.
Ссылку в студию!
Основной сайт - https://cran.r-project.org . Там же можно найти готовые пакеты по названиям и по "интересам". Далее - в зависимости от ваших задач, времени и фантазии :)
Удобная бесплатная среда для R - https://www.rstudio.com
На английском много опубликованных книг и сайтов, на русском стали только недавно появляться.
в visual studio тоже есть R Tools - https://microsoft.github.io/RTVS-docs/
На русском есть очень хороший блог : http://r-analytics.blogspot.ru/
И здесь тоже неплохо: http://r-statistics.livejournal.com/
sirayr,
а есть похожая тема (как по петрофизике), но для сейсмики в питоне? Например расчет аттрибутов попадался тебе?
А вообще прикольный ресурс много полезного вижу, спасибо тебе!!!
вот у этих ребят на сайте много про python и сейсмику http://www.agilegeoscience.com/
Мне попадалось следующее:
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
Сорри, что много линков.. ничего из вышеперечисленного собственными руками еще не пробовал, только начинаю присматриваться.
sirayr,
интересно. Я как-то пару лет назад использовал либу https://docs.obspy.org/archive/0.10.2/contents.html чтобы прочитать кубы segy разных атрибутов. Правда данные не умещались в память, пришлось ставить закладку в код либы, чтобы не открывать весь куб, а переводить данные в формат БД hdf5, с которым уже легко работать.
Посмотрите еще ответы Joe Kington (senior specialist at Chevron) по визуализации и интерполяции на SO:
http://stackoverflow.com/users/325565/joe-kington
некоторые ответы как статьи!
у компании enthought (https://www.enthought.com/) много пакетов для нефтегаза - Canopy Geo, Virtual Core. они же поставляют пакет pyxll для альтернативы vba в excel, включая UDF. также есть открытыe пакеты xlwings & openpyxl.
Obspy, будучи разработанным сейсмологами, наверное не очень подходит для разведочной сейсмики, как раз в связи со спецификой больших массивов данных. Мне кажется, External Attribute для OpendTect от Wayne Mogg должен позволить сфокусироваться на алгоритмах расчета атрибутов, что как раз под силу геофизикам с навыками программирования, на тратя время и усилия на импорт/экспорт данных, создание приличной визуализации и тд.
Стендинг и Ко так, например, вообще все по палеткам считали - и, надо сказать, не шибко ошибались...
Дело же не в ошибках, а в скорости. Считать по палеткам - это так сказать проверенный метод, но медленный. Все равно что идти пешком, почти наверняка достигнешь цели, но за сколько.
Хм... ну вот здесь можно контраргумент привести: палетки как раз для скорости расчетов придуманы, если в наш цифровой век использовать их на компе, то все очень быстро. Ну и в некоторых расчетные методах исторически функции подгонялись, чтобы воспроизводить палетки (например, z-фактор по разным корреляциям - по сути воспроизведение палетки Стендинга-Каца).
Занятный тезис о написании компьютерных программ есть в этом видео - не знаю, правда или нет (где-то ближе к концу чуть ли не на последней минуте): https://www.youtube.com/watch?v=7wbRi0LJaLY