Как стать автором
Поиск
Написать публикацию
Обновить
1134.34

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

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

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

Популярность языков по stackoverflow

Время на прочтение1 мин
Количество просмотров2.8K
Меня всегда смущал отчет от Tiobe, ну не похож он на правду. Ну хотя бы потому что Delphi на 9 месте, а javascript на 10, т.е. последнее и предпослениее места в top-10. И это в наше то время развития web 2.0, ну явно ведь должно быть в ином порядке. Ну и по остальным языкам все как то подозрительно. А что же на самом деле, что сейчас популярно у продвинутых программистов? А определить оказалось довольно просто, достаточно заглянуть на stackoverflow.com и посмотреть популярность тегов (они там четко к языкам прикреплены, есть куча модераторов отслеживающих правильность тегов)
top10 языков по меркам stackoverflow

Итератор

Время на прочтение5 мин
Количество просмотров56K
(Заранее извините за мой русский)

Представьте, что вы разработчик статегичнои военной игры. Армия имеет сложную структуру: она состоит из героя и трех групп. Когда Король издает указ и ресурсы, чтобы полечить всех воинов (Герой также является воином) Вы хотите проитеруваты по всем солдатам и вызвать метод treat () на каждом инстанси. Как это можно сделать легко и без вникания в структуру армией?

ИТЕРАТОР



Итератор это паттерн позволяющий доступатися к элементам любой коллекции без вникания в суть ее имплементации.
Таким образом в применении к нашей проблеме: Мы не хотим переживать структурой Армии — мы хотим чтобы SoldiersIterator пробежался по всем солдатам.

Красная линия на рисунке — это итератор (по крайней мере как я его себе представляю).

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

Принцип подстановки Барбары Лисков

Время на прочтение6 мин
Количество просмотров153K
Привет, хабрачеловеки!

Захотелось вот поделиться сокровенным знанием по этой теме. К тому же материалов по этому, достаточно важному принципу проектирования классов и их наследования, в Рунете как-то негусто. Имеются формулировки вида:

«Пусть q(x) является свойством верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.» © Wikipedia

Но они выносят мой мозг меня совершенно не радуют.

Если хочется услышать объяснение этой хрени умной фразы — прошу под кат.
Читать дальше →

Смех сквозь слёзы: Всеукраинский конкурс по информационным технологиям

Время на прочтение4 мин
Количество просмотров3.2K
Привет, хабрачеловек! Мне довелось принимать участие в «Всеукраинском конкурсе молодежи по информационным технологиям», в номинации «Web-программирование», который в этом году проходил в городе Бровары, не далеко от Киева. То, что я там увидел — меня, откровенно говоря, повергло в шок. Подробнее — под катом.
Читать дальше →

Компилируем 64-битную версию Qt под windows

Время на прочтение3 мин
Количество просмотров24K
logoЗа последние годы кросс-платформенная библиотека Qt получила не только многочисленные улучшения, но также собственную среду разработки QtCreator и удобные инсталляторы под все операционные системы. Теперь для разработки не нужно самому устанавливать необходимое окружение, прописывать пути, интегрировать библиотеку в ide — достаточно запустить инсталлятор и все будет работать «из коробки». К сожалению, версия для windows имеет инсталлятор только для 32-битной сборки библиотеки и ide. А иногда возникает необходимость сделать именно 64-битное приложение — чаще всего это связано с необходимостью использовать чужие 64-битные компоненты: подгружаемые библиотеки, inproc com компоненты и прочие странные штуки. Под катом содержится подробная инструкция как скомпилировать Qt и QtCreator из исходников для 64-битной архитектуры.

Карта обхода подводных камней

Программирование в таблицах — новая концепция записи условных (и не только) конструкций

Время на прочтение8 мин
Количество просмотров6K
Не так давно, в процессе поиска в сети альтернативных подходов к программированию я наткнулся на очень интересное видео. Это 40-минутная презентация с интригующим названием «No Ifs, Ands, or Buts. Uncovering the Simplicity of Conditionals». Автор презентации Джонатан Эдвардс (Jonathan Edwards) рассказывает о новой концепции записи условных конструкций при помощи созданных им схематических таблиц (schematic tables).

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

Январский рейтинг языков программирования

Время на прочтение2 мин
Количество просмотров15K
Голландская компания TIOBE представила очередной рейтинг языков программирования. Рейтинг строится по данным популярных поисковых систем о количестве разработчиков и компаний, использующих язык, а также о количестве обучающих курсов по этому языку.

Итак, что же нового в январском рейтинге? В первую очередь это появление в нём языка Go. И не просто появление — он стал языком 2009 года по версии TIOBE. Популярность Go выросла на 1,25% с момента его появления в ноябре 2009-го и на сегодня он занимает 13-ую строчку рейтинга.

Следом за Go по скорости популяризации идёт Objective-C от Apple, отставший всего на сотую долю процента. Objective-C существует уже давно, но вернул свою популярность благодаря iPhone.

Интересен также рост популярности PHP, который опустил С++ и Visual Basic на строчку ниже. Помимо языков от Google и Apple в 2009 высокого уровня достигли C# от Microsoft и ActionScript от Adobe. Что касается Java, то он по прежнему остался на первой строчке, хотя его популярность продолжает падать.
Итак, сам рейтинг

CPrompt — интерпретатор языка си

Время на прочтение3 мин
Количество просмотров7K
С июня 2009 года я занимаюсь разработкой интерпретатора Си. (я уже упоминал об этом в статье о вызовах функций).
Сейчас уже реализовано достаточно много конструкций: циклы, выбор, вычисление выражений, вызовы функций (как объявленных пользователем, так и стандартных), инклуды и другое.
интересно?

За что я люблю программирование

Время на прочтение3 мин
Количество просмотров10K
Когда я был маленьким, я очень любил писать программы. Интерес был вызван, скорее, обидой. Почему это компьютер умнее меня? И игрой. Игрой, заставить его, компьютер, делать то что я хочу. Ты нажимаешь кнопку, а он говорит что не так, ты правишь ошибку, а он говорит что опять не так… И вот оно запустилось. А счастья нет. Ты начинаешь разбираться… искать… Ты чувствуешь себя строителем мира, так мне тогда казалось. Мне казалось что я создаю свою вселенную… Свой маленький мир…

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

Задачи для курсовых

Время на прочтение2 мин
Количество просмотров4.5K
На хабре часто возникают топики, в которых студенты CS специальностей просят помочь им с выбором тем курсовых и дипломных работ. Это не удивительно, так как обычно темы, которые предлагают научные руководители интересны только им самим, и получается ситуация, когда студент выполняет работу, но не видит в ней смысл. Мне кажется, что это очень ужасно, когда человек не заинтересован в своей работе.

Было бы намного лучше, если бы студент понимал, что он делает нужную вещь, за которую много людей будут ему благодарны. Один из способов достичь этого — участие в популярных open source проектах, связанных с его специальностью. Хорошими кандидатами являются проекты по созданию компиляторов/интерпретаторов языков программирования, так как это наукоемкие проекты (алгоритмы вывода типов, PEG, монады, теория типов...) и объективно полезные проекты (если язык достаточно популярен).

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

Scala. Введение

Время на прочтение12 мин
Количество просмотров89K
Привет хабралюди.

Не так давно я заинтересовался одним из многочисленных ныне языков под JVM — Scala. Причин тому много, основная — всё нарастающее со временем чувство неудобства при работе с cpp-подобными языками. Взгляд мой попеременно падал на Ruby, Groovy, Python, но все они оставляли впечатление инструментов, не совсем подходящих для моего обычного круга рабочих задач (Python-таки хорош, но у нетипизированных языков есть свои ограничения). Scala же, напротив, показалась вполне годным языком. Так как поиск по хабру никаких статей о ней не выловил (было несколько, но мягко говоря не вводных), я решил написать маленький обзор и поделиться им с массами.
По возможности коротко о кажется главном

Hello World! как ему следует быть на C в Linux

Время на прочтение3 мин
Количество просмотров52K
Очень многие начинающие программисты думают, что знают, как написать Hello World. Естественно, с этого примера ведь и начинается большинство учебников.
А давайте посмотрим, как это делается.
Обычно в учебнике по C эта программа выглядит примерно так:
#include <stdio.h>
void main()
{
    printf("Hello world\n");
}

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

классический TCP сервер

Время на прочтение4 мин
Количество просмотров46K
мой первый TCP Сервер был создан пару лет назад. Основой создания послужила книга Р.Стивенсона «Unix — Профессиональное программирование.» Есть несколько подходов к созданию TCP-серверов. В данном посте хочется рассказать про классический TCP сервер.

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

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

Место для D

Время на прочтение6 мин
Количество просмотров3.4K
На хабре уже публиковался перевод статьи The Case For D за авторством Андрея Александреску. Перевод, к сожалению, был сделан на скорую руку, без посторонней помощи и советов, что не могло не отразиться на его качестве. Позднее был коллективно создан более качественный и, главное, верный перевод, который мы и хотим показать. Старый перевод будет удалён, чтобы не создавать путаницы.

Андрей Александреску — Место для D [ссылка на pdf]
(статья посвящена D — «системному языку высокого уровня», одним из разработчиков которого является сам Александреску)

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

Участники: Volfram, naryl, karbin — перевод; maxter — грамматика и орфография; eldar, digited, Nekuromento, karbin, RISC — технические вопросы. ( Они будут рады ответить на любые вопросы, если им предоставить такую возможность ;) )

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

Как сплагиатить удобную утилиту для показа зарядки ноутбука?

Время на прочтение4 мин
Количество просмотров2.3K
Всё началось с того что я увидел утилиту от IBM/Lenovo для показа заряда батареи ноутбука в непривычном месте — в таскбаре/супербаре, но не в виде значка, а как панель(аналогичные используются для управления проигрывателями iTunes, WMP, Zune):



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

Именно так я решил написать своё решение. Писать будем на C++. Я писал в Visual Studio 2010, можно использовать предыдущие версии. Главное — наличие установленного Windows SDK(ставится отдельно от студии, доступен бесплатно, скачать можно например тут)

Вот что у меня получилось:

Моя панелька
Читать дальше →

Google Go = Python и C++

Время на прочтение1 мин
Количество просмотров11K
Google только что объявил выпуск нового языка с открытым исходным кодом
под названием Go. Компания говорит что, Go эксперементальный язык и
он объединяет производительность и безопасность компилируемых языков(как С++)
со скорость разработки динамических языков (как Python).
Читать дальше →

Видеоматериал с семинара RSUG: Smalltalk в России

Время на прочтение1 мин
Количество просмотров843
22 октября новоорганизованная группа RSUG (Russian Smalltalk User Group) провела первую встречу-семинар. Целью данной встречи являлось знакомство и освещение текущего состояния рынка.

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

Поскольку встреча проходила впервые и была очень теплая и дружественная атмосфера, выступления были несколько «не регламентные». Однако все доклады без исключения очень интересны.

Если вы мало знакомы со Smalltalk, то рассказ Бориса Беркгаута вам должен понравится. Он в простой и доступной форме демонстрирует основную «магию» языка.

Анонс: Smalltalk в России. (Санкт-Петербург, 22 октября)

Время на прочтение1 мин
Количество просмотров636
Сообщество российских Smalltalker-ов (RSUG) приглашает всех желающих
на свой первый семинар RSUG'09.
Семинар пройдет в городе Санкт-Петербург, 22 октября, в 18.30 в учебном центре
«Авалон» (Схема проезда)

Есди вы хотите прийти и принять участие в семинар
зарегистрируйтесь, пожалуйста, на www.rsug.ru.
Регистрация необязательна, но она поможет нам оценить
предполагаемое число участников и подготовиться должным образом.

Будут следующие доклады:
1. Знакомство с Smalltalk
2. Smalltalk в промышленном проектировании
3. Smalltalk в распределённых бизнес-приложениях
4. Smalltalk в распределённых системах реального времени
5. LiveCoding

Контакты:
www.rsug.ru
groups.google.com/group/sugr

IntelliJ IDEA Atlassian Connector — плагин для удобной работы с Jira

Время на прочтение2 мин
Количество просмотров7.2K
На самом деле, заголовок звучит немного неверно, так как данный плагин позволяет работать не только с Jira, но и с остальными продуктами Atlassian (Bamboo, Crucible, FishEye). Но сейчас мне бы хотелось сделать акцент именно на Jira.
С Jira я плотно столкнулся на работе и не могу сказать, что работать с ней такое уж большое удовольствие. А на днях мне рассказали о такой интересной вещи как Mylyn, и его работе с Assembla через Eclipse, о чем я так же скоро собираюсь написать. И мне стало интересно, а есть ли что то подобное и для пары Jira + Inellij IDEA. Оказалось, что есть. Итак, поехали.
Читать дальше →

My escape(html)

Время на прочтение4 мин
Количество просмотров1.4K
Цель поста — покритикуйте.

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

Замечание. В моём блоге в базе всегда хранится никак не обработанный оригинал пользовательского ввода. Задача функции — сделать из этого ввода html, пригодный для отображения. В простейшем случае функция может вызываться во время отображении контента (в шаблоне или view). Для улучшения производительности можно завести отдельное поле в базе, которое будет результатом работы функции экранирования, и будет обновляться во время обновления контента.

Итак, философия функци:
Читать дальше →

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