LINUX.ORG.RU

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

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

Форум — Development

Внезапно осознал, что любое определение массива (например int mas[7];) порождает в памяти не такую структуру:

    mas
    ┏━┳━┳━┳━┳━┳━┳━┓
    ┗━┻━┻━┻━┻━┻━┻━┛

а такую:

    mas
    ┏━┓
    ┗━┛
     |
     |
     ∨
    ┏━┳━┳━┳━┳━┳━┳━┓
    ┗━┻━┻━┻━┻━┻━┻━┛

И так всегда. То есть, при определении массива выделяется место в памяти и под элементы, и под указатель на сам массив. Всегда! Офигеть...

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

UPD: я тупой, все что выше - неверно.

Перемещено mono из talks

 ,

Moonysh
()

Работа программиста - это...

Форум — Talks

..возможно, одна из самых скучных и рутинных профессий. Я, конечно, сейчас не беру в расчет супер интересные проекты, типа игорей и типа того. Да и игори клепать , наверное, тоже унылая рутина. Сделал такой вывод на основе общения с друзьями-программистами и на основе своего скоротечного изучения сего ремесла. Почему же все так хотят работать программистами? Ответ тут кроется, скорее всего, в том, что сии спецы работают в теплом офисе, сидя в уютном кресле и, типа, работают головой, а не грузят чугуний. Вот и прет туда народ, падкий до легкой жизни. Ну и к тому же сильно переоценена сия специальность. Сугубое имхо.

 взлом системы, прозрение

BambarbiyaKirgudu
()

Курсы по программированию на языке Clojure

Новости — Интернет
Группа Интернет

3 марта 2014 года стартуют курсы про программированию на языке Clojure.

Предварительный план занятий:

  • Основы языка Clojure и инструменты работы с ним.
  • Интеграция с Java.
  • Параллельное программирование.
  • Метапрограммирование.
  • Доступ к данным (SQL и NoSQL).
  • Веб-приложение на Clojure.
  • ClojureScript для разработки Single-Page Application.

>>> Подробности

 ,

ymn
()

x86: почему CISC-команды медленнее?

Форум — Development

Неоднократно слышал, что:

  • leave медленнее, чем
    mov esp, ebp
    pop ebp
    
  • enter N, 0 медленнее, чем
    push ebp
    mov ebp, esp
    sub esp, N
    
  • stosd медленнее, чем
    mov [es:edi], eax
    add edi, 4
    
  • repne scasb медленнее, чем наивный strchr()

и так далее.

Вопрос: почему? Не похрен ли, одна команда развернётся в 10 микроопераций или четыре команды развернутся в столько же? В первом случае даже нагрузка на декодер меньше.

 ,

intelfx
()

Профессия — архитектор

Форум — Development

Здравствуй, ЛОР. Предлагаю обсудить профессию, по-английски называемую «Enterprise Architect», а по-русски — как придется, чаще всего «системный архитектор» или просто «архитектор».

Пожалуй, больше нигде я не встречал столь неоднозначного отношения к этой профессии, как на ЛОРе. Иногда в это слово вкладывается чуть ли не ругательный смысл. Я думаю, если есть критика, то есть и ее причины — а мне особенно интересно понять, как обстоят дела с этой профессией в России и странах СНГ.

И вот почему. Многие мои друзья и коллеги, оставшиеся в России (особенно молодежь), часто спрашивают меня: какими я вижу перспективы развития молодого талантливого программиста? Вопрос закономерный — всю жизнь работать программером не будешь. У этой профессии есть весьма ощутимый потолок, как в смысле финансов, так и в смысле развития. (К тому же, в последние годы профессия стремительно теряет престиж, но это тема для отдельного обсуждения.) Общепринятое мнение на эту тему таково, что для программиста есть два карьерных пути: управленческий и экспертно-технический. Иными словами, либо идти в проджект-менеджеры и выше, либо — в архитекторы. Но насколько это актуально для реалий российского IT XXI века? Если с управленцами все более-менее понятно, то какова роль архитектора? Давайте выясним.

Начну с себя. По многолетнему опыту работы им самым, могу сказать, что «архитектором» эта профессия называется не зря. Параллелей со строительством очень много. Только обычный архитектор делает чертежи зданий, а enterprise architect — «чертежи» программных систем, в общепринятой нотации (чаще всего UML), понятной всем IT-специалистам. «Строительные материалы» (технологии) выбирает архитектор, в соответствии с требованиями. В задачи enterprise architect также входит работа с аналитиками и постановщиками (чтобы понять, что именно чертить), с проджект-менеджером и разработчиками («прорабом» и «строителями»). В процессе разработки — непрерывный контроль за тем, чтобы «строители» клали «кирпичи» в четком соответствии с чертежами. В некоторых случаях архитектор берет на себя реализацию исключительно сложных частей программы. Определение требований к аппаратному обеспечению, планирование развертывания, контроль за его осуществлением, планирование нагрузочных и функциональных тестов — все это архитекторские задачи. В последнее время стали востребованы freelance architects, т.е. архитекторы по контракту, на один проект. По своему опыту могу сказать, что эта схема является выигрышной для обеих сторон. Работодателя избавляет от необходимости содержать дорогостоящего специалиста в промежутках между проектами (ведь такие промежутки могут составлять месяцы и годы). А архитектора освобождает от корпоративного рабства и позволяет ему работать в режиме полгода на проект — полгода на хорошую жизнь (отдохнуть, попутешествовать, заняться творчеством, наукой, преподаванием и т.п.)

Но, оговорюсь, это все сугубо европейский опыт. А как дела обстоят в России и СНГ? Как ты считаешь, ЛОР? Действительно ли архитектор — это необходимая профессия, вершина развития программиста по техническому пути, ключевая позиция при разработке крупных систем? Или же это бездельник, обвешанный фантиками-сертификатами, сыплющий баззвордами и получающий деньги ни за что?

Kuka
()

Программирование в C, как собирать большие проекты в Makefile.am

Форум — Development

Привет, народ. Давненько ЛОР читаю, но пришла беда, нужна помощь.
Есть проект на Си, который нужно собрать. Но си только учил когда то, а тут надо сделать здесь и сейчас. Потом почитаю еще.
Сам проект вроде собирается и компилируются нормально. В Makefile.am есть
pkglib_LTLIBRARIES = libmyprog.la
libmyprog_la_SOURCES = env.c
libmyprog_la_LDFLAGS = -avoid-version
в результате генерируется libmyprog.la и libmyprog.so. Не понятно почему он решил собрать shared library. Все остальное для сборки самого проекта под unix, винду и цепляет для нужды проекта -lssl -lcrypto. configure.ac почти все автоматом и часть своего, но там ничего такого.
Необходимо собрать из проекта статическую библиотеку. Если как есть собрать и запустить ./configure -enable-static, соберет libmyprog.a, libmyprog.la и libmyprog.so, но в libmyprog.a собирается только один класс как и в случае с libmyprog.la.
Разное пробовал, не получается. К примеру добавил так

noinst_LIBRARIES = libmyprog.a
lib_LIBRARIES = libmyprog.a
libmyprog_a_SOURCES = $(common_headers) $(common_sources) $(unix_sources)
libmyprog_a_LDFLAGS = -L$(SSLDIR)/lib64 -L$(SSLDIR)/lib -I/usr/local/ssl/include/ -L/usr/local/ssl/lib/ -lssl -lcrypto
во время make-а, пишет что не видит openssl. Видать не цепляет -lssl -lcrypto.
Что делать? Как быть?
Напишите нормальный, полный пример для среднего проекта. Что бы любой просто глянул и сразу понял. Позже буду курить маны, сейчас надо быстрее сделать работу, а на этом застрял. Можете описать разработку проектов под unix на Си коротко и ясно? Буду вводить свой вклад в сообщество.
Для быстрого ответа лучше было написать в трекер или тут нормально? четто многоватто вопросов

Заранее благодарен.
P.S: надо через automake, autotools, Makefile.am. Руками примеры я собирал, но надо Makefile.am.

 , ,

zipzipzip
()

Опенсорсные Unix-like ОС

Форум — General

Не подкинете список открытых Unix-подобных ОС, пригодных для изучения? (Не слишком больших по объему кода). Кстати - sortix.org, вроде не так уж и много народа ее пилит, а уже есть некоторые вкусные фишки, например 64 бита умеет, в отличии от того же миникса.

 , ,

Meyer
()

Какой из лиспов лучше взять?

Форум — Development

Собственно меня интересуют батарейки и возможность компиляции в нативный код (последнее в меньшей степени). Как я понял, серьезно следует рассматривать только различные реализации CL и Scheme (Racket).

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

 ,

Deleted
()

имитация электрических схем

Форум — Development

Есть в СИКП глава по имитации электрических логических схем. Там суть в том, что есть логический сигнал 0 или 1, передающее элементы - провода и элементы изменяющее его, которые оперируют с сигналами на входящих проводах и устанавливают на исходящих. Так же есть расписание, в которое добавляются следующие прохождения сигналов по проводам. Всё красиво и круто и я не раз уже возвращаюсь к этой программе, меняя и расширяя кое-что. Но каждый раз ловлю затык как только пытаюсь сделать по такой же схеме имитацию простых электрических схем, где есть источники питания и цепи протекания тока. Мне не нужно считать падения напряжения и переходные процессы, но простым логическим сигналом, не имеющем полярности, уже не обойтись

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

Может у кого-нибудь свежие идеи или кто-нибудь занимался подобным?

На всякий случай простой прототип - http://pastebin.ru/LQE6h4ax

 , ,

pseudo-cat
()

Функциональщина: кложура или где?

Форум — Development

Собственно хотел причаститься к современному миру ФП. Последнее, что было - пролог в универе. Таки хотел бы узнать у тех, кто уже настрадался, начать ли точить clojure или сие поделие недостойно моего скудного запаса времени. Если не clojure, тогда кто?

 , ,

maverik
()

Вторая книга после K&R

Форум — Development

Посоветуйте, что читать после K&R?

 ,

int13h
()

C++: Указатели, ссылки, компиляторы.

Форум — Development

Цитата:

Ссылки часто путают с указателями, вероятно, потому, что компиляторы C++ часто реализуют ссылки как указатели.

C++: Священные знания - Стивен С. Дьюхерст

Как далеки они от народа... Это он что, серьезно так считает?

То есть, он не понимает, что ссылки с указателями путают из-за ублюдочного контекстно-зависимого синтаксиса? Он не понимает, что человек путает использование «&» перед именем переменной для описания ссылки, и использование «&» перед именем переменной для получения адреса, передаваемого в указатель? Он этого, блин, не замечает? И он учит других людей C++?

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

Xintrea
()

Embedded GUI/GUI composer

Форум — Development

и так: есть STM32 с 64k SRAM'а; есть SPI графический oled дисплей 128x128 о 16 бит на пиксель;

нужно: найти/реализовать удобную, компактную и производительную GUI либу;

лень подсказывает отрезать 32к от срама под фреймбуфер а далее либо по таймеру гнать фрейм либо использовать транзакцию и гнать фрейм по завершению транзакции. жаба подсказывает (ибо отдавать 1/2 ОЗУ) задуматься о композитинге фрейма из примитивов (битмап, линия, символ[ы], etc) непосредственно во время передачи.

собственно дискач.

 cortex-m3, , ,

exception13
()

Сисадмин: разочарование в профессии

Форум — Talks

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

Работа админом толкает человека к универсальности, развитию сразу по многим направлениям. Служба каталогов, файл-сервер, веб-сервер, сервер системы контроля версий, база данных + бекап/восстановление и репликация, сетевое оборудование, мониторинг, немного телефонии, железо, некромантия(старое железо) ... Если у программистов в рабочей книжке обычно пишут «инженер-программист», то админ может требовать себе запись «программист-разнорабочий». И это очень плохо. Пусть есть два человека. Первый имеет объём знаний по пяти разным областям, допустим, равный условной единице. Второй - три условных единицы в одной области, и по одной в двух других.Суммарный объём их знаний одинаков. Первый стоит x денег, а второй - 3x. Потом первый повысил свою квалификацию во всех пяти областях до 2. Второй - повысил квалификацию в своей основной области до 8, не прогрессируя в остальных. Объём полученных ими новых знаний одинаков. Первый теперь стоит 2x, второй - 8x. Второй будет делать сложные и интересные задачи по специализации, развиваясь и получая удовольствие от работы. Первый будет служить «во-всех-бочках-затычкой».

Интересные задачи делают узкие специалисты. Нормальные деньги получают узкие специалисты. Это, на самом деле, тесно связанные между собой вещи: не всякая высокооплачиваемая работа интересна, но всякая интересная работа - высокооплачиваема. Правило имеет исключения, вроде развиливающихся предприятий оборонки, но речь сейчас не о них. Да, разумеется, много где требуются люди с широкой специализацией. Но если где-то нужен сетевик и, по совместительству, DBA - значит там нужен не очень сильный сетевик и не слишком хороший DBA. На уровне «лишь бы работало». Потому что эта контора не может себе позволить большее, ну или не хочет - если это не основное направление её деятельности. Если бы там были серьёзные задачи - этих двоих набирали бы по отдельности.

Абсолютная специализация, конечно, тоже плохо. Во-первых, специалист по закручиванию семиугольной нижней гайки потеряет работу, когда такие гайки выпускать перестанут. Во-вторых, многие области IT сильно связаны между собой, поэтому результат работы сферического спеца в вакууме, не знакомого ни с одной из смежных областей, просто невозможно никуда приткнуть. Но именно знакомства, более или менее поверхностного, вполне достаточно. Дальнейшее углубление в смежные темы - потеря времени, которое можно было потратить на то, чем занимаешься. Просто надо осваивать свою область чуть шире, чем контекст конкретных узких задач, и всё будет хорошо. Не думаю, что нормальный DBA, всю жизнь работавший с MS SQL, после внезапного наступления вендокапца :) испытает особые трудности с переползанием на Oracle.

Когда на 4 курсе, не имея профильного образования, я пошёл работать за смешные копейки в тех. поддержку, занимаясь понемногу всем подряд - это была очень серьёзная ошибка. Если бы вместо этого я потратил пару месяцев на базовое обучение программированию, и пошёл junior-программистом, за те же смешные копейки, но с более узкой специализацией - сейчас я занимался бы гораздо более интересными и захватывающими вещами, причём за большие деньги.

selivan
()

Лисп. Точечные пары.

Форум — Development

С недавних пор взялся за изучение лиспа и никак не могу нигде найти инфу, зачем нужны точечные пары. Я знаю, что любой список является в Лиспе точечной парой, прошу не объяснять, об этом везде пишется. Но неясно, почему нельзя, как бы, выпилить вообще эти точки, на мой взгляд, нет такой ситуации, где нельзя было бы обойтись просто списками. Собственно, в Newlisp, ЕМНИП, так оно и сделано. Единственным мыслимым применением точечных пар, мне представляется ситуация, когда из точечной пары достается хвост, который не является списком, например, (cdr (1 . 2)), но очевидно, что здесь мы могли бы тоже обойтись списком и доставать 2 значение с помощью cadr. Создается такое ощущение, что эта структура имела какое то особенное значение в старых лиспах, а сейчас осталась как атавизм.

Какой же настоящий смысл данной структуры?

 

phill
()

Почему Лисп умер.

Форум — Development

Очень часто в лисп-срачах на лоре можно наткнутся на аргументы лиспоненавистников, навроде «если лисп настолько крут, почему на нем не пишут энтерпрайз?» или «покажите мне годные приложения на лиспе». Также, иногда, встречаются жалобы, вроде таких: «Изучаю лисп на протяжении года, но пока не увидел значительных отличий от [some_lang]. Не понимаю, о какой-такой особенной мощи тут все говорят». Эти замечания, наверное, отчасти справедливы, во всяком случае, они основаны на реальном опыте.

Я нашел цитату Алана Кея сегодня, которая, наверное проясняет данный вопрос, чуть более чем полностью:

Да, в действительности и Lisp и Smalltalk были погублены восьмибитными микропроцессорами и не потому, что они были восьмибитными, а потому что их архитектура была плохой и они они поставили крест на динамических языках. Сегодня эти языки работают приемлемо несмотря на ту же плохую архитектуру из-за гигантских размеров кэша 2 уровня. Некоторая часть работы производится быстро прямо в кэше. Поэтому Lisp и Smalltalk жизнеспособны сегодня. Но оба они, конечно, абсолютно устарели

 ,

anonimous
()

Что почитать по ядру?

Форум — General

Осваиваюсь с gentoo, решил собрать ядро по нормальному(поначалу напихал все как попало и совершенно забыл про модули, в общем кошмар). Что посоветуете почитать по этой теме?

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

P.S. В сети довольно много информации, но она частично устаревшая, частично дублируется, частично вообще не о том, на свои вопросы четких ответов не могу найти.

P.P.S. Еще есть идея взять конфиг от debian и собрать ядро на его основе, но какой смысл тогда изучать gentoo?

 ,

Deleted
()

Нужно ли учить ассемблер?

Форум — Development

Пишу на С++. Нужно ли учить ассемблер? МатЧасть (устройство оперативной памяти, указатели, сколько какая переменная занимает памяти) и так далее примерно знаю (опыт кодинга на с++).

Также очень поверхностно знаю как работает процессор(читал разные статьи на хабре).

Будет ли мне профить от учения ассемблера (Под профитом понимаю лучшее понимание Си-шного кода при роботе с памятью указателями и разные принципы оптимизации)

UPD Мне все равно на мой заработок. Я хочу программировать как бог.

Перемещено mono из talks

knotri
()

Посоветуйте что нибудь серьезнее Logisim

Форум — Development

Сел на выходных, запилил простенький процессор. В логисиме все очень просто, хочу усложнить задачу - использовать реальные компоненты, а не абстрактные И, ИЛИ, РЕГИСТР и т.д.

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

Из пожеланий - доки/уроки по инструменту и не сильная, эм, разрозненность компонентов что ли. А то я встречал что то такое, там пакетов 20 было 0о.

 , ,

Deleted
()

LC - это метапрограммирование.

Форум — Development

Осмысливая итоги своей прошлой попытки понять LC, пришла мысль, довольно очевидная, которая почему-то не приходила раньше.

LC - это метапрограммирование в чистейшем виде. Любая апликация возвращает либо другую аппликацию, либо абстракцию, которая «ждет» аргумента, чтобы вновь применить и абстрагировать. Иными словами, любое выражение LC - это диспетчер, который принимает на вход другого диспетчера, и возвращает его же. Выражение в LC не может манипулировать реальными программами, оно манипулирует только метапрограммами!

Отсюда возникает интересное следствие. LC имеет своего рода «утечку абстракции», только в прпотивоположном направлении. Когда мы пишем «обычную» программу, мы «спускаемся вниз» по абстракции. Например, если мы пишем:

(lambda(x y) (x y))
мы подразумеваем: взять любые 2 программы и применить одну к другой. Здесь мы подразумеваем, обычно, что на аргументные места призойдет подстановка реальных программ, которые выдадут нам какой-то результат. Никто не запрещает, конечно, подать такие программы, которые породят другую абстракцию, но ступени абстракции тут очевидны. Мы «спускаемся вниз» от общего к частному. Теперь рассмотрим другой код
(define tst
  (((lambda(x) (lambda(y) (x y))) (lambda(x) x)) (lambda(x) (lambda(y) (x y)))))

(write ((tst (lambda(x) x)) 'b)) ; --> b
Здесь, вроде бы очевидно, что мы «поднимаемся» по абстракции. Исходная метапрограмма берет на вход 2 метапрограммы, и применяет одну к другой. Но на выхлопе, мы имеем ту же метапрограмму, что и исходная! Неясно, на каком уровне абстракции мы работаем в каждый конкретный момент вычисления, абстракция «течет», уничтожаются барьеры абстракции, и это, на мой взгляд, коренное противоречие.

 , lc, ,

anonimous
()