
Программирование *
Искусство создания компьютерных программ
Разбор опций командной строки в UNIX-подобных системах
Введение
Одной из важных задач любой программы, будь она консольной или графической является интерпретация аргументов командной строки. Формально аргументами называются все слова в командной строке(в том числе и имя самой команды) разбитые разделителем (как правило, это пробел и табуляция), кавычки же позволяют включать разделители в аргументы.
Аргументы можно подразделить на опции и операнды. Опции изменяют поведение программы или предоставляют ей дополнительную информацию. У опции могут быть свои аргументы, которые являются информацией необходимой только для этой опции.
Вступительное слово
В школе за сочинения у меня были одни двойки и тройки, поэтому сразу извините за нескладный слог в этом и последующих топиках =)
Недавний опрос показал, что хабралюди интересуются вопросами разработки под unix-like ОС. Всвязи с этим было решено создать этот блог. Его тематика несколько шире, чем задумывалась первоначально(программирование на Си под *nix — так уж сложилось, что хорошо знаю я только этот язык программирования), но я наивно надеюсь, что сознательные хабралюди помогут с наполнением блога статьями на темы, о которых я не имею ни малейшего представления =)
Хотелось бы услышать в комментариях пожелания, что бы вы хотели видеть в этом блоге, в каком ключе статьи («для самых маленьких» или же для матерых кодеров), на какие темы и т.п.
Всем успехов.
Три парадигмы F#
Введение
Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
Премию Тьюринга опять дали женщине
Самую престижную в области информатики Премию Тьюринга в этом году опять дали женщине. Опять, потому что это произошло во второй раз за последние три года. То есть в последнее время лучшими программистами и компьютерными учёными мира признаются не мужчины, а женщины.В этом году премию присудили Барбаре Лисков (Губерман), профессору Массачусетского технологического института. Барбара Лисков руководила разработкой таких языков программирования как CLU и Argus в 1970-х и 80-х годах, а также объектно-ориентированной системы управления базами данных Thor.
Вместе с Дженнет Уинг, Лисков разработала в 1987 году принцип подстановки — концепцию определения подтипа, очень важный элемент в логике объектно-ориентированных языков программирования. Её изобретения стали основой для разработки языков C++, Java и C#. Кстати, она является первой в США женщиной, получившей степень доктора компьютерных наук (в далёком 1968 году).«Всякий раз, когда вы обмениваетесь электронной почтой с другом, проверяете банковский счёт в интернете или запускаете поиск Google, вы пользуетесь плодами её исследований», — сказал проректор МТИ Рафаэль Рейф, комментируя решение жюри.
via MIT News
Особенности влияния изучения нескольких языков программирования
true ? false ? 5 : 6 : true ? 7 : 8Высчитали? А теперь идём под хабракат
Martin Fowler — GUI Architectures. Часть 3
Предыдущая часть здесь. Оригинал статьи — здесь.
Влюбляемся в F#: Доза 2: Строим фрактальное изображение, или множество Мандельброта своими руками
На прошлом уроке мы рассмотрели основные понятия функционального программирования, теперь давайте попробуем применить их на практике. Поскольку функциональное программирование, как вы наверное поняли, идеально подходит для решения математических задач, то рассмотрим именно такую задачу — построение изображения множества Мандельброта, самого известного фрактального множества.
Martin Fowler — GUI Architectures. Часть 2
На этот раз затронута тема MVC. Фаулер весьма популярно про него написал. Я постарался популярно перевести:) Теперь можно понять, почему все носятся с MVC, как с писанной торбой. И, кстати, Фаулер прав — очень много где и много кто воспринимают MVC по-своему. Сам Фаулер пишет про оригинальный MVC, который работал на платформе Smalltalk. Очень познавательно.
Предыдущая часть тут. Оригинал статьи тут. Очень желательно прочитать первую часть, потому как Фаулер там определил общую задачу-пример, которую он решает при помощи описываемых архитектур. Если не прочитать про эту задачу, будет немного не ясно, про что речь.
Следующую часть перевода напишу, когда разозлюсь и возьму себя в руки.
Martin Fowler — GUI Architectures. Часть 1
Вообще говоря, приседал долго, хотел сделать все сразу и быстро. Пальцем в небо. Иногда
Я не профессиональный переводчик и мог что-то неправильно понять (и даже кое-где сделал пометки в скобках), но вы в любом случае обладаете возможностью прочитать статью в оригинале. Надеюсь, что перевод такой интересной статьи поможет кому-то улучшить свои навыки и расширит кругозор.
Покорим Ruby вместе! Капля тринадцатая
Active Record придерживается принципов ORM: базы данных могут быть представлены в виде объектно-ориентированного кода, где таблицы — это классы, строки таблицы — объекты, а поля — атрибуты объекта. Однако Active Record отличается от других ORM библиотек, например, от
Hibernate из Java, тем, что здесь нет необходимости начальной конфигурации — все работает «из коробки». Active Record написан на чистом Руби, что позволяет нам работать с ним, как с обычным классом: использовать наследование, переписывать методы, использовать метапрограмминг и др. Да, атрибуты объекта в большинстве случаев заполняются с помощью SQL-запросов и точно также атрибуты записываются назад в таблицу. Но все, что происходит между этими двумя процессами — обычная работа с объектом Руби. Стоит понимать «отдельность» существования записей базы данных и объектов Руби: подчас база данных будет отличаться от класса Руби. Ближайшие события
Покорим Ruby вместе! Капля двенадцатая
open-uri
Давайте каждый откроет свою персональный Хаброцентр (ну или чужой, если все еще не обзавелись инвайтом ;) с адресом вида %username.habrahabr.ru. Наша задача – извлечь из полутысячи строк HTML-кода значение нашей кармы. Предполагаем, что для этого нам необходимо сохранить код страницы в файл, открыть и прочитать его и, используя регулярные выражения, получить необходимую информацию.
Библиотека
open-uri сделает первую часть работы за нас. После включения ее в программу становится доступен метод open, который позволяет открывать как локальные файлы, так и URL:Влюбляемся в F#: Доза 1: Дух функционального программирования
Наконец-то я приступаю к некоторому изложению идей функционального программирования вместе с основами языка F#. Сегодня нам нужно будет сделать самое главное – понять основные принципы функционального программирования и проникнуться его духом. Заранее прошу прощения у тех гуру-функциональщиков, кто ждет более содержательных уроков – но мне хотелось начать с начала. Соответственно, для начала, история из жизни:
Когда я был молодым и преподавал программирование на первом курсе факультета Прикладной математики МАИ, один из студентов никак не мог понять, что значит X:=X+1. “Как же так, как X может быть равен X+1?”. Мне пришлось объяснить ему, как такое возможно, и в этот момент в нем умер функциональный программист…
Почему? Давайте разберемся.
Я уволился
Меня не сократили — мало того уверили что сокращений не будет
Зарплату не урезали — я мог бы гордится размером своей зарплаты и до кризиса
И не потому что есть другой источник доходов — нет, жена — домохозяйка
Я не выиграл в лотерею — наоборот, денег, с учетом необходимости оплаты московской квартиры, хватит на пару недель
Это не было необдуманным решением — я начал задумываться об увольнении месяца три назад
Я нашел лучшее место работы? Нет, пока поиском толком и не занимался.
Влюбляемся в F#: Доза 0.1: Как установить F#
Дорогие Хабраколлеги!
Благодарю за теплый прием моих заметок по F#. Откровенно говоря, не ожидал такого количества интересных и полезных комментариев! Заранее прошу простить, если я не успеваю отвечать на все — буду стараться.
Прежде чем начать влюбляться в F# по этим заметкам, я рекомендую вам установить себе соответствующую среду программирования. Заранее прошу прощения у тех, кто уже установил себе F# и ждет от меня более продвинутых постов: я стараюсь излагать все по порядку, так что первое время может быть скучно.
Существует несколько возможностей установить F# (на текущий момент, последняя версия – 1.9.6.2):
Monadic Parser Combinator в Nemerle
Недавно обнаружил замечательную статью Monadic Parser Combinator про создание парсеров. Основная идея заключена в том, что бы описать парсер как объект первого класса, что бы можно было произвести декомпозицию исходной задачи и представить искомый парсер в виде синтеза более простых парсеров. Что бы облегчить комбинацию парсеров используется подход replace error with list of success. В языке haskell очень удобно работать с созданием парсеров, так как эта задача естественно ложится на концепцию монад, к сожалению в nemerle монады не поддерживаются, но все же язык достаточно мощный, что бы справиться с данной задачей.Влюбляемся в F#: Доза 0: Зачем нужен ещё один язык программирования?
Дорогие Хабраколлеги!
Хочу предложить вашему вниманию возможность приобщиться еще к одному языку программирования: F#. Идея писать такого рода заметки возникла из жизни — по роду своей деятельности мне приходится рассказывать про F#, и когда меня спрашивают, где можно попродробнее прочитать об этом языке — приходится ссылаться на англоязычные ресурсы. Поэтому я решил потихоньку рассказывать про F# в своем блоге, а теперь еще и на хабре, увидев замечательное сообщество стартап-программист. Поскольку F# — очень красивый язык, который никого не оставит равнодушным — я решил озаглавить цикл статей "влюбляемся в F#", а каждую из статей называть "дозой": по окончании их употребления вы должны будете подсесть на F#, а я буду мучительно эксплуатировать ваше терпение, делая вынужденные (из-за недостатка времени) перерывы между дозами.
Ruby on Rails шаг за шагом. #3 Контроллер и Вид
test, на его базе мы и начнем знакомиться с возможностями фрэймворка. Как мы уже говорили, приложение RoR имеет строго определенную структуру, давайте посмотрим, для чего предназначены его папки: