Које језике треба да учите за науку о подацима?

Наука података је узбудљиво поље за рад, комбинујући напредне статистичке и квантитативне вештине са реалним програмским способностима. Постоји много потенцијалних програмских језика за које би амбициозни научник могао размотрити могућност специјализације.

Иако не постоји тачан одговор, постоји неколико ствари које треба узети у обзир. Ваш успех као научника података зависиће од многих тачака, укључујући:

Специфичност

Што се тиче напредне науке о подацима, сваки пут ћете до сада измишљати точак. Научите да савладате разне пакете и модуле који се нуде на вашем језику. Колико је то могуће зависи од тога који су вам пакети специфични за домену на располагању!

Генералност

Врхунски научник за податке имаће добре свестране вештине програмирања, као и способност укрштања бројева. Већина свакодневног рада у науци података врти се око проналажења и обраде сирових података или „чишћења података“. У томе вам неће помоћи никакви фенси пакети машинског учења.

Продуктивност

У често убрзаном свету комерцијалне науке о подацима много се може рећи за брзо обављање посла. Међутим, то је оно што омогућава увлачење техничког дуга - и само разумним праксама то се може минимизирати.

Перформансе

У неким случајевима је витално оптимизовати перформансе вашег кода, посебно када се ради о великим количинама критичних података. Састављени језици су обично много бржи од протумачених; исто тако су статички откуцани језици знатно више отпорни него динамички откуцани. Очигледна трговина је против продуктивности.

У одређеној мери, то се може посматрати као пар осе (опште-специфичност, перформансе-продуктивност). Сваки од доњих језика спада негде у ове спектре.

Имајући у виду ове основне принципе, погледајмо неке од популарнијих језика који се користе у науци о подацима. Следи комбинација истраживања и личног искуства мене, пријатеља и колега - али то никако није дефинитивно! Отприлике по редоследу популарности, иде следеће:

Р.

Оно што треба да знате

Објављен 1995. године као директни потомак старијег програмског језика С, Р је од тада прелазио из снаге у снагу. Написан на језику Ц, Фортран и сам, пројекат тренутно подржава Р фондација за статистичко рачунање.

Лиценца

Бесплатно!

Прос

  • Изврсна палета висококвалитетних, специфичних за домену и отворених кода. Р има пакет за готово све квантитативне и статистичке примене које се могу замислити. То укључује неуронске мреже, нелинеарну регресију, филогенетику, напредно цртање и многе, многе друге.
  • Основна инсталација долази са врло свеобухватним, уграђеним статистичким функцијама и методама. Р такође посебно добро рукује матричном алгебром.
  • Визуализација података је кључна снага уз употребу библиотека као што је ггплот2.

Цонс

  • Перформансе. Не постоје два начина за то, Р није брз језик.
  • Специфичност домена. Р је фантастичан за потребе статистике и науке о подацима. Али мање за програмирање опште намене.
  • Необично. Р има неколико необичних карактеристика које би могле препознати програмере са искуством у другим језицима. На пример: индексирање из 1, користећи више оператора доделе, неконвенционалне структуре података.

Пресуда - „сјајно за шта је дизајнирано“

Р је моћан језик који се истиче у широком спектру апликација за статистику и визуелизацију података, а отворени извор омогућава врло активну заједницу сарадника. Његов недавни раст популарности сведочи о томе колико је ефикасан у свом послу.

Питхон

Оно што треба да знате

Гуидо ван Россум представио је Питхон давне 1991. године. Од тада је постао изузетно популаран језик опште намене и широко се користи у заједници науке о подацима. Тренутно су главне верзије 3.6 и 2.7.

Лиценца

Бесплатно!

Прос

  • Питхон је веома популаран, уобичајени програмски језик опште намене. Има широк спектар наменских модула и подршке заједнице. Многе мрежне услуге пружају Питхон АПИ.
  • Питхон је лак језик за учење. Ниска баријера за улазак чини га идеалним првим језиком за оне који се тек баве програмирањем.
  • Пакети као што су панде, сцикит-леарн и Тенсорфлов чине Питхон солидном опцијом за напредне апликације машинског учења.

Цонс

  • Безбедност типова: Питхон је динамички куцани језик, што значи да морате бити пажљиви. Грешке у типу (као што је прослеђивање низа као аргумента методи која очекује цео број) с времена на време се очекују.
  • За специфичне сврхе статистичке анализе и анализе података, Р-ов широк спектар пакета даје му мало предност у односу на Питхон. За језике опште намене постоје брже и сигурније алтернативе за Питхон.

Пресуда - „одличан свестран“

Питхон је врло добар избор језика за науку о подацима, и то не само на почетном нивоу. Велики део процеса науке о подацима врти се око ЕТЛ процеса (екстракција-трансформација-учитавање). То Питхонову општост чини идеално прилагођеном. Библиотеке попут Гоогле-овог Тенсорфлов чине Питхон веома узбудљивим језиком за рад у машинском учењу.

СКЛ

Оно што треба да знате

СКЛ ('Струцтуред Куери Лангуаге') дефинише, управља и тражи релационе базе података. Језик се појавио 1974. године и од тада је претрпео многе примене, али основни принципи остају исти.

Лиценца

Разликује се - неке имплементације су бесплатне, друге власничке

Прос

  • Веома ефикасан у постављању упита, ажурирању и манипулацији релационим базама података.
  • Декларативна синтакса чини СКЛ често врло читљивим језиком. Нема двосмислености око тога шта SELECT name FROM users WHERE age >18 треба да уради!
  • СКЛ се веома користи у читавом низу апликација, што га чини врло корисним језиком за упознавање. Модули попут СКЛАлцхеми чине интеграцију СКЛ-а са другим језицима директном.

Цонс

  • Аналитичке могућности СКЛ-а су прилично ограничене - осим прикупљања и збрајања, бројања и просечења података, ваше могућности су ограничене.
  • За програмере који долазе из императивне позадине, СКЛ-ова декларативна синтакса може представити криву учења.
  • Постоји много различитих примена СКЛ-а као што су ПостгреСКЛ, СКЛите, МариаДБ. Сви су довољно различити да би међуоперативност могла да буде главобоља.

Пресуда - „ванвременска и ефикасна“

СКЛ је кориснији као језик за обраду података него као напредни аналитички алат. Ипак, толико процеса науке о подацима зависи од ЕТЛ-а, а дуготрајност и ефикасност СКЛ-а доказ су да је то веома користан језик који би савремени научник могао да зна.

Јава

Оно што треба да знате

Јава је изузетно популаран језик опште намене који ради на (ЈВМ) Јава виртуелној машини. То је апстрактни рачунски систем који омогућава беспрекорну преносивост између платформи. Тренутно подржава Орацле Цорпоратион.

Лиценца

Верзија 8 - Бесплатно! Старије верзије, власништво.

Прос

  • Свеприсутност. Многи модерни системи и апликације изграђени су на позадини Јаве. Моћна је способност интегрисања метода науке о подацима директно у постојећу базу кодова.
  • Снажно куцано. Јава није глупост када је у питању осигурање сигурности типова. За критичне апликације великих података ово је непроцењиво.
  • Јава је компајлирани језик високе перформансе, опште намене. То га чини погодним за писање ефикасног ЕТЛ производног кода и рачунски интензивних алгоритама машинског учења.

Цонс

  • За ад-хоц анализе и посвећеније статистичке апликације, Јава-ов опширност чини га мало вероватним првим избором. Динамички уписани скриптни језици као што су Р и Питхон пружају много већу продуктивност.
  • У поређењу са језицима специфичним за домен као што је Р, у Јави није доступан велики број библиотека за напредне статистичке методе.

Пресуда - „озбиљан кандидат за науку о подацима“

Много се може рећи о учењу Јаве као првог избора језика науке о подацима. Многе компаније ће ценити способност неприметне интеграције производног кода за науку о подацима директно у своју постојећу базу кодова, а открићете да су перформансе и сигурност типа Јава стварне предности.

Међутим, остаћете без низа пакета специфичних за статистику доступних другим језицима. То је рекао, дефинитивно један који треба размотрити - посебно ако већ знате један од Р и / или Питхон-а.

Сцала

Оно што треба да знате

Сцала га је развио Мартин Одерски, а објављен 2004. године, језик је који ради на ЈВМ-у. То је језик са више парадигми који омогућава објектно оријентисани и функционални приступ. Оквир рачунарског кластера Апацхе Спарк написан је у Скали.

Лиценца

Бесплатно!

Прос

  • Сцала + Спарк = Рачунарство кластера високих перформанси. Сцала је идеалан избор језика за оне који раде са великим бројем података.
  • Мултипарадигматично: Програмери Сцала могу имати најбоље од оба света. На располагању су им објективно оријентисане и функционалне програмске парадигме.
  • Сцала је компајлирана у Јава бајт код и ради на ЈВМ-у. Ово омогућава међусобну способност рада са самим језиком Јава, што Сцала чини врло моћним језиком опште намене, а истовремено је и погодан за науку о подацима.

Цонс

  • Сцала није једноставан језик за покретање ако тек почињете. Најбоље је да преузмете сбт и подесите ИДЕ као што је Ецлипсе или ИнтеллиЈ са одређеним додатком Сцала.
  • Синтакса и систем типова често се описују као сложени. Ово чини стрму кривуљу учења за оне који долазе из динамичних језика као што је Питхон.

Пресуда - „савршено, за прикладно велике податке“

Када је реч о коришћењу кластер рачунара за рад са великим подацима, Сцала + Спарк су фантастична решења. Ако имате искуства са Јавом и другим статички откуцаним језицима, такође ћете ценити ове карактеристике Сцале.

Ипак, ако се ваша апликација не бави количинама података који оправдавају додатну сложеност Сцале, вероватно ћете видети да је ваша продуктивност много већа ако користите друге језике као што су Р или Питхон.

Јулиа

Оно што треба да знате

Објављена пре нешто више од 5 година, Јулиа је оставила утисак у свету нумеричког рачунарства. Његов профил је подигнут захваљујући раном усвајању од стране неколико главних организација, укључујући многе у финансијској индустрији.

Лиценца

Бесплатно!

Прос

  • Јулиа је ЈИТ ('јуст-ин-тиме') компајлирани језик, што јој омогућава да нуди добре перформансе. Такође нуди једноставност, могућности динамичког куцања и скриптирања интерпретираног језика као што је Питхон.
  • Јулиа је наменски дизајнирана за нумеричку анализу. Способан је и за програмирање опште намене.
  • Читљивост. Многи корисници језика ово наводе као кључну предност

Цонс

  • Зрелост. Као нови језик, неки корисници Јулије доживели су нестабилност при коришћењу пакета. Али сам основни језик је наводно довољно стабилан за производну употребу.
  • Ограничени пакети су још једна последица језичке младости и мале развојне заједнице. За разлику од давно успостављених Р и Питхона, Јулиа још увек нема избор пакета.

Пресуда - „једна за будућност“

Главно питање са Јулијом је оно за које се не може кривити. Као недавно развијени језик, он није толико зрео или спреман за производњу као његове главне алтернативе Питхон и Р.

Али, ако сте спремни да будете стрпљиви, постоји сваки разлог да пажљиво обратите пажњу како ће се језик развијати у наредним годинама.

МАТЛАБ

Оно што треба да знате

МАТЛАБ је устаљени нумерички рачунски језик који се користи у академским круговима и индустрији. Развио га је и лиценцирао МатхВоркс, компанија основана 1984. године за комерцијализацију софтвера.

Лиценца

Власништво - цене варирају у зависности од случаја употребе

Прос

  • Дизајниран за нумеричко рачунање. МАТЛАБ је погодан за квантитативне примене са софистицираним математичким захтевима као што су обрада сигнала, Фоуриерове трансформације, матрична алгебра и обрада слике.
  • Визуализација података. МАТЛАБ има сјајне уграђене могућности цртања.
  • МАТЛАБ се често предаје као део многих додипломских курсева из квантитативних предмета као што су физика, инжењерство и примењена математика. Као последица тога, широко се користи у овим областима.

Цонс

  • Власничка лиценца. У зависности од случаја употребе (академски, лични или пословни), можда ћете морати да потражите скупу лиценцу. Доступне су бесплатне алтернативе, попут Оцтаве. То је нешто о чему бисте требали стварно размотрити.
  • МАТЛАБ није очигледан избор за програмирање опште намене.

Пресуда - „најбоље за математички интензивне примене“

Широка употреба МАТЛАБ-а у низу квантитативних и нумеричких области у индустрији и академским круговима чини га озбиљном опцијом за науку о подацима.

Јасан случај коришћења био би када ваша апликација или свакодневна улога захтева интензивну, напредну математичку функционалност. Заправо, МАТЛАБ је посебно дизајниран за ово.

Други језици

Постоје и други уобичајени језици који могу или не морају бити занимљиви научницима података. Овај одељак пружа брзи преглед ... наравно, има довољно простора за расправу!

Ц ++

Ц ++ није уобичајен избор за науку о подацима, иако има муњевите перформансе и широко распрострањену популарност. Једноставни разлог може бити питање продуктивности наспрам перформанси.

Како каже један корисник Куоре:

„Ако пишете код да бисте направили неку ад хоц анализу која ће се вероватно покренути само једном, да ли бисте радије потрошили 30 минута на писање програма који ће се покренути за 10 секунди или 10 минута на писање програма који ће се покренути за 1 минуту? “

Тип има поенту. Ипак, за озбиљне перформансе на нивоу производње, Ц ++ би био одличан избор за примену алгоритама машинског учења оптимизованих на ниском нивоу.

Пресуда - „не за свакодневни рад, али ако су перформансе кључне ...“

ЈаваСцрипт

Са порастом Ноде.јс-а последњих година, ЈаваСцрипт постаје све озбиљнији језик на страни сервера. Међутим, његова употреба у доменима науке о подацима и машинског учења до данас је ограничена (мада наплата браин.јс и синаптиц.јс!). Има следеће недостатке:

  • Касно у игру (Ноде.јс има само 8 година!), Што значи ...
  • Доступно је мало релевантних библиотека и модула за науку о подацима. То не значи стварни главни интерес или замах
  • Што се перформанси тиче, Ноде.јс је брз. Али ЈаваСцрипт као језик није без критичара.

Снаге чвора су у асинхроном У / И, широкој употреби и постојању језика који се компајлирају у ЈаваСцрипт. Дакле, могуће је да би се корисни оквир за науку података и обраду ЕТЛ-а у стварном времену могао спојити.

Кључно питање је да ли би ово могло понудити нешто другачије од онога што већ постоји.

Пресуда - „мора се много учинити пре него што се ЈаваСцрипт може узети као озбиљан језик науке о подацима“

Перл

Перл је познат као „швајцарски војски нож програмских језика“, због своје свестраности као скриптни језик опште намене. Има много заједничког са Питхоном, јер је динамички куцани скриптни језик. Али, није видео ништа попут популарности коју Питхон има на пољу науке о подацима.

Ово је помало изненађујуће, с обзиром на његову употребу у квантитативним областима као што је биоинформатика. Перл има неколико кључних недостатака што се тиче науке о подацима. Не истиче се брзо, а његова синтакса је изразито непријатна. Није постојала иста тежња ка развоју библиотека специфичних за науку података. И у било ком пољу, замах је кључан.

Пресуда - „користан језик скрипти за општу намену, али не нуди стварне предности за ваш ЦВ о науци о подацима“

Руби

Руби је још једна општа намена, динамички куцани интерпретирани језик. Ипак, такође није приметио исто усвајање науке о подацима као Питхон.

Ово може изгледати изненађујуће, али је вероватно резултат Питхонове доминације у академској заједници и позитивног ефекта повратних информација. Што више људи користи Питхон, више модула и оквира се развија, а више људи ће се окренути Питхону.

Пројекат СциРуби постоји да би Руби-у донео научно рачунарску функционалност, попут матричне алгебре. Али за сада Питхон и даље предњачи.

Пресуда - „још није очигледан избор за науку о подацима, али неће наштетити биографији“

Закључак

Па, ево га - брзи водич за то које језике треба узети у обзир за науку о подацима. Овде је кључно разумети ваше захтеве за коришћењем у смислу општости у односу на специфичност, као и вашег личног жељеног развојног стила перформанси у односу на продуктивност.

Редовно користим Р, Питхон и СКЛ, јер се моја тренутна улога углавном фокусира на развој постојећих цјевовода података и ЕТЛ процеса. Ови језици дају праву равнотежу општости и продуктивности за обављање посла, уз могућност употребе напреднијих Р-ових статистичких пакета када је то потребно.

Међутим - можда већ имате неко искуство са Јавом. Или можда желите да користите Сцала за велике податке. Или сте можда заинтересовани за пројекат Јулиа.

Можда сте научили МАТЛАБ на универзитету или желите да пружите прилику СциРуби-у? Можда имате сасвим другачији предлог. Ако јесте, оставите одговор доле - радујем се вашем јављању!

Хвала за читање!