Ощущение костыля остается из-за того что ты можешь отгрести проблем из-за того что есть доступ к тому как это устроено. В Java/C# ты просто этим пользуешься, выстрела в ногу не происходит и прикладной софт пишется на ура. Это специализированный бизнес софт, ну а всякие обычные десктопные приложения аля плееры и т.д, проще вообще на Python написать чтобы экономить памяти. А системный на С, ну и если без фанатизма, то на С++. Но прикладной софт, состоящий на 95% из бизнес логики иногда пишут на С++, потому страшно жить.
ArrayList<Integer> li = new ArrayList<Integer>();
ArrayList<Float> lf = new ArrayList<Float>();
if (li.getClass() == lf.getClass()) // evaluates to true
System.out.println("Equal");
fail
public class Example {
public void print(Set<String> strSet) { }
public void print(Set<Integer> intSet) { }
}
fail
List<Integer>[] arrayOfLists = new List<Integer>[2];
Ну правильно, все это знают, erasure. Проблем не вызывает, хотя решение не идеально и является trade off по совместимости. Особенно те кто применяют reflection должны понимать эти подробности. То что может случиться с памятью в С++ просто даже сравнивать с этим нельзя
Ощущение костыля остается из-за того что ты можешь отгрести проблем из-за того что есть доступ к тому как это устроено.
нет такого доступа, разве что побайтно расковырять, и заковырять обратно. Но такое вроде везде можно.
В Java/C# ты просто этим пользуешься, выстрела в ногу не происходит и прикладной софт пишется на ура.
ну про C# не знаю, не юзаю, а вот на жабе получается такой кривой былософт, который требует для работы отдельного сервера.
Это специализированный бизнес софт, ну а всякие обычные десктопные приложения аля плееры и т.д, проще вообще на Python написать чтобы экономить памяти. А системный на С
а на чём ты будешь писать сам пайтон? а сами окошечки для пайтона? (на чём написана Qt? то-то же)
Ты просто не видел обьемы логики которая там есть. Постоянны поток из миллионов транзакций с совершенно мозговыворачивающей логикой должны работать годами. И пишут их пару команд, в отличии от тулкитов на подобии Gtk, которые имеют подобную сложность, но их пишут много сотен программистов уже много лет. Тебе сложно понять, потому что ты просто не смотрел что эти программы делают внутри.
А системный на С
а на чём ты будешь писать сам пайтон? а сами окошечки для пайтона?
Нет, я не про внешний вид, а про исходный код. Сейчас мне частенько приходится сталкиваться с питонософтом, от простых скриптов до гуйни, частенько даже дорабатывать. В основном это софт для 3д принтера. Так вот. Там где на С это делается в 200 строк и 1 тред с epoll, на питоне это 3 треда и овер 600 строк (не считая библиотеки), см. эпичный пример miniterm.py из примеров в pyserial. Быстродействие тут тоже крайне сомнительно. slic3r написанный емнип на плюсах одну и туже тестовую STLку мне слайсит меньше 15 секунд, в то время как питоновый skeinforge более пяти минут. Алгоритмы примерно одни и те же. А то, что в С можно выстрелить в ногу... как сказать, можно ведь и не стрелять. Пару раз девелопер себе ноги отстрелит - в третий раз поумнеет и стрелять не будет. Мне еще не довелось встретить хотя бы одно приложение на питоне, которое нормально написано. Как страшненький язык для прототипирования чего-то по-быстрому он катит, но опять таки сомнительно. (java приятнее выглядит в плане кода в разы, логичнее, в библиотеках порядок. Да и сам язык более зрелый, на нем не так часто встречаешь откровенную содомию) А С, как по мне - как раз и хорошь своим порогом вхождения, потому как не даст над проектом работать совсем уж контуженным идиотам, которые все угробят, хотя их везде хватает.
Ты просто не видел обьемы логики которая там есть. Постоянны поток из миллионов транзакций с совершенно мозговыворачивающей логикой должны работать годами.
ага. Теперь расскажи мне про объёмы клиента wuala или азарус(vuze)? для них тоже нужен свой сервер?
На С, как я и сказал
ну да, пайтон на Си, но вот скажем Qt таки на плюсах.
А то, что в С можно выстрелить в ногу... как сказать, можно ведь и не стрелять. Пару раз девелопер себе ноги отстрелит - в третий раз поумнеет и стрелять не будет.
Не ну серьезно, код на С падает постоянно, тому лучший пример - Линукс десктоп. Постоянно новые версии привносят новые глюки, и все приняли это как данное. Мол новое - unstable. Причем в нормальных ЯП код через время просто становится stable и так уже навсегда, редко что-то ломается. Причем если ломается то не сегфолтом, а какой-то внятной ошибкой
А С, как по мне - как раз и хорошь своим порогом вхождения, потому как не даст над проектом работать совсем уж контуженным идиотам, которые все угробят, хотя их везде хватает.
Вообщем умение строчки совать без сегфолтов не совсем свидетельствует о понимании современных проблем, в вебе, в масштабировании, durability и т.д.
Да, на специфичном, потому как он быстрее и проще, а софтина для которой я это сделал будет пахать только на линуксовом эмбеддеде. Это называется «обоснованный выбор». Если бы стояла задача сделать кроссплатформенно - сделал бы другим, и это кстати не слишком было бы больше по коду.
Не ну серьезно, код на С падает постоянно, тому лучший пример - Линукс десктоп. Постоянно новые версии привносят новые глюки, и все приняли это как данное. Мол новое - unstable. Причем в нормальных ЯП код через время просто становится stable и так уже навсегда, редко что-то ломается. Причем если ломается то не сегфолтом, а какой-то внятной ошибкой
Это говорит о качестве софта и выбранном подходе. У тебя часто сегфолтится код в ядре, который проходит нормальный контроль качества?
ну и vertexua очевидно имел ввиду, что в его «нормальных ЯП» не надо писать руками такие проверки, более того - он получит полный стек вызовов, т.е. больше информации, backtrace, к сожалению, не часть C и не везде есть
Можно сказать «Я упала из-за выхода за пределы массива в строчке mysegfault.c:23, потому что индекс 23, а размер массива 17». И сделать это в любом месте, а не где воткнули макрос. Это не подходит для системного софта, избыточные проверки, потому и едим кактус. А для прикладного так и надо, потому что он пишется согласно быстрых изменений рынка и требований пользователей, нет времени сегфолты исследовать