LINUX.ORG.RU

Избранные сообщения mentalmenza

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

Форум — Development

В общем, всегда писал приложения независимо от платформы (шindoшs, liпuх, мас, bb, апdгoid) и направления (консольные\гуёвые) с использованием, собственно, фреймворка Qt. И тут, внезапно, появилась интересная вакансия - писать придётся на Pure C (sic!) для Linux страшные сетевые да многопоточные штуки. И не то, чтобы меня это пугает, нет. Всю жизнь мечтал изучить низкоуровневое программирование - ведь true way, но, похоже, у меня one love, обмазался сегодня Йоном Снайдером да Шоном Уолтоном и сейчас испытываю большую попоболь. Ну ведь и вправду, всё это жутко неудобно - PF_INET, SOCK_STREAM, sockaddr_in, СТРУКТУРЫ и НИКАКОГО ООП (и это только начало Пути). Кому это может понравиться? То ли дело - взял QTcpServer, взял QTcpSocket, прикрутил QThread или QtConcurrent по задаче да желанию - готово.
Вопрос к сообществу - стоит ли учить всё это дело (объективно - разумеется, эти знания никогда не повредят, субъективно - есть вариант продолжить работу с meego\maemo\tizen и любимым няшенькой Qt, параллельно занимаясь собственными проектами), или я навсегда потерян для высокого общества низкоуровневых программистов? Раньше я даже об STL старался руки не марать, а тут, право, настоящая чернуха начнётся.

 , , , ,

vladimirsmirnov9
()

Системные программисты против PHP-армии школьников

Форум — Talks

Веб. Тысячи школьников и сотни тысяч студентов насилуют php, джумлу и JQuery. В вебе сейчас легко найти работу дажи при минимальных знаниях. При наличии хороших знаний можно найти высокооплачиваемую работу.

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

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

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

Но, периодически, мои прогнозы расходятся с реальностью.

В качестве опровержения был найден пост gods-little-toy

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

Итак, вопросы:

1) Будет ли дефицит системных программистов? Будет ли избыток школьников-пхпшников?
2) Что ожидать в плане объема работы системным программистам?
3) Какой зарплатный прогноз (увеличение/уменьшение) для системщиков и для пхпшников?
4) Каковы сейчас зарплатные притязания системных программистов (относительно опыта)?

Ответ на последний вопрос очень интересен в формате личных историй успеха.

 , системщики,

zekka
()

баг или фича

Форум — Development

Почитываю на досуге книжку «Интерпретация лиспа и scheme», Кристиана Кеннека, и обнаружил любопытную фразу:

Под влиянием лямбда-исчисления, в честь которого названа специальная форма lambda, LISP-1.0 был сделан динамическим, но вскоре Джон Маккарти осознал,что он ожидал получить от следующего выражения (2 3), а не (1 3):

(let((a 1))
((let((a 2))(lambda(b)(list a b)))
3))
Эта аномалия (неосмелюсь назвать её ошибкой)была исправлена введением новой cпециальной формы function. Она принимала lambda-форму и создавала замыкание...

В связи с этим сразу 2 вопроса:

1) Почему лямбда исчисление здесь ассоциируется с динамическим связыванием, а не лексическим, как сейчас принято считать в мейнстриме?
2) Почему автор считает это аномалией (и это мнение я вижу вообще часто в различных источниках), когда это совершенно нормальное поведение для динамического связывания. What a fucking «аномалия», это что как если бы НЛО прилетело? Неужели Маккарти был настолько туп, что это казалось ему «аномалией»?

 , джон маккарти

anonimous
()

Лисперы, что я делаю не так? - II

Форум — Development

Я понял что я делал не так — я просто не использовал лисп.

Вощем, может кому полезно будет, человек пишет как дошел до жизни такой http://www.defmacro.org/ Честно говоря это мой уже не первый подход к снаряду. До этого раза поташнивало, сейчас думаю зашел. Действительно лисп оказался прост как грабли.

Без матов осознание того на сколько оно кульно описать тяжко.

Есть вопросы:

1) Кто-нибудь есть кто пользует vim, при этом пишет на лиспе?

2) Ясен хобот емакс мощнее, но как то оно не то. Есть кто пересел? Как ощущения вообще?

3) Practical Common Lisp ослилил. Что есть еще для просветления?

ebantrop
()

Лисперы, что я делаю не так?

Форум — Development

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

Мне интересно что в лиспе есть такого что проблематично сделать другими средствами. Макросы, когдогенерация, лямбды и прочие кошерные вещи оно понятно и наверное сильно упрощает жизнь. Вот вопрос что это за жизнь такая, когда оно так нужно, что можно решить только на лиспе?

Может я чего не понимаю и все делаю не так. Я в основном занимаюсь обработкой данных, моделированием, железки делаю на ПЛИСах ну там всякой фигней иногда. Для меня хватает С# плюс ANTLR и StringTemplate в качестве костылей когда надо сгенерить код. В четвертом дотнете есть Expression, ежели кодогенератор нужен в рантайме. Плюс это все статически типизировано и упрощает мне сильно жизнь, что возможно связано с моим малым объемом головного мозга. Кошер в виде сборки мусора, шустрого манагера памяти, всякого синтаксического сахара тоже в комплекте.

Прикинуть алгоритм очень удобно в вольфрамовой математике из которой выплевываю код в тот же С#.

Так вот вопрос, что люди (тысячи их!) делают на лиспе?

ebantrop
()

Задача разгрузки коммуникационных каналов, habrahabr и глупость масс

Форум — Talks

Пишу сюда по трем причинам: (i) не могу молчать, (ii) думаю вам должно быть интересно, (iii) это еще один пример зачем нетривиальная математика бывает нужна программисту.

Используя хабр максимум как источник новостей про всякие андройды и прочий мир pop-IT, я всегда поражался несостоятельностью тамошних статей на хоть сколько-то околонаучные темы(взять хотя бы трендовые нейронные сети и «ИИ»). Но вот сейчас наткнулся я на пост «Как я завалил собеседование в Twitter», где рассказана кулстори парня, который не решил задачку «заполнения водой дискретной сутпеньки». Если пройдете по ссылке, то сможете лицезреть десятки постов в стиле «зачем это программисту надо уметь решать», или «что за глупое собеседование, он же в Твиттер интервьюировался, а не в канализацию», ну и прочие народные хохомы, о том что гад интервьюеры такие дураки, задают олимпиадные задачи, которые не позволяют судить о реальном уровне программистов.

Но никто не упомянул, что этот метод на самом деле называется «water-filling», который есть решение задачи оптимальной разгрузки коммуникационных каналов, которая ставится следущим образом

max_x \sum log(a_i + x_i),
s.t.    x_i >= 0,     \sum x_i = 1.

И решение выписывается через ККТ условия.

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

 , , , ,

maggotroot
()

Простой клон Minecraft, написанный на Си с использованием последнего OpenGL (shaders)

Форум — Development

Небольшой клон Minecraft, написанный на Си в 2500 строк — даже поддерживает multiplayer online.

Запускается на Windows, OSX и Linux.

Сырцы проекта:

https://github.com/fogleman/Craft

(обязательно смотреть на скиншоты)

 ,

gensym
()

Посоветуйте задачек

Форум — Development

Посоветуйте хороший сборник (олимпиадных) задач по программированию. Приветствуются задачи уровня для новичков и выше. Спасибо. //**С выпавшим годным снегом в локации Беларусь! **На правах оффтопа

 , , , ,

int13h
()

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

Форум — Talks

Сабж

 , ,

kombrig
()

Вызов лисперам.

Форум — Development

Всем привет. А давайте проверим некоторые громкие утверждения о лиспе, и сделаем это с пользой для человечества?

Я часто вижу на ЛОРе утверждения наподобие такого: «Лисп-макросы дают возможность создавать DSL под задачу, а саму задачу решать на языке предметной области». Дальше обычно следуют выводы: благодаря этому лиспер во много раз производительнее программиста на С, С++, Java, Python и прочих non-Lisp языках. Сразу disclaimer: я тут ни на чьей стороне, мне самому интересно посмотреть, как работает этот подход. В частных беседах добиться особо ничего не удалось, разве что «я тут писал DSL для разбора лисповых DSL, чтобы можно было DSLить, пока DSL разбирается; а eDSLей так вообще было не счесть». Поэтому предлагаю решить предельно конкретную задачу, в которой, кстати, есть острая нужда.

Есть такой замечательный дистрибутив Gentoo, наверняка многие им пользуются. У него прекрасная концепция, но есть большая проблема с пакетным менеджером portage. Он — «невыносимо тормозной», а его разработчики "не хотят лезть в это адское спагетти из пистона и баша". Перевожу на профессиональный язык: portage имеет проблемы с производительностью и поддерживаемостью. Вероятно, отчасти из-за неудачного выбора языков реализации.

ЛОРовцы уже кинули клич на предмет переписывания portage на С/С++, но как мне показалось, делишки идут неважно. Давайте поможем общему делу? Мне кажется, задача просто идеальная:

1. Не «Hello, World», но и не система управления ядрёным реактором. Судя по утверждениям лисперов, такое должно занять от одного вечера до нескольких дней. Таким образом, проверяем claim о производительности лиспера;
2. Исходный продукт испытывает проблемы с перфомансом. Проверяем claim о том, что лисп не тормознее сишечки, а также claim, что на лиспе проще реализовать правильные алгоритмы и структуры данных;
3. Предметная область — пакеты, метаданные, содержимое, зависимости, сборка и установка. Предельно ясная и самодостаточная. Проверяем claim о DSL и решении задачи на языке предметной области.

Итак, ТЗ — реализовать Gentoo portage на лиспе вашей мечты, The Right Way(TM). Приз — всенародное признание, сотни нефти и гарем из 99 девственниц подросшая репутация лиспа :) Впрочем, пацаны вроде даже собирались скидываться на условную «бутылку Жигуля». Кстати, призываю Chaser_Andrey в свидетели.

Ну, что? Challenge accepted?

 

BYHYRT
()

Попробовал Scala. Больше не хочу.

Форум — Development

Решил задачу на Scala невероятно красивым способом? Расскажи об этом своему clojure-коллеге. Только окажется, что он ушел три часа назад, оставив тебе записку «Используй Map». — Daniel Worthington-Bodart

Мне кажется, это «бесчеловечный» язык. Удивительно, что он сделан вроде бы человеком и вроде бы для людей. — Clinton Begin

Впервые я познакомился со Scala шесть лет назад. Тогда мне пришлось иметь дело с самодельной build-системой, написанной на Scala и использовавшей Scala в качестве языка для build-скриптов. Scala мне сразу не понравилась:

1. Build-скрипт компилировался по три минуты после внесения правок, и это еще до начала непосредственно сборки,
2. Синтаксис скриптов был совершенно бессистемный. Где-то было def где-то var. Где-то знак =, где-то фигурные скобки. Такое впечатление, будто кто-то шатался по скриптам, разбрасывая случайным образом знаки пунктуации.

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

Но вот в последние две недели мне пришлось разрабатывать простое RESTful API для большого и сложного набора данных. Я к Scala больше не притронусь!

Scala мы выбрали потому, что весь проект сделан на Java и XSL, с большим количеством обработки XML. Вроде как Scala — очевидный способ повысить продуктивность, особенно принимая во внимание встроенную в язык поддержку XML.

Но не тут-то было!

(Compile Times, Libraries and the Community, Magic Syntax, Everything is a Type, ‘Local’ Type Inference...)

Много о чем еще можно было бы написать. Неразбериха в инструментах сборки. Полная безнадега в поддержке Scala в IDE. Мешанина из «типов типов». Вечная копипаста с case class'ами. Но сказанного достаточно: всего этого хватило, чтобы затормозить разработку как минимум на две недели. Хватило, чтобы расхотелось когда-либо иметь дело со Scala.

Если вы дочитали до конца, то наверняка выделили лейтмотив моего текста. Он заключается в том, что Scala — неюзабельный язык. Я полагаю, изначально это был некий полигон для языковых экспериментов, который почему-то превратился в довольно распространенный язык. Не вижу ни одной убедительной причины в пользу Scala; есть много других языков, чтобв поэкспериментировать с ФП; если уж не терпится испытать сильные системы типов (а вам должно хотеться!) — попробуйте Haskell. Я допускаю, что, может быть — может быть! — вам удастся что-то такое проделать со Scala.

Но, ради всего святого, не пытайтесь использовать ее в продакшене.

 ,

Vuvuzela
()

Как начать программировать под микроконтроллеры?

Форум — Development

Имею хороший опыт в программирование(С++) но вообще почти ничего не знаю из области радиоэлектроники. Вот недавно увлекся, а сегодня узнал что МК оказывается стоит порядка доллара.

Ну первый вопрос, а собственно что можно сделать( или где можно почитать про это). И второй, а как? Что для этого нужно? В материнке есть COM порт. Где брать МК (живу в довольно небольшом городе и не думаю что найду в магазине такое.)

А если смотреть в область обычной электроники, какие транзисторы и конденсаторы(или что может ещё понадобится?) стоит купить? Денег пока не очень много, порядка 500 рублей на все.

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

 ,

knotri
()

Я не понимаю C++

Форум — Development

Не вброса или холивара ради. Это крик души (:
Пытаюсь изучить плюсы. Но за какой учебник бы не взялся, какую статью бы не открыл - теряюсь. Сначала всё хорошо. Но доходит дело до указателей, указателей на указатели, ссылок, etc. в эти моменты и начинается ж*па. Всё смешивается в кашу из звёзд, амперсандов, сисек и прочего.
Гугляндексы говорят примерно такое: «Учи пока не поймёшь!!! Если не знаешь указатели, значит ты не знаешь C/C++!!!» И всякое в таком роде. Что ясности как-то не вносит.
Но сегодня на работе закаляя очередные заготовки я подумал, что неплохо бы отойти от стандартного:

int a = 15;
int *p = &a;
cout << p;
И попробовать сделать что-то более реальное(применимо ли это слово?). Тогда и по ходу дела разберусь с этими плюшками в плюсах. Но вот беда в том, что я не могу ничего придумать.
Поэтому я хочу обратиться к ЛОР'у с просьбой о историях успеха и каких-либо конкретных примерах(задачах). Они бы по возможности были просты(я не профи кодер, а повар вообще).
Может подкинете идею, чего бы написать попробовать. Опять же в целях обучения/понимания. Что бы весь ЛОР потом над говнокодом поржал (:

 , , ,

yacuken
()

Российская наука

Форум — Talks

А как дела обстоят в российской науке? Наколько интересные исследования/открытия проводятся? Применяется ли там Линукс?

UVV
()

Паттерны.

Форум — Development

Народ, откуда столько НЕНАВИСТИ к паттернам в программировании?

Пробежался тут по последним темам.

For example, in the OO world you hear a good deal about «patterns». I wonder if these patterns are not sometimes evidence of case (c), the human compiler, at work. When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough — often that I'm generating by hand the expansions of some macro that I need to write. — P. Graham

'Patterns mean «I have run out of language.»' — Rich Hickey

Ну и там хор подпевал, как обычно, и всё в таком духе. Вообще, сколько себя помню, на ЛОРе термин «паттерны проектирования» всегда был синонимом какого-то вселенского зла.

Но ведь если разобраться, то «паттерны» так или иначе присутствуют просто ВЕЗДЕ. В градостроительстве, архитектуре, механике, инженерии, электронике, транспорте, аэрокосмосе, музыке, спорте, кулинарии, литературе, поэзии, живописи, медицине, физике, математике, геологии, географии, добыче ископаемых, сельском хозяйстве, военном деле, государственном управлении, экономике, финансах, социологии, в людских взаимоотношениях, наконец! Человечество повсеместно использует стандартные подходы/сценарии/решения, проверенные годами. И к ним мы относимся совершенно нормально. Почему мы, например, услышав секвенцию II-V-I в «Лунной сонате», не говорим Бетховену: «Чувак, you've run out of harmony!» Почему, увидев четырёхстопный ямб у Пушкина, не предъявляем: «Чувак, да у тебя же a sign of trouble в стихах!»

Почему только будучи применёнными к программированию паттерны вызывают столь лютую ненависть?

 

BYHYRT
()

учебник по основам программирования

Форум — Development

посоветуйте хороший сабж для детей старшего возраста (over 30)

на иглише довольно хорош «Head First Programming», но желательно на русском

MyTrooName
()

Разыскивается книга про то, как научиться программировать

Форум — Development

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

P.S. Стоит ли читать «SICP, HtDP, PCL», которые мне посоветовал анонимус?

 , , ,

evilmanul
()

На чем написать язык программирования своей мечты?

Форум — Development

Здравствуйте, помогите пожалуйста с такой проблемой: есть замечательный язык Clojure, он меня во всем устраивает кроме

  • решения realtime задач - хотелось бы работать с памятью напрямую или предложите как это можно обойти без костылей в Java
  • inline assembler

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

 , , , ,

Vpupk1n
()

Зачем нужен эфшарф?

Форум — Talks

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

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

Коммьюнити как такового нет. Бедняга Томаш пытается шарить знания, есть десяток энтузиастов вроде Шеффера и Форкмана. Унылая рассылка и мёртвый ирц-канал.

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

 

dmitry_malikov
()

[ФП] Примеры работы с БОЛЬШИМИ файлами

Форум — Development

Всем привет, хочу продолжить тему работы с файлами в ФП. Тут недавно были примеры, но очень тривиальные, прочитать-записать. Вопрос такой, как в ФП-языке считать в память огромный файл как двумерный массив, и чтобы он а) занимал в памяти столько же места сколько на диске б) доступ к элементам был быстрый (О(1))?

Предистория такова, мы обрабатываем изображения с телескопов, там счёт идёт на сотни мегапикселей, и глубина пикселя 32 бита. Так что типичное изображение ~ два с половиной гигабайта, для этих целей специально собраны счётные узлы с 4 Гб RAM. Это чтобы изображение поместилось целиком в память, и оставалось на промежуточные буферы для накопления результатов. Естественно, все рассчёты написаны на Си и С++, работает быстро, памети хватает. Но код некрасивый, много повторяющихся конструкций и т.п. Народ в основном закостенелый из старшего поколения, ничего кроме Си и фортрана не знают, а я хочу попробывать более современные языки.

Так что буду благодарен за примеры чтения массивов для Haskell и особенно Scheme. И чтобы можно было посмотреть, сколько памяти реально израсходовано. Спасибо!

Ignatik
()