четвртак, 25 априла, 2024
Слободни професионалац

Слободан софтвер у науци (1. део)

Аутор: Никола Харди

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

1 Белешке и обавезе

1.1 Emacs org-mode

Emacs је напредан текст едитор са много модова који му додатно повећавају функционалност. За „хватање бележака“ током предавања користимо org-mode. Предности су што се све ради пречицама на тастатури или евентуално писањем команди. Белешке се читају у обичном текстуалном фајлу а постоји могућност за извоз у неки од „лепших“ формата, рецимо PDF, HTML, ODF или чак мапа ума у формату за програм FreeMind. Осим тога, постоји јако добра подршка за листе, набрајања, табеле, разне типове ознака, писање формула унутар редовног текста у LaTeX-у… Могуће га је користити и за много напредније ствари као што су белешке о финансијама или управљање обавезама.

1.2 taskwarrior

Taskwarrior или само task је конзолни програм за прављење спискова обавеза. Од једноставног прављења списка обавеза настала је цела наука, па тако и систем „Getting Things Done“ по угледу на који је и написан овај програм. Неке од његових могућности су груписање обавеза по пројектима, означавање таговима, обавезе које се понављају, мерење времена утрошеног на обављање неког задатка, почетак обавезе, процењено време, приоритети, крајњи рок, филтрирање по практично било којем критеријуму. Три битне ствари које треба да буду истакнуте су аутоматска процена „ургентности“ задатка на основу других већ задатих критеријума, синхронизација са списковима задатака на другим рачунарима путем различитих протокола (git, ssh а ради се и на taskd протоколу) и врло функционална и шарена статистика и графика која такође ради у конзоли. Изузетно користан програмчић за све који су вечито у обавезама.

1.3 Remind и wyrd

Remind је настао релативно давно, за разлику од taskwarrior-а. Његов адекватан опис би био напредан календар. Обавезе, односно подсетници се записују у конфигурациони фајл у виду наредби које Remind разуме и на основу којих прорачунава датуме за поједине догађаје. Неки од примера где се види права снага овог изузетног алата су рецимо подсетници сваког првог понедељка, сваког другог викенда, последње среде у месецу, сваког седмог месеца или било шта друго. Нисмо успели да пронађемо пример који није једноставно решив. Wyrd је графички програм за управљање remind фајловима. Заправо, wyrd је такође конзолни програм али користи добро познату библиотеку ncurses која пружа графику „у терминалу“.

1.4 Workrave

Workrave је ситан програмчић али некада је изузетно битан. За оне који проводе сате за рачунаром врло је честа појава да изгубе појам о времену. У таквим ситуацијама овај програмчић може бити врло користан јер закључава екран после одређеног периода времена и откључа га након паузе. Наравно да је могуће одложити паузу или је некада прескочити али није лоше направити паузу од петнаестак минута на сваких 45 мин рада. Неке од занимљивих могућности су синхронизација тo јест акумулирање проведеног времена за различитим рачунарима путем мреже, време се не мери када не користимо миш или тастатуру дужи временски период (рецимо минут) али постоји и режим за читање када време тече и тада. На почетку паузе, када се екран закључа, приказује се низ вежби за кичму, врат, очи и рамена…

2 Писање и визуелизација

2.1 LaTeX LyX

Математичари врло добро знају какви све проблеми постоје при форматирању докумената са озбиљнијим математичким изразима а и свима нама осталима се догодило да се наш документ једноставно „распадне“. LaTeX је програмски језик (ништа страшно!) који ове проблеме решава на један елегантан начин. Пишете LaTeX код а затим из њега генеришете PDF документ у којем текст неће „цурети“ на све стране. Ово је врло моћан алат за писање разних математичких израза и практично не постоји израз који није могуће написати. Осим математичких формула и симбола, постоје разне могућности и надоградње за руковање табелама, листама, изворним кодовима писаним у разним програмским језицима, илустрацијама, садржајима, индексима, литературом, референцама. Посебно је занимљиво што је могуће генерисати чак и презентације које многи сматрају за нијансу професионалнијим од оних у LibreOffice Impres-у. За презентације служи Beamer. За оне којима се не свиђа идеја да за писање једног обичног реферата или семинарског рада користе један програмски језик, постоји програм по имену LyX који у позадини пише LaTeX код за нас а сам интерфејс је опет сличан LibreOffice Writer-у.

2.2 gnuplot

Gnuplot је једноставно речено алат за цртање графика или плотовање. На овај алат се ослањају и многи други математички и статистички програми, на пример Octave. Прави назив овог алата је gnuplot и gnu у његовом називу нема директне везе са пројектом GNU (Gnu’s Not Unix). Настао је првенствено као помоћни алат за визуелизацију математичких функција мада данас има много ширу примену. Подржава дводимензионалне и тродимензионалне приказе. Осим командног интерфејса може се користити у скриптама и укључити у web презентације.

2.3 matplotlib

Matplotlib је Python библиотека за визуелизацију, слична програму gnuplot, односно визуелизацију података у власничком програму MATLAB. Идеја и повод за писaње ове библиотеке је да се програмерима омогући да на брз и једноставан начин графички представе податке које обрађују. На располагању су разни типови графикона, хистограми, криве, равни, поларни, контуре, дијаграми тока и мноштво других.

2.4 graphviz

Graphviz има могућности за визуелизацију разних типова графова, дијаграма и мрежа. Састоји се из више алата (dot, neato, fdp, sfdp, twopl, circo) који имају различиту намену. Графови се описују текстуалним фајловима а приказују (исцртавају) на различите начине, на пример из других програма, генерисањем растерских или векторских излазних фајлова… Постоје графичка окружења за многе програмске језике укључујући C, Python, Tcl и друге.

2.5 Dia

Dia је програм за цртање структуираних дијаграма, као што су UML дијаграми, дијаграми за представљање топологије рачунарских мрежа, дијаграми тока за графичко представљање алгоритама… Може се рећи да је алтернатива за комерцијални власнички програм Microsoft Visio. Dia има графички кориснички интерфејс који је приступачан и почетницима и не захтева претходно учење за разлику од рецимо graphviz-a. Постоји могућност за дефинисање додатних скупова симбола. Једна од занимљивих могућности је и цртање временских дијаграма за анализу рада дигиталних кола, не симулацију већ једноставно цртање таквих дијаграма.

2.6 Inkscape

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

У овом броју смо тек започели причу о слободном софтверу у науци, образовању, организацији времена и послова… У наредним бројевима ћемо наставити са представљањем слободног софтвера за напредне и просечне кориснике.