Всем привет! Мы довольно медленно делаем улучшения на смартлабе, а идей по созданию пользы уже просто через край.
По этому случаю хотелось бы привлечь на сдельной основне еще одного программиста для создания некоторых полезных модулей.
Если вы PHP прогер, у вас есть свободное время и вас устраивает почасовая оплата, предлагаю его направить на благо посетителей смартлаба.
Заполните плиз анкету и я свяжусь с вами для обсуждения деталей.
Спасибо.
Если вы разбираетесь в опционах, это будет огромный ++
Ну и укажите хоть используете какие frameworkи или чистых пых (на 7 переехали надеюсь уже?) )
мне надо функционал сделать, который мы уже сами в свой фреймворк воткнем
пых 7 давно
расскажи про систему кеширования, насколько база от чего зависимая, кронов много? какую нагрузку должны выдерживать, отдельный сервак или совместно? сколько запросов и на базу тз сделали?
я ж не программист.
я не могу рассказать про кеширование, про кроны, про нагрузку, запросы и тп)))
Тимофей Мартынов, ну как бы я программист который делал консъерж сервис визы, инет магазины, работал с рэмблер, киви, занимался интеграцией всей этой херни на сайты… вот как-то так.
просто чтобы подробнее понимали задучу
для начала калькулятор фьючей
потом журнал сделок
а потом всё сложнее сложнее сложнее))))
Сейчас тебе тут советов накидают как делать надо, а как не надо =))
а я ее не озвучил хыхы
Есть такая штука, что разрабы из регионов смотрят на тебя с удивленными глазами. Какое еще тестовое задание? Мне еще на него время тратить? Эта фишка привита только в основном в Мск и Питере или с заказчиками из Мск и Питера.
сколько почасовая?
Сколько вы просите за час?
Тимофей Мартынов, на не mainstream — людей меньше и они дороже, да и в данной задаче не факт технологическое преимущество перерастет в адекватную финансовую отдачу.
fintech.tinkoff.ru/tfschool/scala
это так просто мысли на вентилятор :)
есть такой тип программистов, которым важнее лаконичность своего кода, чем решение реальных задач бизнеса
meat, нормальная статическая типизация неплохо увеличивает вероятность того код заработает сразу и более менее как должен. т.е. часть ошибок что при динамической типизации ловится прогоном тестов причем с полным покрытием всех ветвлений, при нормальной статической типизации выявляется на этапе компиляции.
Есть много секторов бизнеса — тот же финтех, где ошибка в коде может стоить очень дорого.
в php уже давно можно строить AST деревья и анализировать
в typescript можно делать такую проверку до запуска кода, но компилируемый код будет без типов
что-то ты отстал от жизни :)
в php не только эти типы данных, а статический анализ без запуска кода уже давно можно делать, тоже самое делает и твой компилятор на java/scala
если бы ты хоть раз строил такие деревья, то понял бы о чем речь
meat, чушь у тебя в голове. вероятно частное не было понято.
если говорить в общем — в php даже элементарных дженериков на уровне языка нету. поэтому я молчу о ковариантности и контравариантности. php до системы типов java еще шагать и шагать, а система типов scala и haskell на порядок сложнее. какой нормальный статический анализ получится ?
я тебе объяснил, что можно сделать тоже самое в php до запуска кода, ты споришь все равно, хотя наверное ни разу не писал на нем и не использовал утилиты статического анализа
такие ошибки ловятся в php еще до запуска кода
а зачем?
может ты перебрал с абстракциями чутка, код делается проще, чем ты привык :)
meat, статический анализ — это образно проверка соответствует ли данный код системе типов языка или нет. если система типов простая — то и проверка простая. нету у тебя дженириков в языке — твой статический анализ не сможет гарантированно обнаружить ошибку когда ты не правильно работаешь с элементами хэш-а/массива. чем сложнее система типов — тем больше гарантий, на уровне scala, haskell успешная компиляция значит что все уже неплохо и проверок там значительно больше.
Чем сложнее система типов языка — тем меньше тестов в случае правильного ее использования. то что php что то умеет из статического анализа я не спорю, но это совсем не много.
писать можно по разному, смотря что и для чего делаешь, но иметь возможность интенсивно использовать абстракции очень полезно.
meat, лаконичность — это когда несколько строк по возможности заменяют простыни, т.е. в языке есть разнообразные инструменты абстракции в том числе встраиваемые DSL (domain specific language), чем меньше строк тем проще валидировать, найти ошибку или менять бизнес логику.
я говорил про сами абстракции, а не про повторное использование кода, это разные вещи
ну да, тебе не нужно тестировать сторонний код, а только свой
короче для тебя лаконичность сводится к обычному повторному использованию кода, я понял :)
и причем тут язык программирования? алло
но dsl это же:
т.е. нужно знать для чего применять
но ты же говорил про лаконичность и надежность, а DSL языки применимы только к определенным задачам, а значит в общем случае проблемы не решают
meat, твое определение о DSL в общем виде, а я пишу о embedded DSL — дополняющих основной язык программирования.
Совсем простой и немного притянутый за уши пример: допустим в неком php коде активно используется циклы, но так как операторы циклов в php довольно бедные — кода получается много, для примера в common-lisp есть один из самых мощных операторов циклов loop (http://lisper.ru/pcl/loop-for-black-belts), и более того если loop мало есть библиотека iterate c еще более мощным операторов циклов (https://common-lisp.net/project/iterate/doc/index.html). Можно даже сказать loop и iterate - спец. встраиваемые языки для описания итераций (embedded DSL).
Вернемся к коду, если бы в php был циклический оператор который мог сделать minimizing/maximizing и некую логику за один проход как loop или iterate или возможность определить такой оператор — это бы сильно сократило наш код.
Применять эти вещи конечно стоит далеко не во всех ситуациях, но сама возможность адаптировать язык под задачу очень полезна.
как и в большинстве языков программирования
ну это опять сравнения языков идет
в php достаточно для этого есть встроенных функций в само ядро для работы с чем-то несколько раз (array_*), а также создание итераторов и генераторов
Другой пример — в php нету peg парсера на уровне языке, в scala тоже, но для последней есть библиотека расширяющая язык
https://github.com/sirthias/parboiled2#example
https://github.com/hafriedlander/php-peg
какую задачу на php ты хочешь решить, что из-за этого стал его критиковать?
meat, php-peg - внешний кодогенератор, нужно запустить:
php ./cli.php ExampleParser.peg.inc > ExampleParser.php<br />
а грамматика задается в виде комментария — а не как часть языка со статической проверкой.я не говорю что в php проблема с решением реальных задач, по крайней мере связанных с вебом, вопрос в эффективности
по сути тот же фреймворк для си, в чем и была идея изначальная у Расмуса Лердорфа
уже даже научились писать расширения на php-подобном языке, транслировать его в си, компилировать его потом в готовые модули и подключать к php, в итоге вызов функций фреймворка на php, но код на чистом си исполняется (точнее уже в машинных кодах)
из минусов это то, что нет сохранения состояний, поэтому каждый запрос это новый запуск кода, но проблему решает кеширование и механизм сессий
что касается скорости — самый быстрый из common-lisp-ов (тоже динамическая типизация + опциональные статические аннотации как в php) sbcl — местами почти приближается к С, если писать с некоторыми усилиями.
stackoverflow.com/questions/34999052/squeeze-more-speed-from-common-lisp-sbcl
Обычно в новых языках количество быдлокодеров не очень большое, поэтому они (языки) как бы классные и дают результат (для менеджеров).
dnmsk, я бы все-таки не обобщал — языки с другим синтаксисом и языки с другой парадигмой.