Picture_3131?1356409898

о, мне как раз этот дизайн "выпал" где-то пару недель–месяц назад

Picture_3131?1356409898
+2

А почему пост состоит из какого-то большого непонятного списка?

Picture_3131?1356409898
+3

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

Очевидно, что если мы возьмём «well-crafted software», оно с лёгкостью уделает «only working software» на большой дистанции. Это как сложности сортировок. При определённых константах O(N^2) оказывается быстрее, чем O(N log N). Но неизбежно проиграет.

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

Сам не знаю, что хотел сказать, в общем.

Picture_3131?1356409898

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

Picture_3131?1356409898
+1

Ну, если «среднестатистический программист» не может решить все эти проблемы и построить свой ООП-лунапарк на C, то он плохой C-программист, вот и всё.

Picture_3131?1356409898
+2

Не знаю, на C ничего серьёзного не разрабатывал, я плохой C-программист, но я уверен, что на C возможно писать в ООП-стиле. Объекты ведь в голове, а не в языке.

Да и если погуглить, можно найти парочку книг по этой теме.

Picture_3131?1356409898
+3

Вы пытаетесь заставить C делать то, что действительно трудно ему сделать «из коробки». Я сказал «возможно», но не говорил, что это необходимо именно так «как там».

Просто под ООП я понимаю не «конструкторы, деструкторы, доступ к парент контексту, наследование» и прочие «конкретные» штуки. Для меня ООП это разделение частей системы на элементарные части — объекты. Это вполне реально сделать лишь при помощи структур и функций. Да, может быть с полиморфизмом будет немного сложно и придётся играть с нетипизированными указателями/писать «лишние» функции и передавать их в другие функции.

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

Си великолепно выполняет свои задачи и как подтверждение этому — этот комментарий. Он пройдёт через ядро линукса на моём ноутбуке, пройдёт через роутер, прошивка которого наверняка написана на Си, пройдёт через десятки железок, в которых Си принял своё участие, попадёт на сервер dev.by, снова пройдёт через ядро линукса (скорее всего), попадёт к nginx'у, написанного на 90% на Си, затем попадёт к бэкэнду, который сохранит его в базу данных, которая скорее всего на 50% написана на Си (смотрел распределение ЯП к mariadb на github).

И если это кто-то читает, значит Си справился со своей задачей.

Picture_3131?1356409898
+1

Там, кстати, продолжение есть: http://damienkatz.net/2013/01/follow_up_to_the_unreasonable.html

Picture_3131?1356409898

Квантовый компьютер ведь нельзя эмулировать, разве нет?

Picture_3131?1356409898

Кому-нибудь действительно нужно 50 тысяч потоков? Если там что-то постоянно считается, то что-то мне кажется, кол-во потоков равное кол-ву ядер вполне оптимально. А если не постоянно, то зачем столько потоков, если можно сделать какой-нибудь пул для асинхронных задач?

Picture_3131?1356409898

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

Picture_3131?1356409898

У моей сестры телефон от Prestigio. Туда можно чистый андроид как-нибудь поставить? Половина на русском, половина на английском, некоторые опции вообще пропали (например, блокировка экрана).

Picture_3131?1356409898
-2

> Модно: препроцессоры | Вчерашний день: полный стек на одном языке

CoffeScript'ы и прочее такое безобразие, которое просто переименовывает одно ключевое в другое, а затем ломает весь синтаксис с каким-нибудь апдейтов — это шлак. Фрагментировать и без того не особо большую технологию — зло.

Полный стек на одном языке это как минимум эффективно по ресурсам, т.к. они не тратятся на сериализацию/десериализацию данных, чтение/запись в сокет и так далее.

> Модно: Node.js | Вчерашний день: JavaEE, Ruby on Rails, PHP

Я писал на node.js, писал на Java, пытался использовать Spring, когда-то давно использовал PHP.

Да, node.js восхитительна по сравнению с Java EE. Но это не от того, что node.js быстрее, нет. Это лишь из-за того, что они используют такую себе асинхронную схему, которая совсем не похожа на то, что обычно используют в джаве.

В ближайшее время я хочу навелосипедить, кхм... Java Exitprise Stack, который бы совмещал в себе и потоки и асинхронность и что я уверен будет работать в разы быстрее и эффективнее ноды. Благо в восьмёрке ввели лямбды и теперь передача коллбеков не сопровождается такой болью.

Зарплаты

1700
Медиана зарплаты в ИТ за 3 месяца
НОЯ
ДЕК
ЯНВ
ФЕВ
МАР
АПР
1700
1575
1500
1900
1600
1500
Использование материалов, размещенных на сайте, разрешается при условии прямой гиперссылки на dev.by. Ссылка должна быть размещена в подзаголовке или в первом абзаце публикации.