Обновить
1080.25

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Три парадигмы F#

Время на прочтение16 мин
Охват и читатели22K

Введение


Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
Читать дальше →

Премию Тьюринга опять дали женщине

Время на прочтение1 мин
Охват и читатели2.1K
Самую престижную в области информатики Премию Тьюринга в этом году опять дали женщине. Опять, потому что это произошло во второй раз за последние три года. То есть в последнее время лучшими программистами и компьютерными учёными мира признаются не мужчины, а женщины.

В этом году премию присудили Барбаре Лисков (Губерман), профессору Массачусетского технологического института. Барбара Лисков руководила разработкой таких языков программирования как CLU и Argus в 1970-х и 80-х годах, а также объектно-ориентированной системы управления базами данных Thor. Вместе с Дженнет Уинг, Лисков разработала в 1987 году принцип подстановки — концепцию определения подтипа, очень важный элемент в логике объектно-ориентированных языков программирования. Её изобретения стали основой для разработки языков C++, Java и C#. Кстати, она является первой в США женщиной, получившей степень доктора компьютерных наук (в далёком 1968 году).

«Всякий раз, когда вы обмениваетесь электронной почтой с другом, проверяете банковский счёт в интернете или запускаете поиск Google, вы пользуетесь плодами её исследований», — сказал проректор МТИ Рафаэль Рейф, комментируя решение жюри.

via MIT News

Особенности влияния изучения нескольких языков программирования

Время на прочтение2 мин
Охват и читатели1.6K
Попробуйте в уме высчитать результат вычисления следующего выражения:

true ? false ? 5 : 6 : true ? 7 : 8

Высчитали? А теперь идём под хабракат
за правильным ответом

Влюбляемся в F#: Доза 2: Строим фрактальное изображение, или множество Мандельброта своими руками

Время на прочтение3 мин
Охват и читатели6.1K

На прошлом уроке мы рассмотрели основные понятия функционального программирования, теперь давайте попробуем применить их на практике. Поскольку функциональное программирование, как вы наверное поняли, идеально подходит для решения математических задач, то рассмотрим именно такую задачу — построение изображения множества Мандельброта, самого известного фрактального множества.


Читать дальше →

Martin Fowler — GUI Architectures. Часть 1

Время на прочтение9 мин
Охват и читатели28K
Перевод материала Мартина Фаулера. В статье обсуждается общий подход к архитектуре UI и приводятся подробные описания таких шаблонов проектирования, как MVC, MVP, Presentation Model, Forms and Controls, Humble View, Passive View. Статья неплохо прочищает мозг. Для того, чтобы не упустить ни единого нюанса, решил заняться переводом.

Вообще говоря, приседал долго, хотел сделать все сразу и быстро. Пальцем в небо. Иногда меня разбивал радикулит подступали майлстоуны по проекту и я откладывал перевод в долгий ящик. Или еще что-нибудь мешало. Короче, я все сразу не осилил и, чтоб добру не пропадать, решил выкладывать перевод по параграфам. Сейчас перевел половину, половина же осталась.

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

Покорим Ruby вместе! Капля тринадцатая

Время на прочтение5 мин
Охват и читатели13K
Сегодня мы познакомимся с таким мощным и полезным инструментом Руби и компонентом RoR, как Active Record. Как часть RoR мы знаем Active Record из первого шага статей о рельсах (что-то эта серия не очень хорошо пошла, правда). Рассмотрим практическое применение компонента в Руби, что очень пригодится и в RoR.

Active Record придерживается принципов ORM: базы данных могут быть представлены в виде объектно-ориентированного кода, где таблицы — это классы, строки таблицы — объекты, а поля — атрибуты объекта. Однако Active Record отличается от других ORM библиотек, например, от Hibernate из Java, тем, что здесь нет необходимости начальной конфигурации — все работает «из коробки». Active Record написан на чистом Руби, что позволяет нам работать с ним, как с обычным классом: использовать наследование, переписывать методы, использовать метапрограмминг и др. Да, атрибуты объекта в большинстве случаев заполняются с помощью SQL-запросов и точно также атрибуты записываются назад в таблицу. Но все, что происходит между этими двумя процессами — обычная работа с объектом Руби. Стоит понимать «отдельность» существования записей базы данных и объектов Руби: подчас база данных будет отличаться от класса Руби.
Продолжим

Покорим Ruby вместе! Капля двенадцатая

Время на прочтение4 мин
Охват и читатели18K
Настало время писать на Руби что-то пригодное для использования ;) Сегодня мы научимся выдирать нужную нам информацию из web-страниц с помощью Руби на примере Хабра. Начнем с кармы.

open-uri


Давайте каждый откроет свою персональный Хаброцентр (ну или чужой, если все еще не обзавелись инвайтом ;) с адресом вида %username.habrahabr.ru. Наша задача – извлечь из полутысячи строк HTML-кода значение нашей кармы. Предполагаем, что для этого нам необходимо сохранить код страницы в файл, открыть и прочитать его и, используя регулярные выражения, получить необходимую информацию.

Библиотека open-uri сделает первую часть работы за нас. После включения ее в программу становится доступен метод open, который позволяет открывать как локальные файлы, так и URL:
Едем дальше

Я уволился

Время на прочтение1 мин
Охват и читатели6.2K
И не потому, что меня не пугает кризис — предложение на рынке труда IT сократились в разы
Меня не сократили — мало того уверили что сокращений не будет
Зарплату не урезали — я мог бы гордится размером своей зарплаты и до кризиса
И не потому что есть другой источник доходов — нет, жена — домохозяйка
Я не выиграл в лотерею — наоборот, денег, с учетом необходимости оплаты московской квартиры, хватит на пару недель
Это не было необдуманным решением — я начал задумываться об увольнении месяца три назад
Я нашел лучшее место работы? Нет, пока поиском толком и не занимался.
Читать дальше →

Влюбляемся в F#: Доза 0.1: Как установить F#

Время на прочтение2 мин
Охват и читатели5.4K

Дорогие Хабраколлеги!


Благодарю за теплый прием моих заметок по F#. Откровенно говоря, не ожидал такого количества интересных и полезных комментариев! Заранее прошу простить, если я не успеваю отвечать на все — буду стараться.


Прежде чем начать влюбляться в F# по этим заметкам, я рекомендую вам установить себе соответствующую среду программирования. Заранее прошу прощения у тех, кто уже установил себе F# и ждет от меня более продвинутых постов: я стараюсь излагать все по порядку, так что первое время может быть скучно.


Существует несколько возможностей установить F# (на текущий момент, последняя версия – 1.9.6.2):


Читать дальше →

Влюбляемся в F#: Доза 0: Зачем нужен ещё один язык программирования?

Время на прочтение3 мин
Охват и читатели37K

Дорогие Хабраколлеги!



Хочу предложить вашему вниманию возможность приобщиться еще к одному языку программирования: F#. Идея писать такого рода заметки возникла из жизни — по роду своей деятельности мне приходится рассказывать про F#, и когда меня спрашивают, где можно попродробнее прочитать об этом языке — приходится ссылаться на англоязычные ресурсы. Поэтому я решил потихоньку рассказывать про F# в своем блоге, а теперь еще и на хабре, увидев замечательное сообщество стартап-программист. Поскольку F# — очень красивый язык, который никого не оставит равнодушным — я решил озаглавить цикл статей "влюбляемся в F#", а каждую из статей называть "дозой": по окончании их употребления вы должны будете подсесть на F#, а я буду мучительно эксплуатировать ваше терпение, делая вынужденные (из-за недостатка времени) перерывы между дозами.


Читать дальше →

Осваиваем Python. Унция 2. Ветвления, циклы + практика.

Время на прочтение4 мин
Охват и читатели93K
image
Простые конструкции в языке Python: ветвления и циклы имеют свои особенности по сравнению с другими языками. Поэтому я всё же решил потратить на это время и рассказать. Материал совсем простой!
Так же по просьбам читающих добавил в конец статьи разбор простой программки для наглядной демонстрации пройденного материала.
Читать дальше →

Ruby on Rails шаг за шагом. #1 Теория

Время на прочтение5 мин
Охват и читатели56K
Ненадолго отставив серию статей о ЯП Ruby в сторону (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), решил презентовать вам новый цикл о фрэймворке Rails. Набравшись некоторого опыта в «обучении» попробую вывести эту серию на уровень качества и продуманности несколько выше, чем прежде.

Целью первой части уроков по Ruby on Rails будет создание некоторого многопользовательского блога (аля Хабр). Также хочется отметить, что для этой первой части желательно иметь познание о Руби хотя бы на уровне трех-четырех капель. Хочется поскорей приступить к кодингу, но начинать все равно придется с теории.

Что такое Ruby on Rails (далее RoR)? Самый распространненый ответ – это базирующийся на ЯП Ruby (далее Руби) фрэймворк, который реализует шаблон (далее паттерн) MVC. Выделим два главных пункта из ответа:
  • Это фрэймворк на базе Ruby
  • Он реализует паттерн MVC
Разберем каждый отдельно.
Продолжаем

Осваиваем Python. Унция 1. Типы данных.

Время на прочтение6 мин
Охват и читатели84K
image
Продолжаю своё начинание. Данная статья является логическим продолжением первой. Было приятно читать ваши комментарии. Я надеялся, что данный цикл статей окажется для кого-то полезным, но совершенно не предполагал, что заинтересовавшихся будет довольно большое количество. Это заставляет относится к делу серьёзнее и ответственнее.
Без лишних слов, сразу к делу.
Читать дальше →

Ближайшие события

Учимся C#. Ведро второе.

Время на прочтение6 мин
Охват и читатели29K

Результаты отзывов


Немного о C# и *nix


Многих заинтересовало, как же можно писать на C# в *nix системах. Попробую помочь нашим друзьям. Существует проект Mono и вот, что нам говорит Википедиа:
Mono — проект по созданию полноценного воплощения системы .NET на базе свободного программного обеспечения.
Mono включает компилятор языка C# — mcs, среду исполнения .NET — mono (с поддержкой JIT) и mint (без поддержки JIT), отладчик, а также ряд библиотек, включая реализацию ADO.NET и ASP.NET. В рамках проекта также разрабатываются привязки для графической системы GTK+ на платформу .NET.
Среда исполнения mono может исполнять модули, написанные на языках C#, Visual Basic .NET, Java, Boo, Nemerle, Python, JavaScript, PHP и Object Pascal (при наличии компилятора в среду .Net/Mono). Ожидается также поддержка языков C, Ada 2005 и Eiffel.
Реализации Mono существуют для следующих операционных систем: GNU/Linux, Solaris, Mac OS X, Microsoft Windows и Unix.

И это говорит нам о том, что мы спокойно можем программировать практически в любой ОС на C#. Последний релиз Mono Project — 2.2. Mono Project — здесь вы сможете загрузить самую последнюю версию, а так же посмотреть документацию.
Так же есть ещё одна хорошая новость. У группы разработчиков Mono есть дочерний проект — MonoDevelop. Это бесплатная IDE для C# и ASP.NET. Она поддерживает все необходимые функции для успешной и быстрой разработки в *nix системах.

Что там дальше...

Познаём Java. Вторая чашка: собираем классы в кучки. Пробуем апплеты

Время на прочтение5 мин
Охват и читатели81K

Чем обусловлена структура Java?


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

Как происходит загрузка классов?


Читать дальше →

Осваиваем Python. Унция ноль. Введение.

Время на прочтение4 мин
Охват и читатели128K

Предыстория



Присоединяюсь к MaxElc, DarwinTenk и Devgru :) Начинаю цикл статей посвященных Python. Сам я имею некоторый опыт обращения с PHP и Java. Но каждый раз, при относительном освоении какого-то инструмента — оставалось определённое неудовлетворение им, связанное с чем-то конкретным, и поиски продолжались. На сегодняшний день наиболее близко к идеалу в моих глазах стоит Python. Идеал недостижим — это понятно, посему и у Python есть недостатки. Прежде всего — это скорость выполнения, однако, эта проблема решаема несколькими путями и об этом мы обязательно поговорим чуть позднее.
Сам я начал осваивать Python буквально недавно. Начиная этот цикл статей — я преследую несколько целей. Во-первых, это дополнительная само мотивация + интерактивность, во-вторых, опыт. В-третьих, блуждая по просторам рунета — вижу, что Python куда менее популярен, чем в мире. Ситуацию надо исправлять :)
В соответствии с идеологией Python, а именно с тем, что одни из главных его козырей — это быстрота в освоении и скорость разработки, мы достаточно быстро, практически тезисно пронесёмся по основам синтаксиса и построения программ и перейдём к основной цели данного цикла — освоение django.
Итак, мы начинаем.
Читать дальше →

Познаём Java. Первая чашка

Время на прочтение3 мин
Охват и читатели22K

Что да как


Я решил поддержать начинание MaxElc и DarwinTenk, и начать потихоньку рассказывать про Java. Текст буду подавать «чашками» потому, что один из символов Java — чашка кофе. Большую часть я буду писать сам, изредка поглядывая в википедию и на официальный сайт языка — java.sun.com (раздел /docs).
Далее в тексте стоит разделять понятия «Java как язык» и «Java как платформа».
Читать дальше →

Учимся C#. Ведро первое.

Время на прочтение4 мин
Охват и читатели130K

Привет всем


Я решил начать цикл статей на тему обучения программирования в .NET, а именно на C#. Я не претендую на авторство всего, что здесь и далее будет написано, я всего лишь хочу дать знания тем, кто этого желает.
На Хабре много раз могли заметить мои комментарии по поводу того, что я очень хотел бы обучать людей, но никак не мог придумать как это сделать. После цикла статей MaxElc я подумал, что тоже могу паралельно с ним начать писать.
Пожалуй начнём!

Архитектура .NET


.NET — это среда исполнения или платформа. Она располагается между кодом и Windows, позволяя предоставлять нужные службы. Платформа .NET состоит из двух основных компонентов. Это Common Language Runtime и .NET Framework Class Library.

Common Language Runtime (сокращенно CLR) можно назвать «двигателем» платформы .NET. CLR занимается управлением памятью, компиляцией и выполнением кода, работой с потоками управления, обеспечением безопасности и т.п.

.NET Framework Class Library — это набор классов на все случаи жизни.

Поехали

Покорим Ruby вместе! Капля девятая

Время на прочтение3 мин
Охват и читатели30K
Сегодня у нас действительно маленькая капля — немного остаточной, но серьезной и важной информации о Руби, которая, возможно, будет интересна для пишущих на других языках.

Замораживание объектов



Метод freeze в классе Object защищает объект от изменений, превращая его в константу. После «заморозки» объекта, любая попытка изменить его превратится в ошибку TypeError. Метод frozen? позволит узнать, заморожен ли объект:

Смотрим дальше

Покорим Ruby вместе! Капля седьмая

Время на прочтение4 мин
Охват и читатели21K
В этой капле мы еще раз пробежимся по всем рассмотренным нами темам и углубимся в них в поисках упущенного и интересного.

Внимание! Это последняя капля, опубликованная в блоге Ruby! Все прошлые (1, 2, 3, 4, 5, 6) уже сидят в новом блоге Стартап «Программист». Блог предназначен для начинающих и, возможно, «матёрых» программистов, желающих выучить шаг за шагом первый или… цатый язык программирования. Теперь следить за каплями еще проще!

Продолжим обучение

Вклад авторов