LINUX.ORG.RU

Курс mail.ru «Системное программирование на Perl»

 , , ,


9

5

Цель курса — Получить навыки работы в Unix-like ОС и практику системного программирования а также сделать собственный сервис с нуля

Если тебе интересны:
- разработка низкоуровневых сервисов,
- разработка сетевых приложений,
- создание высоконагруженных систем на языке Perl,
то будем рады видеть тебя на нашем курсе.
Самых успешных ждёт возможность стажировки в лучших проектах Mail.Ru Group.

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

Описание курса
Вводная лекция

anonymous

Проверено: Shaman007 ()
Ответ на: комментарий от Odalist

Какая-то хипстерская книжка. Наверняка есть аналогичная книжка о том, как читать машинные коды в hex-редакторе. У меня, кстати есть такая, только без слоников. Но если исходный код на ruby можно понять, прочитав короткую памятка, то вот эти буковки без чтения книжек со слоником не поддаются парсингу вообще никак. И учитывая то, что программы на том же common lisp куда более понятны - есть подозрение, что это от того , что синтаксис хаскелла - говно.

DRVTiny ★★★★★ ()
Ответ на: комментарий от rj45

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

DRVTiny ★★★★★ ()
Ответ на: комментарий от DRVTiny

Предлагаю сразу банить за «рашку». С тобой, дебик, после подобных комментариев не стоит вести дискуссий вообще. Желаю тебе испытать на себе прекрасную радость допиливания «свободных» и «поэтичных» скриптов хоть минимальной сложности. Сразу видно, что ты ни разу не работал в коллективе больше одного человека.

anonymous ()
Ответ на: комментарий от DRVTiny

что это от того , что синтаксис хаскелла - говно.

Желаю тебе испытать на себе прекрасную радость допиливания «свободных» и «поэтичных» скриптов хоть минимальной сложности.

www.linux.org.ru/news/development/14065138/page5?lastmod=1520534756708#commen...

Odalist ★★★★★ ()
Ответ на: комментарий от anonymous

Допиливал чужие приложения на perl неоднократно, пукан от этого не рвало, да и, надо признать, не так много людей на perl пишут так ужасно, как тут был пример на хаскелл. Меня перловики так наоборот всё больше аккуратности и меньшей замороченности кода учили (пусть это и не вполне помогло). Ну и да, анонимус-поцреот, призывающий банить и не любящий швабодку - это просто умора. Чувак, ты залогинься сначала, а то ж ты просто ничего в абсолютном вакууме.

DRVTiny ★★★★★ ()
Ответ на: комментарий от Odalist

Судя по бесподобным комментам, 8 марта не прошло для Odalist'а даром. Желаю лёгкого похмелья, чувак, ты очень забавный

DRVTiny ★★★★★ ()
Ответ на: комментарий от DRVTiny

как тут был пример на хаскелл.

Только не нужно тут проецировать свое неосиляторство. Haskell является одним из самых распространённых языков программирования с поддержкой отложенных вычислений. Вот тебе пример синтаксиса языка Haskell при реализации функции для вычисления факториала

fac :: Integer -> Integer
 fac 0 = 1
 fac n | n > 0 = n * fac (n - 1)

Odalist ★★★★★ ()
Ответ на: комментарий от DRVTiny

Я не пьющий.. Вот тебе пример-list_last.hs

last' :: [a] -> a
last' []     = undefined
last' [x]    = x
last' (x:xs) = last' xs

last'' :: [a] -> a
last'' = head . reverse

main = do
          print $ last'  "abcd"
print $ last'' "abcd"
Odalist ★★★★★ ()
Ответ на: комментарий от DRVTiny

Ты дебилом родился - им же и умрёшь

anonymous ()
Ответ на: комментарий от Odalist

Зачем ты тратишь время на необучаемых? Сказал человек, что он «не может» в хаскель, хоть и пытался, значит необучаемый, такие тоже бывают.

anonymous ()
Ответ на: комментарий от yoghurt

спрошу - rperl взлетел?

надо говорить: «били ли успешные запуски»?

anonymous ()
Ответ на: комментарий от anonymous

да не, пишут, вон тот же abills. но там адов пипец под капотом, да. база без foreign ключей (вернее, частично отрастают уже), собственный нескучный шаблонизатор, все дела.

NiTr0 ★★★★★ ()

Заметил интересную вещь

Обычно самые яростные хейтеры чего-либо - это неосиляторы. Их можно узнать по невнятным аргументам (типа Перл умер давно). Ну, в самом деле обидно, когда назвался программистом, а чего-то не понимаешь. Слёзы, сопли, а потом высер ненависти.
В Перле многие модные фичи (в том числе эти ваши лямбды, передача функции в качестве параметра и возврат анонимной функции например) появились очень и очень давно.
Вот что по-настоящему пугает пионера, так это две вещи: 1. Встроенность языка регулярных выражений непосредственно в сам Перл и 2. Внутреннее представление данных, которое (да, тут справедливый упрёк) при неумелом обращении сильно запутывает код для чтения.
Но это вполне победимо, просто надо аккуратнее работать и ещё добавить в мозг некоторые новые паттерны. В принципе - довольно простой, логичный и понятный язык.
Когда давным-давно приступил к изучению UNIX-like way, то выбрал этот язык в качестве универсального (веб + системные скрипты) и текстовый редактор vi - как наиболее распространённого. Обе штуки неоднократно сослужили мне добрую службу.
Pyton любим пионерами за то, что он их организует в плане оформления кода. Вот хочет эдакий пионер написать неотформатированную хрень, язык его быстренько на место и поставит.
Нет ничего страшного в том, чтобы читать чей-то незнакомый код на Перле. Во-первых, новому учишься, развивает гибкость мышления. Да, тут кое-кто писал про ООП как об универсальном подходе. Увы, это не так. Как раз ООП головного мозга - это пихать данный подход везде, где только можно.
Пользователь с котиком на аватарке полностью оправдывает свой ник.

solom ()
Ответ на: комментарий от Odalist

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

Просто сравни, например, с языком Crystal, где я не зная многих конструкций - узнавал об их существовании, читая код библиотек из поставки языка. И это при том, что на Ruby до сих пор ни слова не написал. Ну т.е. были по началу удивительные вещи типа метода «#<<», но все эти удивления очень быстро прошли: фундаментальные основы языка просты как три копейки.

Хаскел же выглядит как выкладки из моей старой книжки про компиляторы. Нечто подобное было в yacc+lexx

DRVTiny ★★★★★ ()
Ответ на: комментарий от anonymous

RPerl отлично взлетает простым use RPerl - и действительно делает perl пригодным для быстрой математики без явного использования xs-ок. Вопрос только в том, что оно кроме математики ни на что не годится пока.

DRVTiny ★★★★★ ()
Ответ на: комментарий от anonymous

В аду место для всех «для программистов на» общее.

Воистину! Или называйтесь «кодер на...»

anc ★★★★★ ()
Ответ на: комментарий от slackwarrior

First RDBMS version released in 1979 was called Oracle V2.

у гугла вообще сразу v8. гораздо более серьёзные дяди.

anonymous ()
Ответ на: Заметил интересную вещь от solom

Re: Заметил интересную вещь

просто надо аккуратнее работать

Стандартная мантра перлят и вообще всех адептов низкоуровневой херни.

anonymous ()
Ответ на: комментарий от Odalist

Факториал это каждый школьник запишет. А слабо правила Лопиталя так же ясно и компактно записать?

Bobby_ ()
Ответ на: комментарий от Odalist

fac n | n > 0 = n * fac (n - 1)

ну справедливости ради именно такой факториал не очень:

можно посмотреть на 100000 («thunk» будет жирный), а fac !n - не стандарт; так что тут немного подметено под ковер

anonymous ()
Ответ на: комментарий от DRVTiny

Я вообще не противник перла, если что. Я даже вполне восхищаюсь перлистами. Им требуется больше извилин, чем питонистам. Ну и вообще он ближе к хардкорному юниксу. Однако я считаю, что в энтерпрайзе критерий читаемости программы - один из важнейших. Очень негативно отношусь к ковбоям, который пишут на всякой экзотике и бодро гарцуют со словами «а нам пофигу, что никто этого не знает. мне захотелось, я особенный». Общеизвестным фактом является то, что синтаксис перла необычен (игра с контекстами, что там еще необычного? уже не помню), а питон создавался изначально с расчетом на читаемость. Скорость же выполнения у такого класса языков сравнимая. Так что в нынешних условия перл менее предпочтителен. Он уже стал экзотикой.

crypt ★★★★ ()
Последнее исправление: crypt (всего исправлений: 4)
Ответ на: Заметил интересную вещь от solom

Pyton любим пионерами

начнем с того, что он python.

Вот хочет эдакий пионер

см. мои слова выше насчет ковбоев. не пионер, а ковбой, которому море по колено.

Нет ничего страшного в том, чтобы читать чей-то незнакомый код на Перле.

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

то выбрал этот язык в качестве универсального (веб + системные скрипты) и текстовый редактор vi - как наиболее распространённого.

похвально, но ты проспал момент, когда python стал идти во всех дистрах by default. следить надо было за изменением ситуации. а теперь ты сам похож на

Обычно самые яростные хейтеры чего-либо - это неосиляторы.

crypt ★★★★ ()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от crypt

Общеизвестным фактом является то, что синтаксис перла необычен (игра с контекстами, что там еще необычного? уже не помню)

Дело даже не в синтаксисе. Ситуация, когда возвращаемое значение зависит не только от аргументов, но еще и от контекста вызова, это немножко жесть. Это делает перл радикально иным. Ну и добавляет синтаксического мусора конечно. Вообще, если посмотреть рутинный перловый код, то там все стараются работать со ссылками на объекты, а контексты юзают только от безысходности со встроенными процедурами и операторами. В итоге получается такой питон конкретно зашумленный закорючками. Потом ветераны удивляются, чего это народ валит толпами на питон (уже почти все там). Чтобы искренне любить перл нужно быть немножко поехавшим.

bread ()
Ответ на: комментарий от Bobby_

А слабо правила Лопиталя так же ясно и компактно записать?

Банан велик, но кожура еще больше ©

Odalist ★★★★★ ()
Ответ на: комментарий от DRVTiny

что тот, кто никогда не открывал книгу со слоником по Хаскеллу,

Ну вы даете.....вы как те, из поколения Coca-Cola....все и сразу, без каких либо затрат времени...

Хаскел же выглядит как выкладки из моей старой книжки про компиляторы. Нечто подобное было в yacc+lexx

Я не знаю, что там вам выглядит, но имейте в виду, что первая реализация компилятора и интерпретатора языка Perl 6, Pugs, была написана на Haskell за несколько месяцев. И еще. Haskell всё чаще используется в коммерческой среде. Этому способствует принятая в сообществе традиция выпускать библиотеки под либеральными лицензиями. Но как правильно подметил аноним, я трачу время на не обучаемого персонажа....доброго дня вам.

Odalist ★★★★★ ()
Ответ на: комментарий от anonymous

Желаю тебе испытать на себе прекрасную радость допиливания «свободных» и «поэтичных» скриптов хоть минимальной сложности. Сразу видно, что ты ни разу не работал в коллективе больше одного человека.

Эммм а с каких это пор быдлокод стал привязан к языку? Я вот и на сишечьке и на асме видел потрясающие шедевры, включая варианты сравнения нуля с нулем и с блоком else.

anc ★★★★★ ()
Ответ на: комментарий от bread

чего это народ валит толпами на питон (уже почти все там). Чтобы искренне любить перл нужно быть немножко поехавшим.

Уж простите, но ЯП не телка что бы его любить или не любить. Это что-то из разряда я люблю зеленый молоток, но не люблю красную бензопилу. Всему свое применение.

anc ★★★★★ ()
Ответ на: комментарий от anc

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

bread ()
Ответ на: комментарий от bread

Никаких других причин кодить на перле сегодня нет.

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

anc ★★★★★ ()
Ответ на: комментарий от Odalist

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

yoghurt ★★★★★ ()
Ответ на: комментарий от Odalist

Я всего лишь констатировал тот факт, что синтаксис у Хаскела ппц марсианский, никакой perl с этим даже близко не стоял. Ну т.е. можно и на perl писать намеренно обфусцированный код, но Впш-то пример был совсем не на тему того, насколько ужасно выглядит хаскелл, если постараться.

Я рад, что компилятор perl6, тормознутость которого давно стала притчей во языцех, написан на Хаскелл, но причём здесь это? Как и некие феерически либеральные лицензии. Кстати, а что лицензии библиотек perl как-то ограничивает их применение?

DRVTiny ★★★★★ ()
Ответ на: комментарий от bread

А какие есть причины кодить на python? Зачем нужен этот вязкий клей для си++ кода, если для всякой бигдаты есть прекрасный язык R со всем его умным и не чванливым при этом сообществом, есть Julia, воплощающая самые современные концепции ЯП и весьма быстрая. А для остального - я вообще теряюсь в догадках, зачем этот мерзотного вида быдлоязык нужен. Вот вам не нравится перл (хотя сами на нём ни строчки не написали или написали дрянь какую-то), а мне пайтон не нравится. И что?

DRVTiny ★★★★★ ()
Ответ на: комментарий от bread

Активно пользуюсь контекстом вызова - и счастлив от того, что такая возможность есть. ЧЯДНТ?

DRVTiny ★★★★★ ()
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от crypt

Учитывая тот факт, что perl уже лет 20 подряд упорно поддерживает обратную совместимость, а python 3 таки содержит breaking changes - питонщики для запуска старого кода вообще вынуждены пользоваться по сути другим интерпретатором, не тем, под который сами пишут. И Вам не кажется, что этот странный пример от Капитана одинаково верен для любого ЯП? Ну т.е. вероятность того, что читающий недокументированный и потом слепо его запускающий, чтобы узнать «а чё там выйдет» окажется в дураках - весьма высока, разве нет? Собственно, если не говорить о такого рода детских примерах непонятно вообще для чего приводимых в качестве подкрепления отсутствующей напрочь аргументации - давайте лучше поговорим о реальном примере, когда и приложение само по себе документировано, и написано оно неплохо, вот даже на perl'е, но использует при этом изрядное количество сторонних библиотек, причём на момент написания приложения версии библиотек сильно отличались от тех, которые есть сейчас. Что нужно делать предварительно для того, чтобы потом на авось запускать код? Читать только комментарии к приложению? Читать только документацию библиотек, которые могут быть в совокупности объёма на порядки сложнее самого приложения?

DRVTiny ★★★★★ ()
Ответ на: комментарий от crypt

Если говорить о читаемости, то выше товарищ приводил пример на Хаскелл, который просто нечитабелен, но при этом дико популярен у тырпрайза, а язык Ruby, например, легко уделает пайтон по читабельности, но что-то не особо популярен уже. При этом perl может абсолютно любым: и очень легко читаемым, и лютой кашей, на то у него и девиз «есть больше одного способа сделать это». А в итоге тырпрайз выбирает весьма страшненький go даже без православного ООП и Java, которая конечно читабельна, но при этом ппц многословна. В общем, вы правда верите в то, что кто-то будет использовать тот или иной язык потому что каким-то тупым винтикам в большом бизнес-механизме он будет казаться более читабельным?

DRVTiny ★★★★★ ()
Ответ на: комментарий от DELIRIUM

В пистоне уже пофиксили баг с отступами?

Который?

question4 ★★★★★ ()
Ответ на: комментарий от bread

Никаких других причин кодить на перле сегодня нет.

Прошлой осенью я был вынужден изучить Перл, чтобы писать наколеночные скрипты для обработки YAML. 10-20 строк длиной. Под другие языки столь же простых в использовании библиотек не нашлось. Можешь предложить что-то получше? www.linux.org.ru/forum/development/13701285

question4 ★★★★★ ()
Ответ на: Извините от Shaman007

Re: Извините

Что там было? Показывает пустую страницу.

question4 ★★★★★ ()
Ответ на: комментарий от anonymous

скриптового языка
для системных нужд

/0

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

  • читабельности для непосвященного
  • наличии соответствующих спецов

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

arcanis ★★★ ()
Последнее исправление: arcanis (всего исправлений: 2)
Ответ на: комментарий от bread

а контексты юзают только от безысходности

И много ты кода пересмотрел? Контексты - это фича. Упарываться ими от какой-то безысходности - оксюморон. Не хочешь - не используешь. Perl не Python, он ни к чему не обязывает.

Чтобы искренне любить перл нужно быть немножко поехавшим.

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

chinarulezz ★★★★★ ()
Ответ на: комментарий от anc

Уж простите, но ЯП не телка что бы его любить или не любить. Это что-то из разряда я люблю зеленый молоток, но не люблю красную бензопилу. Всему свое применение.

А телку зачем любить? Всему свое применение.

chinarulezz ★★★★★ ()
Ответ на: комментарий от question4

Я твой тред не читал, но видел что ты там сравниваешь текст с переменной по умолчанию. Это не очень хорошая идея, но если уж дошло дело, то лучше делать:

/foo/
Чем:
$_ eq 'foo'

anonymous ()

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

У Perl'а очень годное и дружелюбное сообщество, любую непонятную конструкцию тебе объяснят и скажут как написать выразительней, если это необходимо.

Perl действительно перестал быть просто инструментом, он породил вокруг себя целую культуру

Я видел говнокод на Perl, но непонятным он не был. Скорее неуклюжим и избыточным. Проблемы у такого кода были общечеловеческие, связаны с хорошим стилем и применимы к любому ЯП.

anonymous ()
Ответ на: комментарий от arcanis

могу легко редактировать написанный им код

Ну так! По читабельности лучше Ruby разве что QBasic :) Только надо бы не забывать ветку создавать для своих наработок и потом делать слияние.

DRVTiny ★★★★★ ()
Ответ на: комментарий от question4

Ну вот тот же скрипт на питоне.

import sys
import yaml

stats = {
        'STR_PISTOLS': (20, 15, 100),
        'STR_BOWS': (20, 15, 100),
        'STR_SMGS': (20, 15, 100),
        'STR_SHOTGUNS': (50, 40, 100),
        'STR_RIFLES': (50, 40, 100),
        'STR_SNIPER_RIFLES': (50, 40, 100),
        'STR_CANNONS': (65, 50, 100),
        'STR_MACHINE_GUNS': (65, 50, 100),
        'STR_LAUNCHERS': (80, 80, 100),
        }

res = {'items': []}

for item in yaml.load(open(sys.argv[1]))['items']:
    if 'categories' not in item or not set(item['categories']).intersection(stats.keys()) or 'STR_CLIPS' in item['categories']:
        continue
    new_item = {'type': item['type']}
    for k, v in stats.items():
        if k in item['categories']:
            new_item['meleePower'], new_item['tuMelee'], new_item['accuracyMelee'] = v
            break
    res['items'].append(new_item)

yaml.dump(res, open('out.rul', 'w'), default_flow_style=False)

pawnhearts ★★★★ ()
Последнее исправление: pawnhearts (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.