|
2.13, Аноним (13), 14:42, 21/06/2019 [^] [^^] [^^^] [ответить]
| –3 +/– |
Чего только сищники не придумают, только чтобы оправдать свое невежество и неумение подбирать инструмент под задачу
| |
|
3.24, YetAnotherOnanym (ok), 20:44, 21/06/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
И что же такого особого в задаче "написать платёжную систему", что Руби для неё предпочтительнее си?
| |
|
4.33, Илья (??), 06:29, 22/06/2019 [^] [^^] [^^^] [ответить]
| –2 +/– |
Для подсчёта денег лучше всего годятся статически типизированные, защищённые от небезопасного поведения языки.
Практика показывает, что это не си и не руби
| |
|
5.39, Аноним (39), 16:06, 22/06/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Практика показывает, что это не си и не руби
Практика подсказывает, что это не зависит от языка, но многие берут жабу.
| |
|
4.48, Аноним (48), 09:47, 25/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
То, что для платежной системы надо сосредоточиться на бизнес-логике, а не на низкоуровневых приблудах.
| |
|
5.49, YetAnotherOnanym (ok), 11:02, 25/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> То, что для платежной системы надо сосредоточиться на бизнес-логике, а не на
> низкоуровневых приблудах.
Если для разработчика принципиально важно не знать, что происходит "под капотом" (хотя бы в самых общих чертах) - гнать такого разработчика мокрыми тряпками.
| |
|
6.50, Аноним (50), 23:51, 26/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Вы таки не понимаете разницу между "знать что под капотом" и "ковыряться целыми днями под капотом вместо того, за что деньги платят".
| |
|
7.51, Andrey Mitrofanov_N0 (??), 08:57, 27/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Вы таки не понимаете разницу между "знать что под капотом" и "ковыряться
> целыми днями под капотом вместо того, за что деньги платят".
Я знаю разницу. Я даже бесплатно тебе расскажу. Страдай.
Ковыряешься бесплатно под капотом пару-другую лет. Потом внезапно за это тебе начинают платить. Это сразу [относительно] становится скучно и неинтересно. Профессионально тянешь резину ещё пару лет (опенет здесь -- для этого!). ...в это время копаешь бесплатно под другим капотом. Потом внезапно.... [см.п.2] .....PROFFIT//
| |
|
|
|
|
3.30, _ (??), 01:26, 22/06/2019 [^] [^^] [^^^] [ответить]
| –3 +/– |
Чего только ребе не придумает, чтобы его совсем напрочь! не забыли :)
| |
|
2.36, Аноним (36), 10:30, 22/06/2019 [^] [^^] [^^^] [ответить]
| –2 +/– |
>Чего только не придумают, лижь бы на СИ-89 не писать
Ты ещё про K&R вспомни. Ну уж предложил бы C11 что-ли.
| |
|
1.3, hfgsd (?), 11:24, 21/06/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +21 +/– |
Сначала делают динамическую типизацию, а затем начинают ее героически преодолевать по мере популяризации ЯП. Забавное явление.
| |
|
2.6, Andrey Mitrofanov_N0 (??), 12:11, 21/06/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Сначала делают динамическую типизацию, а затем начинают ее героически преодолевать по мере
> популяризации ЯП. Забавное явление.
Не, не так.
Сначала понапишут курсовичков про не-динамические типзации, потом, такие талантливые!, работать пойдут, по-на-раз-работают этих своих не-динамических и... опаньки -- #Успех.
Выкидываем это через стену: гитхаб, новость на опенет, все дела.
Теперь нужно набирать на работу новых студентов -- и всё по кругу.
| |
2.8, Аноним (8), 13:42, 21/06/2019 [^] [^^] [^^^] [ответить] | –3 +/– | Динамическая типизация больше подходит для ООП языков - без неё они теряют в гиб... большой текст свёрнут, показать | |
|
3.12, Аноним (12), 14:32, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> костылями, в виде [...] дженериков
Ну я даже не знаю, что тут сказать. Значит, нормальные алгоритмы вывода типов, ко-/контравариантность, и все наработки начиная с ML – так, костыли и насмарку?
| |
3.15, Аноним (13), 14:53, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
>Динамическая типизация больше подходит для ООП языков - без неё они теряют в гибкости и обрастают костылями, в виде адаптеров и дженериков.
Вы так говорите, как будто для функциональных языков она не подходит.
| |
3.16, Аноним (2), 14:57, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Класс SomeMessage не реализует интерфейс IIndexedMessage, из-за этого, несмотря на то, что он имеет необходимый протокол, его нельзя передать в функцию storeMessage
Пример надуманный. А даже если он и возникнет на практике, ничто не мешает сделать
class IndexedSomeMessage extends SomeMessage implements IIndexedMessage {
/*тут ничего нет. Буквально ничего нет. Ну может конструктор, не делающий ничего, кроме super()*/
}
| |
|
4.44, Ordu (ok), 17:30, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
В некотором смысле, это уже динамическая типизация, потому что если мы работаем с SomeMessage в коде, то статически мы не знаем какого типа этот объект. Это не совсем-совсем динамическая типизация, потому что что-то о его типе мы знаем, в конце-концов SomeMessage -- это уже тип. Но и всё же, мы приходим к динамическому диспатчу, вероятно, ещё и к dynamic_cast. А dynamic_cast -- это уже стопроцентов динамическая типизация.
| |
|
3.17, Аноним (2), 15:46, 21/06/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
> несмотря на то, что он имеет необходимый протокол
Это предпосылка, взятая на веру. То, что методы имеют одинаковую сигнатуру, еще не говорит о том, что класс "по идее" реализует такой-то интерфейс. Часть требований к интерфейсу может быть оформлена не на ЯП, а в комментариях; к примеру, IIndexedMessage может иметь требование "getIndex должен возвращать исключительно положительные числа". А то, что SomeMessage никак не упоминает в себе IIndexedMessage, является индикатором того, что тебе нужно провести дополнительное исследование того, насколько успешным будет использование SomeMessage в качестве IIndexedMessage. Если бы этот implements был указан, тогда бы ты мог сказать, что автор SomeMessage действительно заявил работоспособность своего класса со всякими там storeMessage.
| |
3.19, Аноним (19), 16:14, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Динамическая типизация больше подходит для ООП языков - без неё они теряют в гибкости и обрастают костылями, в виде адаптеров и дженериков.
Это если в них утиной типизации нет.
| |
3.20, Аноним (20), 16:49, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
>Класс SomeMessage не реализует интерфейс IIndexedMessage, из-за этого, несмотря на то, что он имеет необходимый протокол, его нельзя передать в функцию storeMessage.
И правильно. "Реализовал интерфейс" = "взял на себя обязательство гарантировать соответствие реализации интерфейсу", "не реализовал интерфейс" = "каким образом можно гарантировать, что именно нужно поведение реализовано за похожими именами функций?".
>поверх динамической типизации грамотно приделана хорошая
>статическая система типов
Взаимоисключающие параграфы. Ты скажи: проверка типов где будет происходить - в рантайме или в компайлтайме?
| |
|
4.32, Аноним (32), 03:43, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Он же написал:
> хорошая статическая система типов, с runtime-проверками
:)
| |
|
3.38, funny.falcon (?), 11:18, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Посмотрите на Go: если объект реализует методы интерфейса, то он автоматически реализует интерфейс. И есть делегирование через "безымянные" поля.
Не сказать, что это идеал. Но вполне юзабельно и имеет практически ценность.
| |
|
2.14, Аноним (13), 14:44, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Для прототипа или небольшого проекта, разрабатываемого одним автором, динамическая типизация удобнее, для большого проекта с кучей разработчиков, которые к тому же с годами меняются, удобнее статическая
| |
|
3.21, Аноним (20), 16:53, 21/06/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Лол нет.
Динамическая типизация подходит для мелких скриптов, если проект выше, то в нем ВНЕЗАПНО появляются тесты на передаваемые типы, которые теперь ВНЕЗАПНО нужно писать вручную и которые теперь отстреливают только в рантайме (если их стриггерить). Это такие бешенные неудобство, что я не понимаю зачем вообще нужна динамическая типизация
| |
|
|
|
2.7, НяшМяш (ok), 13:14, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Если этого не видно, не значит, что не пишут. Например, тот же гитхаб на рубях.
| |
|
3.9, Аноним (4), 13:47, 21/06/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
гитхаб создавался и писался когда руби был на подъеме, тогда все восхищались им и пророчили рельсам славу убийцы пхп
| |
|
4.22, Аноним (22), 17:46, 21/06/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
а потом они переехали на пхп и все заработало гораздо быстрее и дешевле
| |
|
|
2.25, Аноним (25), 22:16, 21/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Он занял своё почётное место на свалке истории рядом с Perl. Но разумеется найдётся куча народу которая на нём активно пилит своё легаси, а кому-то это наверняка даже нравится.
| |
|
3.37, Аноним (37), 11:13, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Он занял своё почётное место на свалке истории рядом с Perl.
Пишете так, как будто есть какая-то вменяемая альтернатива Ruby. Уж явно не Go его заменит.
| |
|
4.40, Аноним (39), 16:08, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Пишете так, как будто есть какая-то вменяемая альтернатива Ruby.
Что в нем такого, что нельзя ничем заменить?
| |
|
|
|
|
2.41, Аноним (39), 16:09, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
не все любят приседать со штангой... что мы дети малые? нам нужно деньги делать.
| |
|
1.23, Аноним (23), 19:47, 21/06/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Хочу писать на Lisp, как он был в универе на языках программирования, так я его полюбил, жаль только мало слышно про него
| |
|
2.26, Аноним (25), 22:17, 21/06/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Это же бородатая шутка от ЯП, что вы хотели про неё нового услышать?
| |
|
3.34, Andrey Mitrofanov_N0 (??), 07:44, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Ставь себе GuixSD и наслаждайся.
>GuixSD
Они мажорно изменили в версии 1.0 теперь
и пакадж-менеджер, и дистрибутив называют Guix.
| |
|
2.42, Аноним (39), 16:10, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
> так я его полюбил, жаль только мало слышно про него
Теперь его любит кто-то другой, смирись.
| |
|
1.27, GentooBoy (ok), 22:29, 21/06/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Просто оставлю это здесь для тех кто все еще холиварит по поводу типизации:
Dynamically typed languages give you a lot of flexibility. Type changes do not need manual propagation through your program. It also gives you more mental flexibility, as you can think more in terms of transformations, operations, and algorithms. Flexibility lets you move faster, change things quickly, and iterate at a faster velocity. But it comes at a cost. It’s a lot easier to miss potential problems and these problems are generally very hard to debug. Plus these features generally comes with a performance penalty.
| |
|
2.43, Аноним (39), 16:13, 22/06/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Никто не холиварит, цитатой ты доказал, что динамическая типизация для наколеночных, одноразовых поделий. Продакшен код - это тебе не олимипиадные задачки решать.
| |
2.46, IB (?), 18:50, 22/06/2019 [^] [^^] [^^^] [ответить]
| +/– |
Scala/Scheme/F#/Ocaml/Haskel и более новомодные смотрят на тебя как
Они смеют говорить о трансформациях и алгоритмах @$%^&^$*$
| |
|
1.31, Аноним (31), 02:33, 22/06/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Типизированный Ruby уже давно существует - называется Pascal.
Ребята изобрели велосипед, причем хуже оригинала.
| |
|