Пост-антисрач: обсудим любимые языки программирования

+116
в блоге Общеличный блог
Собственно, сабж.
А то всю неделю посты-флудилки какие-то скверные — скандалы/интриги/расследования еще туды-сюды, но три последних случая уже за гранью.
Давайте пообщаемся, как порядочные люди. Надоело читать унылые перекидывания шкурками.

И чтоб не быть голословным, мой список, в примерном порядке от самых лучших к менее лучшим, хотя сравнивать иные довольно сложно:
1) ObjectPascal — сделан людьми и для людей, имхо, лучший из языков общего назначения.
2) C# — всё то, что хотел бы иметь в ObjectPascal, но не мог иметь за отсутствием.
3) Basic (процедурный, не ООП) — теплый и пушистый, язык детства :-)
4) Компонентный Паскаль (он же Оберон, но не совсем Оберон) и D — это типа платонической любви, любить люблю, но использовать почти не использую :-(

Ваши варианты и предпочтения?

PS: Упреждая вопрос — С и С++ я не то, чтобы совсем не люблю, да и использовать приходится повсеместно — но считаю их порождением укуренных 70-х, сотворенными ради стёба над разработчиками и крайне сложными для практического использования в серьезных проектах. Субъективно, конечно.

272 комментария

антисрач

Ха-ха

Питон говно
andreymal Изменён автором
+3
Нет, Джаваскрипт говно.
low_spirit
+4
Подтверждаю.
Хотя, сам язык в принципе прикольный, особенно его идейно правильная объектная модель,
но то куда его сейчас пытаются пропихнуть это просто пушка.
f13proxima
+1
но то куда его сейчас пытаются пропихнуть это просто пушка
JavaScript — сделай свою жопу интерактивной!
Farxial Изменён автором
+1
JopaQuery
f13proxima
+3
А мне Питон норм. На нём QuArK написан. Но я не программист, так что мнение дилетантское.)
VIM
0
Конкретнее, хотя бы там «Жаба тормозит!»
Ruberoid
0
Ну, начать можно с того, что питон тормозит сильнее джавы (и скалы), по последним данным от Орхи, в 250 раз)
andreymal
+3
Ну если ничего не делать кроме хеловордов и планов на то как ты будешь что то делать, то я слышал, что питон тормозит сильнее жабы.
Слушай, а тыж погромист? Ты должен знать почему у Джираи призыв — язык, у Орочимару призыв — язык, а у Цунаде призыв — кусман текста.
Ruberoid
0
Ты должен знать почему у Джираи призыв — язык, у Орочимару призыв — язык, а у Цунаде призыв — кусман текста.
То чувство, когда понимаешь, что всё-таки нужно было учить современные языки, чтобы понимать, что пишут люди
Farxial Изменён автором
+2
О, знакомые слова встретились! Пора вспоминать НТР!)))
Спойлер
VIM
0
Ну тут-то зачем? Мне этого на работе хватает.
Verevkin
+1
Ардуино — всё что смог хоть как-то юзать, ибо не кодер ни разу, а девайсы некоторые хотелось собрать.
brass-cheetah
0
Да. Порой хочется за выходной собрать какую-нибудь свистелку-перделку чисто поиграться, а как глянешь сколько всего перелопатить надо…
partizan150
+1
чисто поиграться

Я бы поспорил. У меня на Дуньке система автополива растений, и поворотный стол для предметной съёмки в процессе сборки. Моя, теперь уже бывшая контора вообще клепала сотни девайсов на Дуне на продажу, и весьма успешно. Я уже не первый раз слышу мнение о том, что Ардуино — это несерьёзная платформа, и чисто на поиграться, но не понимаю, с чего оно возникло (факты и практика говорят о пригодности для серьёзных целей)
brass-cheetah Изменён автором
0
поспорил

А с чем? Я не говорил что ардуино прям только для свистелок-перделок. Кому-то поиграться, а кто-то умный дом на ней собирает. Ты ведь и сам знаешь что на ардуине проще и быстрее собирать чем брать отдельно МК и с нуля обвешивать его железками и прошивать аки синхрофазотрон.
partizan150
0
А, тогда пардон. Просто слишком много словил упрёков от «труъ МКшников», и теперь уже везде их вижу. Май бэд короче)
brass-cheetah
0
У меня самого ардуино имеется. Uno в пластиковой коробочке для макетной сборки, а потом просто на Nano все распаиваю. Я давно засматривался на МК, но гуглящиеся статьи по «МК для начинающих» приводили меня в расстройство.
partizan150
0
У меня нет цели стать прожженым программистом-микроконтроллерщиком. Просто хобби из списка моих хобби. Недавно вот вообще швейную машинку себе раздобыл.
partizan150
0
гуглящиеся статьи по «МК для начинающих»

Я так понял, что не всё и страшно, достаточно начать с минимальной обвязки и кустарной схемы прошивки через COM или LPT.
Сам еще не дошел, правда :-)
NTFS
0
Ты не учел разницу в наших с тобой уровнях знаний. Из железной части я только платы делать не умею. А уже разведенную распаяю без ошибок. А вот в программной части я слаб. Из того что я в свое время читал мне совершенно не было понятно на чем и как писать вообще. Еще и стращают что мол «попутаете фьюзы — залочите МК». В ардуине к ним вообще никакого доступа не дают. И среда разработки сразу вот она не нужно ничего отдельно искать и выбирать.
partizan150
0
на чем и как писать вообще

Вроде как PonyProg для начинающих дружелюбен.
Но опять же сам еще не дошел.

А залоченный МК это неизбежные потери. Я сразу себя пять штук по полтиннику взял самых простых, на первые шаги. Часть спалю по-любому.
NTFS
0
Я в нем тогда увидел лишь прошиватор в который вставляешь уже готовую прошивку, а не среду с подсветкой синтаксиса и компиллятором.
partizan150
0
Блин, а возможно, кстати.
Тогда надо смотреть всякие AVR-IDE и прочую подборку.
NTFS
0
Вот. А с ассемблером у меня никогда дружбы не было. Я не понимаю его настолько, что даже пресловутое hello world у меня никогда не получалось.
partizan150
0
Почти все контроллеры понимают Си.
NTFS
0
Я тогда из статей ничего не понял. Это восемь лет назад было.
partizan150
0
Там очень суровый сплав из железных и программных дел, я сам еще не разобрался даже в голове.
Нужно начать, я так думаю. Как с LPT играться закончу, займусь.
NTFS
0
Кстати условие так и не срабатывает.
partizan150
0
А пробовал заменить его на (1==1), просто чтобы реле включилось и не отключалось? Может, цепь или контакт барахлит, а код корректен?
NTFS Изменён автором
0
Если я уберу второе условие то реле включится. И не будет выключаться даже если время будет меньше чем переменная. Еще я пытался присвоить время переменной. Но там вообще выдает не меняющееся число 261. Реле исправно, я его уже отдельно отладил.
partizan150
0
А если просто выводить показатели времени в лог? Пишет правильные числа?
NTFS
0
Если их отдельно на монитор посылаю, то правильные. А из переменной только неправильное число.
partizan150
0
Возможно, само понятие переменной там не совсем переменная, а что-то вроде указателя на область памяти. В Си такое случается.
Примеры аналогичного кода в Интернет искал?
NTFS Изменён автором
0
Искал. Ничего не нашел. Но фишка уже немного в другом. Я сейчас сделал еще одну программу, где имитируется ход секунд, секунды пишутся в переменную и отправляются на сравнение которое я тебе показывал. И в ней все работает как задумано!
partizan150
+1
Такое впечатление что ересит библиотека часов.
partizan150
0
Тоже возможно.
Потому эти работы и сложные. Чисто схемы — там проблемы железные. Чисто софт — там биты и байты ищем. А тут нужно держать всё и сразу в голове.

библиотека часов.

Я помню, что таймеры точного времени должны как-то инициализироваться.
NTFS Изменён автором
0
Решил. Подключил другую библиотеку. Теперь обрабатывается как нужно.
partizan150
0
partizan150
0
Люблю запах рабочего кода по утрам. Это запах победы!
NTFS
+1
Теперь установить всё это дело в курятник и не вспоминать пока не сломается.
partizan150
0
Трехосевой магнитометр —
partizan150
0
Вот какие дела делаются, пока я пытаюсь GPIO для LPT спаять на FreeDOS :-(
NTFS Изменён автором
0
Я уже и gps-данные от спутников получал.
partizan150
0
Это я тоже хотел бы научиться — тогда смогу сделать бортовой компьютер для байдарки, чтобы он показывал мне расстояние до берега. Телефон на Android не перенес последнего похода по воде :-(
NTFS Изменён автором
0
Частично это пересекается с задумкой моей навигационной железки. Там gps в паре с магнитометром стоять будут и вначале я хочу просто получать координаты и направление на магнитный север.
partizan150
0
А мне и координат достаточно — загружу в память точки берега по 100 м сеткой и вычислю квадратный корень. Просто у нас ГИМС вроде как начал свирепствовать насчет двух морских миль для корыт вроде моего, вот и хочу всегда строго знать, пират ли я подлый, или честный байдарочник.
NTFS
0
Тогда тебе нужна ардуина, GPS-модуль, дисплей, источник питания (батарея или powerbank, но говорят что лучше батарея, т.к. при питании 7-12в ардуино стабильнее работает чем от 5в) и корпус. За вечер соберешь и запустишь.
partizan150
0
… и денежка, чтобы всё это закупить :-)
NTFS
0
Ну епт, денежка на все нужна модуля с неба задарма не падают. Это в любом случае будет дешевле «сурьезных» навигаторов.
Мне обошлось:
Arduino nano — 287,80
Gps модуль GY-NEO6MV2 — 335,20
OLED дисплей — 206
Еще я другую антенну ради сравнения с штатной заказал за 178,59
Питать можешь от тех же крон или сборки пальчиковых батареек (как это реализовано в навигаторах Garmin)/
Корпус — любая коробка которая тебе приглянется.
partizan150
0
Цены скромные. Заказывал у китайцев?
NTFS
0
Мне проще сразу у них честно заказать, чем гадать кто из наших пришлет мне тех же китайцев за дороже.
partizan150
0
но не понимаю, с чего оно возникло

По той же причине, по которой сишники ругались на Delphi с момента его появления.
Снобизм.
На С++/WinAPI нужно страдать и превозмогать, читать сотни страниц руководства и вызовов, а тут любой школьник мышкой повозил, приложение собрал и уже продаёт его.
NTFS
+2
Ну а по существу — дыа. Delphi — это самый удобный и быстрый инструмент, который есть.
МегаПрога
Verevkin
-1
А с появлением FreePascalCompiler стало возможно юзать дельфийские наработки повсюду, от FreeBSD до нативного DOS. Не без бубна, но всё же.
NTFS
0
Free Pascal round испортил ) Там теперь не обычное математическое округление, а «банковское».
Ori
0
О как, не знал. Сегодня исследую.
NTFS
0
А Паскаль и Бейсик вообще применяются нынче где-нибудь? В вакансиях никогда не натыкался.
low_spirit
0
Такие блатные места никогда не пустуют. Поэтому и вакансий нетЪ. :))
Verevkin
-1
Не погромист, но для прикладных утилит пользую дельфина. Шлифую асмом.
lunarinitiate
0
Язык программирования моей мечты (здоровенный...), который бы я разработал, если бы не был ленивой задницей
Farxial
+2
У чего быстрее и лучше всего компиляторы под все возможные платформы и архитектуры, больше всего исходного кода и примеров — то и лучше. Вы что-нибудь кроме C и C++ знаете с такими результатами? Отож… Но для каждой задачи лучше подходит какой-нибудь свой инструмент, вот только если обсуждать самый универсальный, то…
INFERION Изменён автором
+1
У чего быстрее и лучше всего компиляторы под все возможные платформы и архитектуры, больше всего исходного кода и примеров — то и лучше

Ясень пень, Си и его потомки — это промышленный стандарт, сам много чего пишу, по желанию и по необходимости.
NTFS
0
Вы что-нибудь кроме C и C++ знаете с такими результатами?
Абсолютно любой язык на базе LLVM (C и C++ просто в их числе)
andreymal
+1
Только если ты сверхразум, которому не нужны доки.
f13proxima
0
чо?
andreymal
0
Ну блэт, может я просто не достаточно прошарена чтоб осознать как работает твой ллвм, но тем не менее.
Допустим, у меня есть желание написать какую-нибудь хуйню для uefi на русте.
Скорее всего я найду какой-нибудь враппер, написанный какими-то васянами ради лулзов, с непонятными доками, ссылки на которые протухли еще во времена царя гороха.
f13proxima
+1
Ну всё же «непонятные доки» ≠ «не нужны доки»
У руста такие проблемы сейчас и правда есть. Но это дело времени, новые языки в принципе не могут со старта иметь сразу миллионы либ с доками на все случаи жизни, сами языки от этого хуже не становятся
И вообще возьми да сделай свой враппер с качественными доками, чо
andreymal
+1
Ну так. О том и речь шла в начале ветки, дескать достоинства цэ и крестов в том что у них и кучи либ есть, и доки, и коммунити, и кроссплатформенный код писать можно, если осторожно. Это не повод упираться как старпер и кричать «цэ крута а вы все пидорасы», но блэт, ллвм не сделает из нового языка старый и прожженый.
f13proxima
+1
ссылки на которые протухли еще во времена царя гороха
Вообще не понял, про что ты, `cargo doc --open` открывает тебе в браузере оффлайн (ну, если крейты уже скачаны) всю документацию ко всему графу зависимости крейтов, использующихся в проекте. LLVM вообще не имеет отношения к документации, потому что эта хрень используется исключительно в бэк-энде компилятора и юзеры языка с ней напрямую не соприкасаются.
Wolfram Изменён автором
0
Вот только в 98% либ этот ваш cargo doc всего лишь вываливает спискоту имеющихся структур и функций с тремя с половиной строчками человеческого текста, пользы от которого всё равно нет. И лучшей документацией в итоге оказывается код
andreymal
0
Ну это да, потому что большинство либ ещё не дошли до 1.0.0 :D
Wolfram
0
LLVM вообще не имеет отношения к документации, потому что эта хрень используется исключительно в бэк-энде компилятора и юзеры языка с ней напрямую не соприкасаются.
Я потому и спросила как поддержка ллвм поможет приравнять мой вчера придуманный васяноязык к си и крестам по уровню поддержки сообществом, о которой говорил челик в начале ветки.
f13proxima
+1
Всё же мне кажется, что сравнивать языки по либам/докам/сообществу не совсем справедливо, иначе мы так и продолжим жить с говёной, но зато документированной сишечкой ближайшие несколько веков. Нет либ — нужно брать и делать, нет доков — нужно брать и писать)

Ну, если ты, конечно, не кровавый ынтырпрайз с программистами, работающими за еду, у которых срок сдачи проекта вчера и пилить либы с доками просто некогда. К счастью, тот же руст (ну и, может, даже гошечка) демонстрирует, что такие кровавые ынтырпрайзы не у всех, и пилить либы с доками всё же есть кому, и я буду надеяться, что однажды руст переплюнет эти ваши сишечки и тебе завезут нормальный uefi враппер)
andreymal
+1
Основная проблема со всеми убийцами С/С++ не в том, что нету либ или доков. Проблема в том, что они не дают такого решающего удобства по сравнению с без потери функционала, чтобы для них эти либы и доки появились.
Ginger_Strings
0
Можно поинтересоваться, чего не даёт руст?
andreymal
0
Это надо не у меня интересоваться, я с ним не работал еще особо. Это надо интересоваться у сообщества. Я говорю про общий принцип, который не только для ЯП работает: на что-то новое массово переходят только тогда, когда оно ЗАМЕТНО круче старого. Когда затраты на переход окупаются.
Ginger_Strings
0
Если чо, в Firefox запарились полностью переписать CSS-движок на расте и инкорпорировать через FFI-интерфейс со всеми остальными запчастями, написанными на плюсах.
Firefox Quantum includes Stylo, a pure-Rust CSS engine that makes full use of Rust’s “Fearless Concurrency” to speed up page styling. It’s the first major component of Servo to be integrated with Firefox, and is a major milestone for Servo, Firefox, and Rust. It replaces approximately 160,000 lines of C++ with 85,000 lines of Rust.
85к строк за один день не пишутся, так что народ определённо видит преимущества.
Wolfram
0
Ну, у нас есть один пример от не самой крупной фирмы.
Круто, чо. Это за сколько там лет существования Раста?
Ginger_Strings
0
Ну, это сомнительно.
Касаемо потери функционала — ну, если способность написать непонятную хуйню, которая крашится через раз со случайной ошибкой для тебя важная фича, то руст тебе не зайдет, да.
f13proxima
+1
Кстати, хороший аргумент в пользу сей, обычных и приплюснутых. Совместными усилиями создателей и сообщества они документированы просто великолепно. На том же уровне разве что Питон еще документирован — но то и не удивительно, он сильно проще и специально делался как можно проще.
Ginger_Strings
0
Ерунду написал: 1) язык на базе LLVM быть не может, на базе LLVM может быть реализация языка 2) Сам факт, что реализация на LLVM, не делает язык сравнимым по скорости с C++ автоматически.
А да, читаю наперекосяк, кроссплатформенность. Ну это вообще странно ставить C++ в достоинство, ибо с кроссплатформенностью там боль, с LLVM или без.
Wolfram Изменён автором
+1
с кроссплатформенностью там боль

Эм, я еще не углублялся очень уж глубоко, но проекты на 1000-2000 строк у меня под Linux собирались без проблем, то, что исходно для Windows делал.
Если, конечно, не было #include <Windows.h>
NTFS
0
Ну 1000-2000 своих строк же ерунда, а вот когда пытаешься собрать какую-то чужую ерунду с гитхаба на десятки тысяч, потанцевать с бубном хоть под одной из двух систем наверняка придётся.
Wolfram
+1
Я не думаю, что есть язык или среда, которая позволит и корректно запустить и собрать десятки тысяч строк на хотя бы двух ОС без бубна.
Даже Java не идеал, хотя я запускал много и оно работало хорошо.
NTFS Изменён автором
+1
У меня 1-2к своих строк через пару месяцев магическим образом превращаются в 1-2к строк, написанных психонавтом во время бэд-трипа. Особенно если это кресты.
f13proxima
0
язык на базе LLVM быть не может, на базе LLVM может быть реализация языка
«Нечего сказать — доебись до орфографии» ©

Сам факт, что реализация на LLVM, не делает язык сравнимым по скорости с C++ автоматически
Да, с «абсолютно» я чутка погорячился. Что не отменяет того, что, например, тот же руст очень даже сравним (если у измеряльщиков руки не кривы, а то всякое бывало)
andreymal
0
больше всего исходного кода и примеров
В большинстве случаев того, как делать не надо :D
Wolfram
0
Ну, цэ у меня на первом месте просто потому что синдром утенка.
«Порождение укуренных» — это кресты.
А еще мне вполне себе нравится жаба, лол. Кроме дженериков, дженерики там эквивалентны затычке, и толку от них куда меньше чем от крестовых шаблонов, не смотря на то что они типа не Ъ полиморфизм и все такое. Хуй знает зачем они там вообще нужны.
Но все же, именно после жабы до меня начало доходить в чем мякотка ооп.
А еще я люблю пыхтончик.
f13proxima
0
Да ну нах, в пятницу на ночь глядя такие темы подымать — это некомильфо.
понячий куб
Verevkin
-1
Пост-антисрач
Ну ты как не на табуне, сейчас тебе из этого
от самых лучших к менее лучшим
Ваши варианты и предпочтения?
устроят программистосрач :D
Dany
+1
программистосрач

Уж лучше так, чем про заявления, домогательства, пьяных оргов и озабоченных юзеров.
PS: Мой пост содержит некоторую иронию, но только некоторую.
NTFS Изменён автором
0
Будут заявления, домогательства, пьяные админы и озабоченные заказчики…
partizan150
0
Этот тред заставил меня хотеть ночью с пятницы на субботу переучивать теорию ООП, в которой у меня есть пробелы.
А мне и норм, всё равно спать не хочу.
low_spirit
0
теорию ООП

Инкапсуляция, наследование, полиморфизм. Больше ничего не нужно.

Остальное — это толстые справочники паттернов, чтобы не изобретать велосипеды. Мартин Фаулер вам в помощь.
NTFS
+1
Точно, я ж ещё паттерны запомнить не могу.
low_spirit
0
Вообще, опять же субъективно, паттерны должны идти в плотной тройке «рефакторинг — разработка через тестирование — паттерны». Тогда становится понятно, почему лучше выбирать стандартные виды архитектуры.
NTFS
0
А затем, когда выучишь паттерны, начинаешь понимать страшное — что ООП для них не только не нужен, но в большинстве случаев не оптимален :3
Ginger_Strings
0
Как можно сделать «мост» без наследования и виртуальных методов? Ну, наверно, можно, но это будет чудовище.
NTFS
0
Фигня в том, что сам по себе мост имеет особый смысл только в рамках ООП.
Если ты работаешь в компонентно-ориентированном подходе, например, мост тебе нахрен не сдался.
Ginger_Strings Изменён автором
0
Ну не знаю, как еще отделить сложную реализацию от сложного же представления.

Вот я сейчас страдаю *возможно, даже начну реализовывать) насчет универсального движка, который мог бы использовать OpenGL и DirectX, а на уровне функции рендера — вызывать обобщенный Frame->Render().
И как тут без двух иерархий параллельных?
NTFS Изменён автором
0
Я не копался в графике, честно говоря, поэтому не могу подсказать. И не утверждаю, что ООП всегда сосет. Просто в какой-то момент я понял, что ООП у меня в программах дальше контейнеров и, соответственно, простых абстракций, практически не используется.
Ginger_Strings
0
Значит, не приходилось создавать сложную архитектуру. Это хорошо, это значит, что модель правильная.
Но у меня так не получается.
NTFS
0
Я, конечно, много хорошего о функциональщине слышал, но пока не решаюсь. Даже не смотря на то, что звали на Скалу. Мне не особо легко даётся всё вот это вот, и поэтому я решил пройти весь путь без срезов — прежде, чем забрасывать Джаву, хочу на опыте понять, в каких именно местах она устроена неправильно и какими технологиями надо обмазываться, чтобы всё было норм. Надеюсь, так будет лучше для усвоения.
low_spirit
0
Не-не-не, я не конкретно про функциональное программирование. Других подходов очень много, на одной вики пара десятков перечислено. Их мало кто умеет хорошо применять прям все и многие их них очень специфичны либо трудны в понимании. Но у меня был томный момент, когда узнал про компонентный подход и понял, что значительная часть вещей, которые я делал ООПшно, на самом деле делается куда проще.

Тут главное просто понимать, что ООП, мягко говоря, не всегда оптимален, и интересоваться, как можно сделать еще.
Ginger_Strings
0
Антисрачу нужен гимн / саундтрек.
Спойлер
VIM
+1
Ага, как гусю второй клюв
Boshy
0
Кря-кря! В смысле, кек!)))
VIM
0
Ну вообще-то с 2 клювами можно атаковать 2 цели сразу — DPS увеличивается вдвое, и если это его свойство — редкость, это ценный воин в масс. PvP.
Farxial
+1
Дуал клювов? Я бы посмотрел! :)
VIM
0
Мой путь программиста начался недавно, но вставлю все-таки свои пять копеек.

Не стоит мне этого говорить, наверное, но мой любимый язык — это, пожалуй, C++. Гибкий и мощный, он дает большую свободу, хоть и не полную; но язычок этот с острым нравом. Внешне безобидный код может вызвать неопределенное поведение только так, и если не знать язык во всех тонкостях, он может изрядно попортить нервы. Кроме того, если в нем сильно отдаляться от идеологии zero overhead, то он будет не самым лучшим помощником. Если бы меня заставили дать совет по плюсам — не недооценивайте и не переоценивайте его. Горячо посоветовать писать на нем также не могу.

В силу недостатка опыта знаю я языков очень немного. Окромя плюсов, их всего-то: C, MATLAB и немного Python. Pascal забыл после школы. По совету одного умного человека отсюда решил начать изучать Go, и мое отношение к плюсам стало более уравновешенным. (Но меня дико смущает, что гошные бинарники большие получаются. Ну не должен Hello World весить под мегабайт, не должен!)
std282
0
А, и еще Haskell-ем интересовался какое-то время. Но бросил. Ибо я не хочу изучать язык, который мне был бы полезен так же, как курс дифференциальных уравнений.
std282
0
Програмистоветки и так редко собирают кассу, ибо это достаточно узкая прослойка ценителей, а тут прям весь пост этому посвящен
Boshy
0
достаточно узкая прослойка ценителей

Фиг знает, но у меня ощущение, что каждый второй понилюб — айтишник, а каждый пятый — профессиональный разработчик :-)
NTFS
0
Ты сильно переоцениваешь эту статистику иначе бы посты на айти тему по пол коаря бы собирали точно
Boshy Изменён автором
0
У меня такое же ощущуние. И не только на табуне.

Словно форум анимешников.
Fett
+1
Возможно — если я правильно угадал с сайтом, ты судишь по сайту, на котором обитает слишком мало программистов (потому что нужно больше ).
Farxial
0
Фарксиал, тут просто тупо народу больше, в процентном соотношении их все равно меньшинство. И можно ты не будешь рассказывать мне по какому сайту я сужу?
Boshy Изменён автором
0
Но конечно 3 поста тысячника за неделю это просто пушка
Boshy
0
А перед пушкой — вентилятор.
Dany
+1
И три камаза.
partizan150
0
Все и так знают, что Ассемблер лучше всех! На нём всё и везде написано. ВСЁ И ВЕЗДЕ.
Mainframe
+1
А какая тогда разница, на чем написано, если все равно исполняется машинный код?
std282
0
Но машинный код и есть ассемблер, только в чистейшей, первозданной форме!
Mainframe
0
Ассемблер — это программа-транслятор :3
f13proxima
0
А потому что программы на уровне выше ассемблера пишутся для людей, а не для компьютера. Для компьютера пишутся jmp и mov.
NTFS
0
Ну…

А какая тогда разница, на чем написано, если все равно исполняется машинный код?

Я акцент сделал именно на этом слове не просто так!
std282 Изменён автором
0
Чем выше уровень абстракции написанного, тем ниже вероятность, что в машинный код пойдет ошибка.
Грубо, когда ты пишешь Writeln('Hello'); это лучше, чем пять строк ассемблерного кода. В пять раз ниже вероятность ошибки.
NTFS
0
RTS
Navk
0
Сам умею писать только на С и ассемблере. И постоянно ругаю С за туповатость и ограниченность возможностей, и неочевидность, из-за которой ошибки иногда получаю в стиле «выстрелил себе в колено». А ассемблер за то, что много чего копать по архитектуре каждый раз нужно, и в случае со контроллерами сложнее какого-нибудь AVR — ну его нафиг. Но зато какой офигенный язык! Прямой доступ ко всему, без заморочек, полная свобода, максимально быстрый и простой код, который делает не просто что тебе нужно, а ещё и КАК тебе нужно. С ним я ни разу не страдал, а вот с С постоянно думаю как мне его переписать, чтоб выиграть пару инструкций и избавиться от дрожания времени выполнения, и всё равно по листингу результат — говно.
INFERION Изменён автором
0
Pascal/Basic — с них все начинали.
С++ — больше я ни на чём сейчас даже Hello World написать не смогу.
DragonKnight
0
Я бы не сказал, что хорошо знаю языки — как тут лучший выбирать?
Выдам просто свои впечатления:

С — идеально для байтоебских задач, большие программы целиком писать бы не стал;
С++ — мой любимый и основной язык. Дает хороший контроль над ресурсами, есть много годных и отполированных либ практически подо все, что угодно;
С# — как по мне, тонны лишнего кода приходится писать из-за жестко вшитого классового подхода. Не показался ничем интереснее С++;
Питон — охрененный инструмент для написания всяких простых обработок;
Lua — как Питон, только ЕЩЕ проще. Хороший скриптовый язык;
Java — сейчас не знаю, когда писал на ней давным-давно была очень тяжелой и неудобной.

Веб-языков особо не касался, так что про них сказать ничего особо не могу. Кроме PHP. Это пиздец язык-помойка.
Ginger_Strings
+1
Нейро-лингвистическое.
Чисто теоретически, на нём можно написать скрипт, под воздействием которого странные программюги становятся не странными.
Octavian
0
под воздействием которого странные программюги становятся не странными.
Это вещественно-упарывательное.
f13proxima
0
Возможно, рекреационное действие только поможет вам. Большинство странностей, граничащих или даже выходящих в патологии, вызваны исключительно профессиональной деятельностью и тем влиянием на разум, что оказывает постоянная необходимость работать с кодом или чем-то близким.
Octavian
0
а чё тут происходит :DDD
Damset
0
обсудим любимые языки программирования

Фортран и ассемблер
Что не избавляет от знания кучи всего от бейсиков и С++ до извращений тира Питона, Рапиры и одного из первй языков ИИ — Форта. Аду не знаю, сразу говорю…
Navk
+1
У меня когда-то была книжка «Язык программирования Ада». Книга выглядела совсем не инфернально, в отличие от того же «Словаря дескрипторов» энциклопедического формата.)))
VIM
0
А я и не говорю, что Ада сложен. Просто я его не учил, предпочтя Форт, и он мне так никогда и не понадобился…
Navk
0
Я каламбурил на тему программирования ада. ;)
VIM
0
Просто оставлю это тут и пойду...
Спойлер
Cypher
+6
Из всех, что я знаю и умею — C#. Вполне себе вменяемый, жаль только что gui под него приходится писать на wpf, а не на html.
С C++ связаны тёплые воспоминания первого опыта в ООП, но он тупо слишком громоздкий. Ну и основная (для меня) проблема этого языка — сборка. Почему то никогда ничего не хочет с первого раза подключаться...
GadS
0
Но ведь gui на html это же ересь
andreymal
-2
А gui на wpf — это костыли во имя отображения изображений.
GadS
0
жаль только что gui под него приходится писать на wpf, а не на html.

WebBrowser вставляешь в форму, запускаешь локальный http-сервер внутри C# и побеждаешь.
Я так делал и было очень удобно. Плюс, когда клиент возжелал сделать сайт такой же — почти ничего не переделывал, только собрал CGI на C#.
NTFS
0
Фу
andreymal
0
Что фу? HTML + CSS + JS — самый простой способ создать быстрый и платформенно-независимый интерфейс.
Qt с его библиотеками стоит довольно близко, но там порог вхождения выше.
NTFS
0
Самый простой — не значит самый хороший, скорее даже наоборот (привет от текстовых мессенджеров, жрущих оперативку чуть ли не больше чем Doom 2016)
У хороших вещей порог вхождения действительно обычно выше
andreymal
+2
Самый простой — не значит самый хороший

Я в курсе, но я прикладник-бизнесмен, мне чем быстрее сделать и сдать, тем быстрее получу денежку и накормлю семью ужином.
А считать оперативку в 2018, когда линейка на гигабайт стоит как бургер — ну не показатель.
NTFS
0
У меня есть более полезные дела для этого гигабайта, чем оверхед-хлам для текстового мессенджера. Ну или подари мне 64 гига оперативки, я не против)
Ты накормил одну свою семью, а миллионы других семей по всему миру нервничают и недоедают из-за недостаточной производительности элементарнейших программ, не надо так
andreymal
+1
Ты накормил одну свою семью

И тем доволен.

нервничают и недоедают

«Нельзя ли то, что они недоедают, собирать и присылать нам?»©

Вопрос, конечно, достаточно старый — но по факту, чем проще и быстрее разработка, тем более эффективна отрасль. Я тоже люблю ковырять asm для linux, радуясь, как я легко впихиваю в 2Кб целую программу с GUI.
Вот только для клиентов я пишу на C#, потому что на asm я буду делать её тридцать лет и три года.

Если бы сейчас делали строго на технологиях нативного кода и нативных же интерфейсов — софт стоил бы сотни нефти и писался бы годами, да и программистов было бы в 100 раз меньше. Примерно на уровне начала 90-х была бы отрасль. Никому бы не понравилось.
NTFS
+2
C 90-х нативные интерфейсы весьма сильно развились, вспомнить хотя бы тот же React Native. Так что это конкретно ты просто застрял в 90-х :D
andreymal
0
React Native.

И зачем мне тратить кучу времени, чтобы выучить кустарный интерфейс только для конкретной платформы, когда я могу выучить стандартный HTML и писать под что угодно?
NTFS
0
А в итоге всё выглядит ненативно и тормозит. Спасибо, не надо. Тебя будут ненавидеть все, кроме твоей семьи и заказчиков)
andreymal
0
Тебя будут ненавидеть все

Я не сотка баксов, чтобы меня все любили.
NTFS
0
Окей, отныне я тебя ненавижу за твой чрезмерно эгоистичный подход к программированию)
andreymal
0
Ух, личный ненавистник завелся! День прожит не зря.
NTFS
0
За бесплатно делаешь как хочешь.
За деньги делаешь как надо.
Всё ж просто.
low_spirit
+1
А надо «хуяк хуяк и в продакшн» — таковы требования заказчика. Вот и получается, что опенсорсы то как раз обычно и вытягивают. На энтузиазме почему-то получается более быстрый и менее глючный код, как я погляжу…
INFERION Изменён автором
-1
Так всё коммерческое ПО сейчас так вот и пишется… есть даже ёмкое определение: «быдлокодеоры», ну или «говнокодеры».
INFERION
0
Фу, блядь, чувак :(
f13proxima
-1
Два чаю этому растоману, если я доберусь до семей тех кто пишет всякие вк-мессенджеры, я заставлю детей и женщин переписывать эту дрисню в каторжном порядке.
f13proxima
0
Ну возьми да напиши сам, и посрами всех.
А то гениальных программистов много, а Windows только одна.
NTFS
0
Telegram уже написан
andreymal
0
Так плюются, пишут и срамят, если цопирайт позволяет.
Кроме того, я вообще не понимаю этой практики написания «типа десктопных» приложений на html/css/js, особенно если речь идет о каком-нибудь сраном мессенджере. Ну если ты такой весь из себя веб-мачо, или тебе просто лень писать нормальный гуй на кутях, ну напиши ты сайт. Один фаерфокс всяко-разно будет занимать меньше памяти чем полтора.
f13proxima
0
Ух, вот это костыль.
0x1042E
0
Это не костыль, а один из промышленных способов реализовать красивый пользовательский интерфейс с перспективой перевода под другие ОС или в веб.
В чем-то уступающий тому же Qt или Java, в чём-то превосходящий.
NTFS
0
«промышленный» == «костыль»
andreymal
0
И разворачивать у себя локальный http-сервер, чтобы отрисовать GUI…
Это настолько здоровенный костыль, что прям не костыль уже, а фича.
0x1042E Изменён автором
0
Да не надо ничего разворачивать, открыть сокет на прослушивание в программе, да отправлять ответы на HTTP-запросы.
Зато офигенные возможности по настройке GUI — нарисовал черно-белое, отправил дизайнеру, он сделал CSS-файл и опа — твой невзрачный проект уже смотрится как ёлочка нарядная.
Сравнить это с унылыми интерфейсами Java.
В Qt есть подобное (можно ставить CSS для компонент), но куда менее удобное на прикладном уровне.
NTFS
0
И как оно по ресурсам?
0x1042E
0
Какие нафиг ресурсы, щас терабайт оперативки дешевле гамбургера
andreymal
0
Мммм, по 100-200 мб на каждое окно интерфейса… Эх, за универсальность нужно платить.
0x1042E
0
Вот принципиально сейчас поднял свои наработки того периода — дельфийская обертка на Chromium с загруженным GUI средней сложности жрет всего-то 300Мб. Даже в те годы это была ерунда, а сейчас вообще пыль. Одна голая ОС занимает гиг-другой в памяти.
NTFS Изменён автором
0
Всего-то? У меня десять лет назад оперативки на компе было 256МБ
andreymal
0
У меня десять лет назад оперативки на компе было 256МБ

В 2008 — 256Мб? Аскетичненько. XP по минимуму занимает 128 в памяти, на софт всего 128 остаётся.
Ставил клиентам всегда по 512, везде были благодарны как слоны, ибо подкачка в те благостные времена тормозила как улитка на склоне.
NTFS
0
А в школе, в которой я учился, компьютеры с 256/512МБ оперативки были аж до самого моего выпускного
Вот на этом школьном ноутбуке вроде бы 512МБ оперативки, 2010-2012

(Фоточек компьютера с 256МБ оперативки, на который даже убунта 12.04 отказывалась ставиться, не осталось)
andreymal
0
Не, ну так-то и у меня в офисе есть машинка с 64Мб ОЗУ, но я на ней не работаю, а только умиляюсь.
NTFS
0
Мы все рады за тебя, только вот многим приходится и работать тоже. И ненавидим, потому что ты отказываешься выглянуть в реальный мир за пределами ынтырпрайза и увидеть, что за такими машинками ещё работают)
andreymal
0
что за такими машинками ещё работают)

Мои клиенты за такими машинками не работают, потому что чтобы стать клиентом и заказать что-то — нужно как минимум иметь деньги на заказ, а раз ест деньги на заказ, то есть деньги и на новое железо.
Отсюда следует простое и очевидное правило — музыку заказывает тот, кто платит.
В глубине души (где-то очень глубоко) меня тоже печалит тот факт, что задачи, которые успешно решались в конце 90-х на компах с 32мегабайта ОЗУ, ныне требуют гигабайтов оперативы. Но так устроена эта отрасль.
NTFS
+1
Сколько там WPF сжирает на GUI? 50 мб?
0x1042E
0
Во-первых, я писал про гигабайт, а не про терабайт, не кривляйся, не девочка. Во-вторых, ну блин, два гигабайта ОЗУ стоят 1000 рублей. Если клиент мне платит 10 тыс рублей за софт, неужто у него не будет еще одной тысячи на планку?
Даже 32-битная система держит три гига, а где сейчас 32-битные видим? Почти нигде.

А софт, который будет жрать не гигабайт, а скажем, в десять раз меньше — очевидно, и стоить будет в десять раз дороже :-) и если я клиента поставлю перед выбором, платить мне сотку — или платить десятку, но докупить память, что он сделает?
NTFS Изменён автором
0
У меня полтора гига занято браузером, ещё полтора мускулем. Если представить, что у меня 32 бита — ну и где мне твою программу запускать?)

стоить будет в десять раз дороже
Это потому что ты застрял в 90-х и игнорируешь современные библиотеки и инструменты разработки) Да хотя бы взять Python с PyQt — пусть он тоже весьма прожоривый, но жрать будет всяко раз в пять-десять меньше относительно браузерного аналога.

Впрочем, тебе же норм, зато ты можешь затребовать в десять раз дороже. Ну вот примерно за это я тебя и ненавижу :3
andreymal
0
ещё полтора мускулем

Если реально для разработки нужно использовать серверную конфигурацию базы данных — ставится второй ПК, только для базы.
Я тоже пытался одно время запихивать всё на один комп, потом понял, что иметь три машины — одну для базы, одну для файлов и одну для разработки — зверски удобно. Учитывая то, что простенький комп стоит меньше, чем мне платят за один заказ — вложение копеечное, зато ты точно видишь, где у тебя проблемы. Если сервер базы начинает орать как резаный — значит, всё с GUI хорошо, это база тормозит. А если сервер базы молчит, а вместо окошек пятна цвета Рарити — твой интерфейс не справляется.

Да хотя бы взять Python с PyQt

Qt я знаю и использую, только с С++. И там, где нужен быстрый надежный интерфейс, переносимый — его и применяю. Только это дорого и долго, и мало где реально нужно (реально — значит, что затраты времени моего и денег клиента оправдано).
Еще раз, бизнес диктует требования. Для себя любимого я вообще порой на QuickBasic пишу, ибо приятно.
NTFS Изменён автором
0
ставится второй ПК
Да я с радостью, дай денег плз?

И нет, это не для разработки, а просто репликация основной базы данных

Только это дорого и долго
На PyQt — легко и быстро. Говорю же, ты застрял в 90-х)
andreymal
0
дай денег плз?

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

просто репликация основной базы данных

То есть, таки серверная задача?

Говорю же, ты застрял в 90-х)

Убедил, я потрачу некоторое время на изучение современных нативных средств и библиотек.
NTFS
0
Убедил
Ты в итоге всё равно скажешь, что поднять хттп-сервер на локалхосте и прокинуть хромиум всё ещё быстрее)
andreymal
0
Ты в итоге всё равно скажешь, что поднять хттп-сервер на локалхосте и прокинуть хромиум всё ещё быстрее)

Конечно быстрее, но это не значит, что нужно делать только так.

Если что, я не упертый фанатик, я просто предельно рационален в этих вопросах, ибо моё время — мои деньги, а оператива и камни клиентов — проблема клиентов.
Там, где задача требует нативного кода и быстрых компактных систем — я делаю именно так. Но такое бывает раз в пятилетку.
NTFS
0
Говорю же, ты застрял в 90-х)

Может это не он застрял, а отрасль под которую он ПО делает.
0x1042E
0
отрасль под которую он ПО делает.

IT-отрасль не менялась лет 20 — нужно ввести данные, обработать их (чаще всего, суммирование или получение количества), и передать куда-то.
Просто раньше это был FoxPro и всякие dBaseIV, данные на мегабайты и передача по нуль-модему, а сейчас .NET со SQL, данные на терабайты и передача по толстому кабелю.

Если не брать в расчет игры и мультимедию, то изменения больше вокруг удобства и мощностей, чем принципиально новых задач. Ну еще BigData можно притянуть за уши как новую сферу, и то лишь благодаря переходу количества в качество, как дедушка Энгельс писал.
NTFS Изменён автором
0
АнекдотКогда мне было 14 лет, я мечтал, что однажды у меня будет девушка. В 16 лет у меня появилась девушка, но между нами не было страсти. Тогда я решил жениться на страстной девушке.
В универе я встречался со страстной девушкой, но она была чересчур эмоциональной. Каждый пустяк превращался в страшную драму и грозил ей самоубийством. Я решил жениться на стабильной женщине. По окончании универа в встретил очень стабильную девушку, но она оказалась ужасно скучной. Она была абсолютно предсказуемой и никогда не теряла голову. Жизнь с ней превратилась в рутину, и я решил жениться на девушке с
изюминкой. Девушка с изюминкой оказалась слишком шебутной. Она постоянно кидалась в крайности, заставляя меня чувствовать то суперсчастливым, то супернесчастным. Она была суперэнергичной, но без целей в жизни. Я решил женится на той, у которой есть настоящие амбиции в жизни. Тогда я нашел себе умную, амбициозную девушку и женился на ней. Она оказалась настолько умной и амбициозной, что развелась со мной через год и отсудила себе все, что я имел. Теперь я поумнел и стал мудрым, и ищу себе женщину с большими сиськами.


За последние 20 лет успел пописать на куче всего: Pascal/ObjectPascal/Basic/C/C++/C#/Java/Perl/PHP/Python и понять что любовь всей жизни у меня одна — JavaScript.
Он — как английский в мире языков программирования:
— его знают почти все
— даже на ломаном можно изъясниться и тебя скорее всего поймут
— он есть везде
— для того, чтобы им пользоваться, не нужно вообще ничего устанавливать и настраивать в обязательном порядке — это всегда неотъемлемая часть как минимум браузера, а браузер — неотъемлемая часть любой современной пользовательской ОС
— ему нет альтернативы в сети (и слава богу)
— нет языка гибче
— это вечная разминка для мозгов, позволяющая держать их в тонусе
binary_animal
+3
«нет языка гибче» — чё, ассемблер уже усё? Я помню, у JavaScript были какие-то проблемы с битовыми операциями. Наверное, это скорее у тех, кто на нём пишет, проблемы с пониманием что это вообще такое, да?
INFERION Изменён автором
0
Гибкость ассемблера чуть меньше, чем гибкость чугуна, так что с этим всё в порядке. А вот шуточки про джаваскрип программистов — это отдельная тема, не имеющая отношения к языку
И о шуточках
narf
+3
Ах, да, еще в список преимуществ не добавил: шутки про JS всегда самые смешные, вообще давно уже отдельный жанр.
binary_animal
0
habr.com/post/312172/

Сможешь так на асме? =) Так еще только разве что на брейнфаке можно.
binary_animal
0
А на асме только так и получается. Не настолько сумбурно, конечно, но суть та же. Особенно если пишешь под какую-нибудь архитектуру с уменьшенным набором команд, где даже умножения нет*.

* сейчас, наверное, таких спартанских процессоров уже нет. Но когда-то они были, если верить тому, что я узнал из интернета.
std282
0
AVR популярные по сей день. В той же ардунио. Правда, там меги, которые таки с умножением. Но вот деления нет даже в некоторых ARM, не говоря уже про целую пачку таких нужных вещей как тригонометрические и степенные функции. Ещё часто приходится делать сложение через вычитание, брать остаток от деления через лог. операцию «И», иногда использовать напрямую регистр статуса ядра для капитального ускорения алгоритма, часто нужно делать детерминированное время выполнения кода и т.п. Такой гибкости не даст никакой другой язык, так что я не знаю что там narf писал про чугун…
INFERION Изменён автором
0
Ещё часто приходится делать сложение через вычитание, брать остаток от деления через лог. операцию «И», иногда использовать напрямую регистр статуса ядра для капитального ускорения алгоритма, часто нужно делать детерминированное время выполнения кода и т.п. Такой гибкости не даст никакой другой язык


Гибкость языка программирования, в том смысле в котором большинство людей понимает этот термин, прямо таки обратна необходимости делать на нём вещи через задницу, потому что других способов сделать это нету.
narf
+1
Откровенно говоря, я никогда не встречал такого определения гибкости. Кто ввёл это понятие и чем он руководствовался, присваивая описанной в статье характеристике языка название «гибкость»?
std282
0
Вы, железячники, весьма своеобразно понимаете само понятие язык. Сферический язык в вакууме — это формальная грамматика, позволяющая с определенной степенью лаконичности описать алгоритм. Она никак не завязана на то, что происходит под капотом. Гибкость именно самого языка — это степень лаконичности и вариативности синтаксически верного кода, успешно реализующего заданный алгоритм. Любая грамматическая/синтаксическая адаптация под происходящее под капотом автоматически делает язык менее гибким и зависимым от внешних факторов.
binary_animal
+1
Сферический язык в вакууме — это формальная грамматика, позволяющая с определенной степенью лаконичности описать алгоритм. Она никак не завязана на то, что происходит под капотом.

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

Практически каждый императивный язык программирования является языком описания алгоритмов, но не каждый язык описания алгоритмов является языком программирования — только те, которые могут порождать рабочие программы.
narf Изменён автором
0
Опять меня всерьёз принимают. Похоже, мне надо поработать над выразительностью собственных высказываний.
std282
0
Ну значит я не правильно понял программистов. Они считают гибким то, на чём я вообще не могу реализовать задачу в принципе, из-за ограниченности возможностей языка? Пока что компромиссом так и остаётся C + ассемблерные файлы для критичных задач (обработчики прерываний там и т.п.).
INFERION
0
Но вот деления нет даже в некоторых ARM

Я не специалист по микропроцессорной архитектуре, но вроде бы деление было доступно начиная аж с 386-ых.
Не уверен, что в процессорах более современных есть какие-то проблемы с этим.
NTFS
0
Если говорить про «большие процессоры» от интел и т.п., на которых строят «компы и сервера» — да, там всё хорошо даже с тригонометрией (но pow() тормозит адово даже сейчас), а плавающая точка работает уже быстрее фиксированной. Но мир ведь не едиными компами живёт. В любой стиралке или фонарике есть микроконтроллер, сейчас это часто ARM Cortex M какой-нибудь (к примеру, STM32). Так вот, у M0 нет деления, а плавающая точка начинается аж с M4. А если тебе нужна аппаратная поддержка всяких там sin(), sqrt() и т.п. — беда. Нужно рыть очень навороченные чипы вроде Delfino от TI, или выкручиваться десятками тактов с ассемблерными либами вроде IQmath (опять же от TI). У ATtiny (единственные интересные чипы у AVR) нет даже умножения! А они по сей день широко используются. Чтоб умножить таким камушком 16*16 — нужно тактов 150 (при тактовой 8МГц). А поделить 32/32 — порядка 800.
INFERION Изменён автором
0
Проблемы ещё вылазят с обработкой прерываний. Ну не даются они легко даже такому «языку среднего уровня» как C. Он делает кучу лишних телодвижений по засовыванию всякого мусора в стек, сохранению контекста и т.п. Ему сложно объяснить, что «вот эти регистры используются только для хранения переменных прерывания, и ненужно их переныкивать в ОЗУ и использовать где-то ещё! Потому что прерывание вызывается каждые 32 такта и занимает 14 тактов в оптимизированном варианте!». Можно, конечно, взять МК по-мощнее, но и его ресурсов не хватит, когда ты посмотришь в листинг и такой «о, а тут можно было бы ускорить в 2 раза и поднять качество самого алгоритма усложнив его».
INFERION
0
Вспомнил ещё — с volatile переменными работать такая боль… Вот мне ж виднее в каком месте и как с нею стоит работать, но компилятору этих тонкостей не объяснишь. Либо медленно везде, либо где-то вообще решит «да она ж не меняется, значит можно заменить константой и выкинуть нафиг».
Возможно, это я просто такой тупой и не знаю всех тонкостей программирования на C. Чтоб писать на нём хоть что-то минимально рабочее — знать и уметь нужно больше чем с ассемблером. А что тогда говорить про ещё более абстрагированные от железа языки?
INFERION
0
E2P *плачет от безысходности*.

Это даже не полноценный язык, поскольку он написан на луа, и включен в мод на гаррисмод в составе wiremod ((
HastieQuad
0
Музыкальная пауза
Имхо, самый не любимый это C. Чтобы начать писать нужно покрыться свитером, щетиной, хардкором и безумием. Сначала кажется просто, но когда код становится сложней хело ворлд, то проще жопой могилу выкопать для себя и всех живых в радиусе 5км.

А крестики хорошие хоть уже немного устаревшие, ибо в большинстве случаях возня ради 1% производительности/памяти/чсв особо не роляет.

Современные яп и фреймворки позволяют быстро сделать софт, что в современных реалиях является более главной задачей, чем написать абсолютных код.хотя когда банальный чатик жрет 4гб оперативки жопа начитает гореть
Twogush
+1
А если верить бывшему соседу по парте, то лучший язык это скреч, который помогает ему зарабатывать 120к рублей в месяц, при 4 часовой шестидневки. Кстати, одна и тех причин почему у меня горит жопа из-за платных курсов от мутных контор.
Twogush Изменён автором
+1
то проще жопой могилу выкопать для себя и всех живых в радиусе 5км

Объективности ради, С — это кроссплатформенный Ассемблер, работает на низком уровне и везде, что конечно, круто.
NTFS
+1
Кроме Питона разве еще есть языки?
Sasha-Flyer
0
Сишарп
andreymal
0
Си-акула? О_о
Sasha-Flyer
0
Нет, до-диез
andreymal
+1
Си-решетка
Sasha-Flyer
0
Лол
Sasha-Flyer
-1
В этом посте как-то криво память измеряют
andreymal
0
Что такое __slots__?
Sasha-Flyer
0
Загугли, мне щас лень рассказывать
andreymal
0
Я так понимаю это статичные слоты под переменные внутри одного класса? Хотя по сути это просто список же…
Sasha-Flyer
0
мнение непрофессионального программиста-«для себя»В школе паскаль учил, в колледже дельфи, в политехе — ничего, знаний дельфи из колледжа хватило ) А потом интерес к программированию как-то поугас и единственное за что я еще брался — это питон, который действительно удобная полезняшка для мелких автоматизационных задач «для себя».

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

А питон — «быстро сделать что угодно, не требующее гуи». Много чего встроено, библиотеки на все случаи жизни, а главное — почти любая проблема и любой вопрос «как сделать» гуглится, что для меня, не занимающегося программированием плотно и профессионально, очень большой плюс )
Ori
+2
Но чет не пошло у меня с ним. Пару раз брался поизучать и бросал

В C# много чего взяли от Delphi, на самом деле.
ЕМНИП, там даже люди из дельфийской команды работали.
NTFS
0
Агась, слыхал про это и даже книжку от того самого разработчика сишарпа читал. Но недочитал, ленивый я.
Ori
0
Ну вот смотри, чего я хотел от Delphi в своих влажных программистских мечтах и чего получил в C#:
1) Сохранение объекта в поток — одной строкой

(new BinaryFormatter()).Serialize(File.Create(«obj.dat»), obj);

2) Подсчет чего-то в обобщенной коллекции (например, единорогов с уровнем магии выше 100 в списке пони):

list.Count((pony)=>pony.isUnicorn() && (pony.MagicLevel>100));

3) Копирование объекта с данными:

var newpony = (Pony)pony.Clone();

4) Автоматическое удаление объекта по выходу за пределы его блока

using (var helper = new ponyHelper())
helper.doHelp(pony);
NTFS
0
Еще забыл создание класса по имени. Да, именно так. Есть имя в строке, можно создать объект класса.
В топку дерево из сотни if then else на создание субклассов.
NTFS
0
Рефлективные возможности просто так не даются, у них есть своя цена.
std282
0
у них есть своя цена.

Производительность и расходы памяти, да. Но этого добра хватает, если бы наши отцы программисты узнали, что мы прошли путь от их 64Кб массива до 64 Гб для данных — они были бы в шоке.
NTFS
0
1) Что-то непонятное, чем я никогда не пользовался )
2) Опять что-то непонятное, я не понимаю этот синтаксис.
3) Мой верх — процедурное программирование, объекты для меня черные ящики с процедурами, которые я никогда не создавал сам.
4) Обоже, опять объекты…
Ori
0
объекты для меня черные ящики с процедурами, которые я никогда не создавал сам

По-моему, так и должно быть. Это чёрный ящик, ты знаешь, для чего его используют люди, но не знаешь, что у него внутри.
std282
0

Не знаю. Крутые программисты кругом постоянно говорят о классах, объектах и я почти никогда не понимаю о чем конкретно они говорят. Про саму концепцию ООП читал давно и несколько раз, но до сих пор не понимаю ее нужности. В моих маленьких программах она просто никогда не была нужна. Мне не нужно «копировать объект с данными», я не знаю для чего это нужно ) Я не знаю зачем сохранять объект в какой-то поток, потому что не знаю что такое «поток». Я не знаю что такое «обобщенная коллекция» и почему в ней сложно что-то подсчитать. Я не знаю что такое «блок» и почему я должен что-то удалять при выходе за его пределы )
Ori
0
В ООП все не как у людей. Функции над объектами обозвали методами, элементы объекта обозвали полями, переопределяемые функции над объектами зачем-то назвали виртуальными… у них там своя атмосфера.
std282
0
Да. И это я все в принципе знаю, но очень много более специфического не знаю. Поэтому у меня такое легкое отторжение к ООП.
Ori
0
Ну, класс — это как в математике множество определенных чисел, обладающих определенными свойствами, над которыми можно сделать определенные действия (методы). А объекты — это сами числа, вот. Типа так.
TotallyNotABrony Изменён автором
-1
Но ведь числа не объекты. По крайней мере, в очень многих ЯП. Для того, чтобы быть объектом, нужно нечто большее, чем быть членом какого-либо множества.
narf
0
Но ведь числа не объекты

В С# — таки объекты. Это жрет память и процессор, но открывает бездну возможностей в плане умножения слонов на ужей и складывания теплого с мягким.
NTFS
0
Ой, математика для меня еще дальше чем ООП )
Класс для меня это тип данных. record (в ваших сях struct вроде), в котором процедура может быть… полем? Я правильно это назвал? ) В общем, подпунктом.
Ori
0
Примерно так, но для ООП этого не достаточно. Часто любят говорить, что ООП основан на трёх китах: полиморфизме, инкапсуляции и наследовании. Формально, record с ссылками на процедуру помогает с полиморфизмом, но не имеет отношения к двум другим пунктам.
narf
0
Класс для меня это тип данных


В большинстве ООП языках для всех этих integer и прочих float эти понятия совпадают.

record (в ваших сях struct вроде)


В Паскале это запись, в ruby это делается прописанием аттрибут-доступа в классе (ну или прописанием метода) Так что myCar.amount_of_wheels = 4 — это сколько колес у объекта myCar. А все, что идет в объекте myCar, его свойства и прочее, прописаны в классе Car.
Класс Car — множество натуральных чисел, делящихся на 35, допустим.
Объекты класса — это именно что числа, делящиеся на 35 (35, 70, и тп и тд)
Методы — это что можно делать с объектами. В этом случае можно умножать, складывать и прочее.

Нарф, я правильно все понял?
TotallyNotABrony Изменён автором
0
Я нифига не понял, что вы поняли.

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

В большинстве ООП языках для всех этих integer и прочих float эти понятия совпадают.

В некоторых ООП языках всё является объектами, в других — не всё. Например, примитивные типы или функции зачастую ими не являются.

В Паскале это запись, в ruby это делается прописанием аттрибут-доступа в классе (ну или прописанием метода) Так что myCar.amount_of_wheels = 4 — это сколько колес у объекта myCar. А все, что идет в объекте myCar, его свойства и прочее, прописаны в классе Car.
Класс Car — множество натуральных чисел, делящихся на 35, допустим.
Объекты класса — это именно что числа, делящиеся на 35 (35, 70, и тп и тд)
Методы — это что можно делать с объектами. В этом случае можно умножать, складывать и прочее.

Неа. То что вы прописали — это может означать модульную систему. Многие модули так устроены: есть какой-то тип, к примеру, комплексных чисел, и кучка функций, работающих с этим типом(см complex.h). Но пока вместе с данными не хранится инфы на то, как их обрабатывать — объектами это и не пахнет.
narf
0
Каскет не умеет в программирование, но в школе его учили кубесику. Или как-то так.
KaskeT
0
#include <stdlib.h>

void main(void)
{
a:; malloc (1); goto a;
}
Mainframe Изменён автором
0
main всегда должен быть int, даже в C.
std282
0
Строго говоря, C99 допускает какое-нибудь «implementation-defined signature»
andreymal
+2
Признаюсь, этого я не знал. Но это все равно как-то нехорошо.
std282
0
int main(void)
{
a:; new int; goto a;
}
Mainframe
0
В свое время пользовался питоном. Потом он надоел.
Maxwell
0
Много лет копаюсь в Дельфи и его прекурсорах, но нравится мне почему-то JavaScript, чуть менее, но всё равно симпатичен LUA. А вот не нравится мне почему-то C и иже с ним. Совершенно вымораживает разница между пре- и пост-инкрементом — это маразм. Про всякие хаскели, полагаю, можно и не заикаться.
badunius
0
Смотрю я на ветки выше, и мне становится страшно.

Мимо только начал sicp
dl6284 Изменён автором
+1
Basic — теплый и пушистый, язык детства :-)

Это кому-как. А у меня тёплым и ламповым был АП-Автокод. Да, древнее зло застало его на излёте, когда он плавно перетекал в «Аналитик».
Кто помнит эту прелесть?..
Edinorog23
+2
Пролог, ибо все последовательно и близко к естественному языку, жаль, что сам по себе он нахуй не нужен))00
RaCa
0
частичный оффтоп, хотя на тему программированиянасчет языков не скажу, но было бы неплохо иметь такую фичу:
допустим ситуацию, функция f принимает foo, foo, int и возвращает bar, и у нас есть переменные var0 и var1 типа optional<foo> и num типа int. Тогда придется писать
optional<bar> result;
if (var0.has_value() && var1.has_value())
    result = foo(var0.get_value(), var1.get_value(), num);

вот было бы круто вместо этого иметь возможность написать
optional<bar> result = foo(ifPresent(var0), ifPresent(var1), num);


optional тут только как пример — их еще кучу можно придумать:

для var типа tuple<foo, bar>, f принимающей foo и возвращающей foof, f принимающей bar и возвращающей barf выражение f(mappedOver(var)) разворачивалось бы в tuple<foof, barf>(f(var[0]), f(var[1])),
то же для массивов, и в целом любых itable objects/ranges
для var0, var1 типа future<foo> и f принимающей и возвращающей barf(whenReady(var0), whenReady(var1)) превращался бы в который готов когда оба var0 и var1 готовы и содержит результат вызова f со значениями содержащимися в var0 и var1
для foos типа tuple<foo, foo>, bars типа tuple<bar, bar>, f принимающей foo, bar и возвращающей int
* f(mappedOver(foos,0), mappedOver(bars,0)) разворачивалось бы в tuple<int, int>( f(foos[0], bars[0]), f(foos[1], bars[1]) ) (т.е. мы развернули foos и bars по одному измерению),
* f(mappedOver(foos,0), mappedOver(bars,1)) разворачивалось бы в вычисление tuple of tuples, в котором на позиции [i][j] — результат выражения f(foos[i], bars[j]) (т.е. мы развернули foos и bars по двум разным измерениям)

и чтобы это можно было комбинировать в одном выражении: f(mappedOver(someTuple), ifPresent(someOptional), whenReady(someFuture)) или так f(ifPresent(mappedOver(someOptionalOfTuple)))

словом, было бы неплохо иметь возможность определять такое поведение для пользовательских типов. Пока что ни в одном языке такого не видел, хотя я их не так много знаю. Тут вылазит вопросо о взаимодействии таких операций между собой. Например, при вызове f(mappedOver(someTuple), ifPresent(someOptional)) результатом очевидно должен быть не tuple of optionals а optional of tuples — как определить взаимодействие или на крайняк порядок между этими преобразованиями выражений (которые вызываются выражениями mappedOver, ifPresent), и поддерживать их в условиях, когда новые может добавлять пользователь?

Kitmouse Изменён автором
+1
вот было бы круто вместо этого иметь возможность написать

Это было бы не круто, потому что код становится менее читабельным из-за смеси условия и инструкции между собой. Взглянув на твою строчку, скажем, сложно понять, какое поведение будет, если обе ifPresent выдадут false, или одна из них выдаст false, или ни одной. В варианте же с предварительными проверками это очевидно — функция foo будет вызвана только если все выдадут true.
Ginger_Strings Изменён автором
0
если речь идет о функциях, которые вызываются ради сайд-эффектов, а не возвращамого значения — пожалуй да, для них я бы я это не применял.
А если нет, то представь себе ситуацию, в которой тебе нужно пропустить какие-то данные через 4 операции, каждая из которых может пойти не так (так что они возвращают optional). В твоем случае это будет
код
optional<bar> process_foo(foo val)
{
    auto step0 = step_0(val); //где auto - тип выводимый компилятором из выражения справа от "="
    if (!step0.has_value())
        reutrn {};//возвращаем ничего
     
    auto step1 = step_1(step0.get_value());
    if (!step1.has_value())
        return {};
    
    auto step2 = step_2(step1.get_value());
    if (!step2.has_value())
        return  {};
    
    auto step3 = step_3(step2.get_value());
    if (!step3.has_value())
        return  {};
    
    return step3.get_value(); //возвращает optional заполненный резкльтатом всех шагов
}


а при помощи этой фичи:
optional<bar> process_foo(foo val)
{
    return step_3(step_2(step_1(step_0( ifPresent(val) ))));
}
Kitmouse
0
В Rust это будет что-то вроде
return hado!{
    val <- val;
    step0result <- step0(val);
    step1result <- step1(step0result);
    step2result <- step2(step1result);
    step3(step2result)
}
andreymal
+1
Не, я понимаю, что это красиво выглядит одной строчечкой.
Но вопрос: что будет, если у step_2 не сработает ifPresent()? Я не могу понять это по коду в одну строку, но без проблем пойму по коду с условиями.
Полагаю, такие возможности не вводят именно потому, что код становится менее понятным.
Ginger_Strings Изменён автором
0
nil в object C занимается ровно тем, что вы написали.
narf
+1
А впрочем даже ещё проще, я как-то проглядел, что начиная с Rust 1.22 оператор? можно применять и для Option
fn process_foo(val: foo) -> Option<bar> {
    step_3(step_2(step_1(step_0( val? )?)?)?)
}

Да-да, всё что я сделал — приписал вопросительные знаки к твоему выражению, и это компилируется и работает)

Запустить онлайн: play.rust-lang.org/?version=stable&mode=debug&edition=2015&gist=9e1ab20d1499efd5c0d1265738e4521e
andreymal
0
Ruby. Он красивый и милый.
Pascalеобразованные. Они точные.
Я дилетант.
TotallyNotABrony
0
По работе юзаю golang. Очень даже неплохой инструмент.
А так, нравятся питон и руби
russial
0
Внутренний язык 1с предприятия 8! :D
Nox
+2
Надо пойти ещё дальше — GML — язык от Game Maker! :D
NonyxBrony
0
+[--------->++<]>+.-------.-----------.+.-.++++++++++.--.
narf
+1
Шарады от одного из уволившихся программистов на нашей фирме:
Если (не Таблица.Найти(ложь,«Отключено»)= неопределено) Тогда

Сидишь, медитируешь по нескольку минут на эту и подобные строчки, пытаясь понять — если условие выполняется, строчки таблицы включены или отключены?
Snudrid Изменён автором
+1
Kotlin — любимая пони из тех, что знаю. Все плюшки джавы плюс более удобный синтаксис. Интересно, что никто не упомянул здесь ранее.
А еще JS. Просто потому что очень гибкий и универсальный.
Fett
0
Мне лично нравится С#. Держит тебя за руку, не дает выстрелить в коленку. Вернее в коленку он тебе выстрелить даст, но пуля тебя только поцарапает.
С другой стороны у него под капотом столько всего творится, что порой трудно предугадать его поведение в некоторых ситуациях.
Эх, как я по нему скучаю…
0x1042E
0
Ну так коди на нём, что мешает?
Mainframe
0
MiniRoboDancer
+2
Ты на украинском покодь, чо уж там.
V747
0
Слушна ідэя, однако.
MiniRoboDancer
0
Дисграфия, кстати, довольно распространённая штука. Но для кодера это смерти подобно.
VIM
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать