Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/120: Рейтинг темы: голосов - 120, средняя оценка - 4.66
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

C# vs Java в 2020. Что выбрать?

22.04.2020, 11:10. Показов 24740. Ответов 191
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.
Учусь на 1 курсе технического вуза. На 1 курсе у нас C. Я на него забил, просто написал программу на C++, предъявил преподу, мол я шарю, и все.
Для работы избрал Python/Django. Интересует удаленка, желательно на Европейского или Американского работодателя.
Под собственные задачи не хватает нормального языка программирования.
Что значит нормального?
Python держится на библиотеках. Динамическая типизация просто? Увольте.
Я не рискнул бы писать крупный (не веб) проект на Python. Почему? Потому что большинство ошибок вылавливаются во время работы самого кода. Вот вам и динамическая типизация, и интерпретация.
Посмотрите, как используется язык. В веб проектах, потому что Django надежен. Как по мне Python+Django много лучше PHP, да хотя бы и из-за Django Rest.
Но кроме веба, Big data, машинного обучения и автоматизации, Python нигде не применяется.
Игры, крупные приложения, как правило, Python страхует C++. А скорее, он работает внутри него.
Ладно, окей, под Windows игру написать можно. Но вдруг пришла идея запрограммировать что-то под Android.
Смотрим. Kivy. Пробуем и убеждаемся, что тут и выходит, молотком вкручиваем лампочку, никак иначе.
В общем, нужен второй язык. Язык, где якобы больше кода и т.д, но который по факту надежнее, и работать будет производительнее, и ошибки отдавать на компиляции.
Понятно, что C++/C#/Java. Иного не дано.
Посидев, повздыхав, я выкинул C++ в помойку.
Причины:
1) Когда делал на C++ работу для универа, 6 часов убабахал на это. На установку VS, на подключение QT, на изучение возможностей для написания простого текстового редактора с менюшкой, где открыть, сохранить и выход, потом еще это не компилировалось из-за ошибок, связанных с библиотекой... В общем, 6 часов. Если такое будет каждый раз с новой библиотекой...
2) Пообщался с C++ разработчиками. Если проект, который на C#/Java пишется за неделю/две, на C++ я буду пилить 3 месяца...
3) Удовольствие от разработки самого алгоритма программы. Логики программы. Но никак не от работы с памятью и прочими заморочками на низком уровне. Пусть компилятор сделает, как надо, нежели я где-то допущу ошибку, в одном месте, а потом из-за нее будет ошибка на несколько окон, и за ней многочасовой поиск места с ошибкой.
В итоге, C# vs Java. Учитывая, что ранее я работал с C#, начал читать всякие статьи "C# vs Java". На форумы тоже писал, если кто помнит. Но моя главная цель была заработок. Сейчас же разработка приложений по моим интересам.
Почитав понял, что никакого четкого вывода нет. Прошло время, когда C# был лишь под Windows.
С одной стороны, C# круче. Развивается, Microsoft кидают туда все, что нужно и не нужно.
С другой стороны. Давайте посмотрим правде в глаза. Где сейчас применяется C#? Под Windows. Все сервера на Windows Server.
Какие приложения (не игры) разработаны под Android с C#? Я не знаю таковых.
Исследуя рынок понимаем, что по Java и вакансий больше, и зарплаты выше. Естественно, зарплаты то у синьоров. У джунов и мидлов примерно одинаково, но Java таки немного выше.
А открывая вакансии я понимаю, что меня не ожидает с C# карьера. Ибо не сдался мне ASP.NET, если я уже на Django. Других вакансий нет.
У Java тут все, что хочешь. И веб, и сервера, и приложения под Android.
Но есть еще 2 момента:
1) .NET Foundation. Кроме того, планируется объединить .NET и .NET Core. Выстрелит ли это? Возможно. Но я не думаю, что все сразу бросятся переписывать сервера с Java на .NET, а кто сидел на Windows Server будут переписывать под Linux;
2) Kotlin. Всей душенькой ненавижу этот язык, и не спрашивайте, почему. А сейчас много где его используют наравне с Java, и вместо Java.
Открываем сравнения производительности, и понимаем, что по производительностью C# давно обогнал Java.
В общем. Уважаемые девелоперы. Желательно те, кто знаком и с той и с той технологией. Озвучьте пожалуйста ваше мнение по вопросу "C# vs Java в 2020. Что выбрать?".
Как следует делать выбор? На что ориентироваться? На что обратить внимание?
В общем все возможное и не возможное по этой теме. C# и Java очень и очень схожи, но хочется для себя провести между ними различие, дабы выбрать нужный инструмент.
Заранее благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2020, 11:10
Ответы с готовыми решениями:

C++ vs Java - что выбрать?
Здраствуйте. Подскажите плз по следующему вопросу: Собираюсь начать изучать язык с++ или яву, но не могу окончательно определится. ...

Что выбрать Java или C++?
Хочу начать изучать язык программирования. Либо Java либо c++. В обоих случаях знаю основы. Совсем основы, но это не суть. Какой стоит...

Что выбрать: Java или Objective-C?
Есть интерес к программированию мобильных устройств, базовые знания С/С++ и Java (но С/С++ получше знаю). Также имеется полное незнание...

191
Эксперт .NET
 Аватар для Usaga
14738 / 9512 / 1364
Регистрация: 21.01.2016
Сообщений: 35,901
23.04.2020, 18:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Катафалк Посмотреть сообщение
Самые легко добываемые доказательства находятся на сайтах вакансиий - в подавляющем большинстве предложений ключевые технологии - производства МС. Более трудно (вернее - долго) добываемые доказательства - ковыряться в популярных шарповых статьях и конференциях. Ну и т.д. А вам, возможно, просто повезло с окружением, которое не только говнокодит, но иногда и мозг включает.
Э, нет) Т.е. требования в вакансиях, внезапно, есть определение знаний соискателей?)

Цитата Сообщение от Катафалк Посмотреть сообщение
Swing во первых тормозной, любое более-менее сложное приложение будет крайне неповоротливым. Ярчайший пример - ide от jetbrains, которые на слабом компе еле шевелятся, хотя та же visual studio работает намного шустрее. Ну а во вторых, swing страшный, а поддержка тем крайне убога и ненативность приложения видно за километр. Короче, показывать пользователю swing поделки стыдно.
Насчет javafx ничего не знаю, и опять же не встречал ни одного живого приложения на ней. Понятия не имею, зачем вообще это родили.
Тормозил не swing, а сама Java. Про "страшность" тоже ерунда. Там были весьма мощные средства для кастомизации. Посмотрите на такое ПО как aTunes (не путать с iTunes), Ecliplse, IntelliJ \ Rider. Может ещё какое нарыть можно. В общем, UI там сильно кастомизириволся.

Цитата Сообщение от Катафалк Посмотреть сообщение
Я вроде отсутствие гуя в минус не приводил. Это топикстартер приводит.
Цитата Сообщение от Катафалк Посмотреть сообщение
Ну то есть ничего нормального так и нет. Одно почему то только для mono, хотя мс хочет всех на свою core пересадить. Второе в разработке с 2015 года и до сих пор в бета версии, и до сих пор с монструозным XAML впридачу Любят шарповоды кактус жрать.
Это можно воспринимать как негативную оценку.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Было бы чему подражать. Это ваше "декларативное описание" ничем не отличается от точно так же декларативной сборки гуя "императивным" кодом разлива конца 80-х-начла - 90-х с абсолютно теми же проблемами в плане продуктивности. А с середины 90-х давно в ходу визуальная разработка. Визуально - это декларативно 80-го левела, если вы еще не поняли. Современные тулзы в плане средств разработки гуя давно пытаются подражать Фотошопу и 3D Max, а не мелкомягкому WPF-убожеству.
Спасибо за ваше профессиональное мнение) Только привставайте с дивана, когда делитесь этим мнением.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 18:50
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В с++ нет ограничений высасаных из пальца.
Да, ограничения в С++, те, которые ограничения типов в темплейтах, зело громоздкие (по сравнению с Rust,Haskell ...). В С++20 попытались в этом смысле кое что улучшить, но там всё кривое. Вообще стрёмно - выпускать стандарты не когда готовы отдельные цельные нововведения, а к определённым срокам. Или, уж не хватались бы тогда сразу за всё.

Так вот, основная проблема в С++ не отсутствие ограничений, а вседозволенность. То есть, можно всё обернуть смартами, арифметику указателей по минимуму. Но компилятор то позволяет наг-кодить на сырых указателях. В результате проблемы с обучением плюсам, отсюда пропадает к ним интерес, кругом скрипты в которых этих самых указателей нет. Меньше народу плюсы пользуют - меньше годных либ. Я неоднократно интересовался, что есть что бы бекенд на С++ делать, да использовать современные интернет-технологии. А ничего нет. Потому и нет, что потерял С++ популярность. Конечно, кады на нём пишут, но много ли в процентном отношении становится плюсистов? Меньше. По этому и пишут даже то что критично к скорости чёрти на чём. А как им плюсы предложишь? Они ж боятся лишний символ в код вбить, зачем смарты использовать, если короче без них. А потом оказывается что половина плюсовых либ и прог течёт что авторите языку не добавляет.

На расте все низкоуровневые "штучки" возможны. Но в блоках unsafe до которых начинающие ещё не скоро доберутся. А в плюсах всё unsafe.
Так что если довести до ума rust, это будет способствовать обучению на нормальном, статически типизированном языке, и даже со столь любимой вами автоматикой указателей. А в компилятор там встроено то что на плюсах не реализуешь без допзатрат в rt.
И итераторы там есть. И смарты со счётчиками ссылок.

Добавлено через 9 минут
Цитата Сообщение от Usaga Посмотреть сообщение
А Core сразу ориентировался под сервера приложений и веб-приложения и никаких UI на нём кроссплатформенных никто не обещал.
А почему? Подозреваю из-за мнения что linux стоит использовать только на серверах?
Я, собственно, linux на ПК не жалую, а насколько он лучше винды как сервер не достаточно копенгаген что бы судить. Но не я майкрософтом рулю.
Цитата Сообщение от Usaga Посмотреть сообщение
Искренне желаю авторам удачи в разработке.
Это хорошо, если они такие молодцы. Но, MS может и фхтагн, и перенести WPF в core - наверно принципиального ограничения нет, просто не приоритетная задача. И тогда этим авалоновцам сложно станет конкурировать.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
23.04.2020, 18:51
Цитата Сообщение от Usaga Посмотреть сообщение
Т.е. требования в вакансиях, внезапно, есть определение знаний соискателей?)
Требования в вакансиях это, очевидно, определение потребностей работодателей. Той части работодателей, которая как раз и хочет найти себе макаку-кнопкодава, потому что нормального специалиста на подобных сайтах не найти.
Цитата Сообщение от Usaga Посмотреть сообщение
Тормозил не swing, а сама Java. Про "страшность" тоже ерунда. Там были весьма мощные средства для кастомизации. Посмотрите на такое ПО как aTunes (не путать с iTunes), Ecliplse, IntelliJ \ Rider
Про jetbrains я уже написал. Eclipse не на свинге, там своя либа, причем с нативными контролами, если я ничего не путаю. Но тоже тормозная Ну или сам эклипс тормозной, тут уж я не знаю. Про aTunes загуглили - и где там нормальный нативный внешний вид? О чем и речь - единственный способ заставить свинговую поделку выглядить хоть как-то вменяемо - придумать свою никуда не вписывающуюся тему. Чем и jetbrains до сих пор развлекается.
Цитата Сообщение от Usaga Посмотреть сообщение
Это можно воспринимать как негативную оценку.
Но не нужно. Это просто констатация факта.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 18:51
Цитата Сообщение от Curry Посмотреть сообщение
То есть, можно всё обернуть смартами, арифметику указателей по минимуму.
Только вот вариантов обертки бесконечное множество а соответственно какой вариант обертки в какой задаче понадобится разработчики языка знать не могут.
Цитата Сообщение от Curry Посмотреть сообщение
Но компилятор то позволяет наг-кодить на сырых указателях.
Еще раз - от недопонимания задачи никакой тулз не лечит. Тому кто не может с сырыми и смарты не помогут. А вот для создания высокоуровневых абстракций для запихивания их на самый низ без сырых указателей никак. Ну а язык не имеющий средств создания высокоуровневых абстракций для самого низа сверхвысокоуровневым быть не может по определению.
Цитата Сообщение от Curry Посмотреть сообщение
В результате проблемы с обучением плюсам, отсюда пропадает к ним интерес, кругом скрипты в которых этих самых указателей нет.
Только вот что такое указатель какова структура памяти и т.д. аспекты самих указателей изучается не в курсе "алгоритмические языки" а в курсе "информатика". Если это делать по уму как в универе - оба курса идут с первого дня обучения параллельно - то и проблем никаких. Пока освоят базовые операторы уже и то что такое указатели знают.
А не понимая что такое указатель - беда будет в любом языке хоть с сырыми хоть с обернутыми хоть с ассоциативными ключами в хешах.
Т.е. это проблемы не языка а подхода околовсяческих курсов и бульварного чтива претендующего на роль учебников.
0
Эксперт .NET
 Аватар для Usaga
14738 / 9512 / 1364
Регистрация: 21.01.2016
Сообщений: 35,901
23.04.2020, 19:05
Цитата Сообщение от Curry Посмотреть сообщение
А почему? Подозреваю из-за мнения что linux стоит использовать только на серверах?
Я, собственно, linux на ПК не жалую, а насколько он лучше винды как сервер не достаточно копенгаген что бы судить. Но не я майкрософтом рулю.
Скорее всего на это повлияло два фактора: к моменту начала разработки .NET Core уже было понятно, что кроссплатформенный UI не такая уж и востребованная вещь, и то что реализовать и поддерживать кроссплатформенный UI ну очень сложно. А линукс... Не лучше он и не хуже винды (на серверах). Он открытый и не очень дорогой. Кому это важно, возьмут его. Кому нужно куча специализированного функционала - возьмут винду. Тут кому что надо, а не что лучше.

Цитата Сообщение от Curry Посмотреть сообщение
Это хорошо, если они такие молодцы. Но, MS может и фхтагн, и перенести WPF в core - наверно принципиального ограничения нет, просто не приоритетная задача. И тогда этим авалоновцам сложно станет конкурировать.
WPF базируется на винде и её DirectX. Вызов этого дела на Core перенесли достаточно быстро: между .NET Core 2.2 и .NET Core 3.0. Но вот заменить бекэнд этого дела уже не так просто. Особенно, если учесть какое разнообразие технологий имеется: X11, Wayland, Metal\Cocos (MacOs).

Цитата Сообщение от Катафалк Посмотреть сообщение
Требования в вакансиях это, очевидно, определение потребностей работодателей. Той части работодателей, которая как раз и хочет найти себе макаку-кнопкодава, потому что нормального специалиста на подобных сайтах не найти.
На самом деле нет. Многие требования указываемые в вакансии есть джентльменский набор, а не конечный набор знаний. Я это на себе проходил несколько раз.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
23.04.2020, 19:18
Цитата Сообщение от Usaga Посмотреть сообщение
На самом деле нет. Многие требования указываемые в вакансии есть джентльменский набор, а не конечный набор знаний.
Разумеется, но это конечный набор технологический направлений конторы, а значит хорошая оценка популярности таких направлений и используемых в них конкретных технологий. Хотя разброс, конечно, может быть. И, если вы не заметили, я не только о вакансиях говорил. Источников по актуальному состоянию практически любого технологического стека - множество. И не нужно по десять лет работать с этим стеком, чтобы разобраться, кто там в этом болоте квакает Особенно, учитывая, что через десять лет этот стек благополучно сдохнет.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 20:03
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Еще раз - от недопонимания задачи никакой тулз не лечит.
Это так. Но от того что С++ наследник С и с самых азов обучающиеся узнают что можно про сыры указатели, вместо умных, плюсы слывёт сложным и г-кодным языком. А вы толкуете про идеальных студентов идельного универа. Вещь редкая, вроде программы без ошибок.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А не понимая что такое указатель
Никто не мешает и на rust, и на других языках изучать указатели так как вы их понимаете - как уникальные идентификаторы.
Цитата Сообщение от Usaga Посмотреть сообщение
кроссплатформенный UI не такая уж и востребованная вещь
То есть и IDE не должны быть кросплатформенные? А отсюда придём к тому что кросплатформенное вообще не нужно делать.
Цитата Сообщение от Usaga Посмотреть сообщение
и то что реализовать и поддерживать кроссплатформенный UI ну очень сложно
Тут 2 подхода - (а) делать промежуточный слой, свой под каждую Windows,X11... Тогда сложно сделать универсальные виджеты, что бы они передавали, по максимуму, возможности всех ОС. А другой (б) от ОС брать по минимуму, только окна, а внутри всё самим отрисовывать. Недостаток второго подхода - графика выглядит одинаковой на всех платформах, но не похожа на родную платформы. Второй путь мне представляется более перспективным, куда меньше проблем.
Цитата Сообщение от Usaga Посмотреть сообщение
WPF базируется на винде и её DirectX.
Возьмём. к примеру, Simple DirectMedia Layer (SDL). Отрисовка примитивов там может быть и через DirectX (под win), через OGL где угодно. Поверх подобной либы и можно делать GUI.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 20:52
Цитата Сообщение от Curry Посмотреть сообщение
Никто не мешает и на rust, и на других языках изучать указатели так как вы их понимаете - как уникальные идентификаторы.
Дык не вопрос что что то мешает. Вопрос что это к изучению языка не относится от слова совсем, и без этого аспекта все равно не обучение будет а сапоги в смятку. Так что какие то мифы о том что наличие сырых указателей делает изучение плюсов сложнее выеденного яйца не стоят.

Добавлено через 8 минут
Цитата Сообщение от Curry Посмотреть сообщение
слывёт сложным и г-кодным языком
Слывет и является - две большие разницы. Да раздавил в результате многих. Но те кто не осилили это в первом семестре программистами так и не стали. Потому что не осилили указатели с простыми правилами разыменования - куда уж там осилить со сложными? Еще раз - указатель это тензор. Соответсвенно и индекс в массиве, и ассоциативный ключ и все что угодно что показывает нахождение данных а не содержит сами данные - это указатель. Суть его при этом не меняется, меняются только правила разыменовывания на более сложные. Ну а как более сложные концепции осваивать, не поняв более простые то?
А те кто осилили - ну потому плюсы и выбирают что сразу по рукам бьют в случае чего, а не стремиться скрыть проблему которая вылазить начинает уже в продакшине.
В результате оного бития по рукам к концу первого семестра народ делится на две категории - те у кого никаких проблем в работе с указателями и динамической памятью не будет никогда, и тех у кого и GC не просто течь а сифонить будет. Очевидно что вторым в программировании не место.

Добавлено через 10 минут
Curry, да кстати, вопрос на засыпку. Как по вашему должен выглядеть несырой this?

Добавлено через 24 минуты
Цитата Сообщение от Curry Посмотреть сообщение
и с самых азов обучающиеся узнают что можно про сыры указатели
Тогда банально вопрос - как засунуть сложную арифметику под капот смарта с простым интерфейсом арифметики (итератор - по сути невладеющий смарт поддерживающий арифметику) не имея сырых? От в том то и дело что никак. А любая арифметика с итератором как не крути но будет арифметикой именно указателей. Т.е. языки которые сырых указателей не имеют всю эту поднаготную вынуждают переписывать вручную при каждой операции с указателем, вместо того чтобы один раз ее написать и дальше пользовать боле простой интерфейс, чем вероятность ошибки только резко повышают.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 20:55
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
наличие сырых указателей делает изучение плюсов сложнее
Да, делает. Во всех учебниках вначале про них рассказывается. Может быть можно было бы написать учебник в котором вначале бы объяснялось как использовать смарты (до того как они реализованы) и через каждые два слова поминать сырые крепкими словами. Не знаю, что бы из этого вышло.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
не осилили указатели с простыми правилами разыменования - куда уж там осилить со сложными?
индексы в массиве не сложнее.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как по вашему должен выглядеть несырой this?
Как ссылка.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 21:02
Цитата Сообщение от Curry Посмотреть сообщение
Во всех учебниках вначале про них рассказывается.
Хоть один покажите. Только именно учебник а не бульварное чтиво. Еще раз - этой тема изучается не по учебнику по языку и от языка никак не зависит.

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
Как ссылка
Ссылка - это сырой указатель с константным значением адреса. Сути это не меняет. А вот жизнь в плане самоудаления и организации взаимосвязей между объектами усложнит сильно.

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
индексы в массиве не сложнее.
Угу. Настолько не сложнее что больше половины вопросов "хелп" связаны с задачами на элементарный обход массивов.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 21:04
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
итератор - по сути невладеющий смарт поддерживающий арифметику
В частном случае, для массива.
Реализация может быть разная, и сырым в unsafe, и по индексу который потом оптимизатором замениться на указатель.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 21:14
Цитата Сообщение от Curry Посмотреть сообщение
Может быть можно было бы написать учебник в котором вначале бы объяснялось как использовать смарты
Смарты stl к примеру - это ограниченный частный случай предназначенный для очень узкого круга задач. Концепция же смартов имеет неисчерпаемое количество вариантов реализации под нужды разных назначений. Как их реализовывать не понимая что такое сырой указатель? Смарт - это не замена сырого указателя. Это средство кастомизируемой автоматизации действий с сырыми указателями. Чуствуете разницу? Не понимая что делается под капотом у смартов их использовать толком нельзя даже те которые есть, не говоря уже про разработку своих для более других назначений.

Добавлено через 1 минуту
Цитата Сообщение от Curry Посмотреть сообщение
В частном случае, для массива.
Ну а в общем случае? Да и в случае если тот же массив к примеру сегментированный?

Добавлено через 1 минуту
Цитата Сообщение от Curry Посмотреть сообщение
и сырым в unsafe
unsafe бывают программисты а не языки. т.е. введение дополнительной секции unsafe ничего не решает окромя того что добавляет ненужные сложности синтаксиса.

Добавлено через 5 минут
Цитата Сообщение от Curry Посмотреть сообщение
и по индексу который потом оптимизатором замениться на указатель
Ну это разве что при последовательном обходе массива в цикле. А кто его на указатель заменит к примеру у головок кольцевого буфера надстроенного над массивом?
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 21:21
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Хоть один покажите. Только именно учебник а не бульварное чтиво.
Бьерн Страуструп. Язык программирования С++ , "1.3.3 Указатели и массивы".
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ссылка - это сырой указатель с константным значением адреса. Сути это не меняет.
Принципиально меняет. Не допускает арифметику указателей.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Настолько не сложнее что больше половины вопросов "хелп" связаны с задачами на элементарный обход массивов.
Насчёт указателей и управления памятью проблем у начинающих куда больше. Отсюда и любовь к GC. А массив можно разными for_each-ами обходить.

Добавлено через 5 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
если тот же массив к примеру сегментированный?
умеем итерировать по несегментированному? Умеем переходить к другому сегменту в
списке? Значит умеем и по сегментированному.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
введение дополнительной секции unsafe ничего не решает
Очень даже решает. Ограничивает область безобразий. При грамотном применении. А начинающие туда не полезут, по крайней мере, не прирождённые горе-хакеры.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
у головок кольцевого буфера надстроенного над массивом
Так же, индексы. Сам делал.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 21:37
Цитата Сообщение от Curry Посмотреть сообщение
Принципиально меняет. Не допускает арифметику указателей.
Чем ограничивает тех кто понимает что делает очень сильно. Как вы к примеру без арифметики указателей вычислите адрес объекта в который данный объект статически композирован? А без этого эффективная реализация к примеру свойств не возможна от слова совсем.
Еще раз - для того чтобы пришла в голову мысля применить арифметику к указателю, а особенно к this нужно еще дорасти. Тем кто до понимания что такое указатель не дорос это в голову не прийдет. При этом опять же те кто доросли до ООП с указателями уже по определению даже не на "ты" а на "эй ты редиска".
Цитата Сообщение от Curry Посмотреть сообщение
Бьерн Страуструп. Язык программирования С++ , "1.3.3 Указатели и массивы".
Ну и где тут объяснение что такое указатель и с чем его едят? Здесь описан синтаксис описания указателя принятый в языке, а о том что указатель из себя представляет, его назначении и свойствах - ни пол слова. Что в общем то и говорилось - в учебниках и мануалах по языку будет только синтаксис. Они подразумевают что тот кто их читает знаком с концепцией указателя, которая от языка не зависит от слова совсем, так же как и с еще кучей более других концепций изучаемых в других дисциплинах .

Добавлено через 4 минуты
Цитата Сообщение от Curry Посмотреть сообщение
А начинающие туда не полезут, по крайней мере, не прирождённые горе-хакеры.
А их задача как раз туда лезть и по рукам получать пока учатся. Тогда и в реальной работе будут код писать нормальный а не быдлокодить.

Добавлено через 1 минуту
Цитата Сообщение от Curry Посмотреть сообщение
Насчёт указателей и управления памятью проблем у начинающих куда больше.
Ну или к концу первого семестра эти проблемы заканчиваются от слова совсем или можно отчислять - если такие простые вещи не понял то программистом ему не быть.

Добавлено через 32 секунды
Цитата Сообщение от Curry Посмотреть сообщение
А массив можно разными for_each-ами обходить.
ага. особенно с шагом или два массива параллельно.

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
умеем итерировать по несегментированному? Умеем переходить к другому сегменту в
списке? Значит умеем и по сегментированному.
Т.е. итераторы свои будем писать по любому. От тут и нужны сырые указатели в т.ч. и внутрь массива.

Добавлено через 51 секунду
Цитата Сообщение от Curry Посмотреть сообщение
Так же, индексы. Сам делал.
Так не оптимльно же.
0
88 / 108 / 6
Регистрация: 16.04.2019
Сообщений: 451
Записей в блоге: 4
23.04.2020, 22:01
Интересно чем руководствуется идиот, когда он заходит в тему с названием C# vs Java и начинает рассказывать о преимуществах С++? Тем более когда ТС ясно дал понять, что в С++ он не заинтересован вообще.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 22:09
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как вы к примеру без арифметики указателей вычислите адрес объекта в который данный объект статически композирован?
Зачем адрес? Ссылку получить можно.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Не понимая что делается под капотом у смартов
Но не в начале обучения. Может ещё и потоки по косточкам разобрать?
Вначале std пусть научаться пользоваться.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну и где тут объяснение что такое указатель и с чем его едят?
прямо там, с указанием как адрес массива получить. А был бы Бьёрн таким умным как я, не упоминал бы сырые указатели до половины книги. Впрочем, в С++ это сложно сделать - тяжёлое наследство С. По этому я упоминал что учить лучше на Аде. rust всё ж таки сложноват как первый язык. Хотя, для студентов соотвествующих специальностей, может и rust.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
ага. особенно с шагом
Или итератор свой или функция обхода итераторов с указанием шага одна на все итераторы.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
или два массива параллельно.
https://stackoverflow.com/ques... on-for-c11
Для языков уважающих ФП (не только приведённый там в начале питон, а больше десятка языков) используются функции с принятым именем zip или с него начинающиеся. Без проблем.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Так не оптимльно же.
Пишу с индексами, компилирую, смотрю асм - а там адреса в массиве. Оптимизация, называется!
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 22:16
Цитата Сообщение от Curry Посмотреть сообщение
Ссылку получить можно.
В исходе в методе свойства имеем this свойства и где то в константе оффсет по которому оно у содержащего живет. Как без арифметики и приведения указателей получить ссылку на содержащий объект?

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
Но не в начале обучения.
Именно в самом начале. Это вопросы касающиеся общего устройства компа и ОЗУ. Да и вопроса проще что такое адрес ячейки так же как и операций над интами которые являются адресами еще поискать надыть. не вываливать же на них что то сложное сразу.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 22:19
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как?
аха, вначале наоборот подумал. Так вот, не надо этих хаков. При надобности обращаться к объемлющему объекту.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
23.04.2020, 22:22
Цитата Сообщение от Curry Посмотреть сообщение
Или итератор свой или функция обхода итераторов с указанием шага одна на все итераторы.
ну вот в том то и дело что без сырых указателей итераторы обойдутся.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 9
23.04.2020, 22:22
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
в константе оффсет
Вот, не надо писать как на асме. Без этого всегда можно обойтись.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2020, 22:22

Что выбрать Java или Python?
Коллеги, очень нужен ваш совет. Есть программа созданная на базе 1С http://lizard.pro/DemoSEPN/impulse/ru/ пользователь impulse (без...

Подскажите что выбрать C# java Delphi Python
Хотел бы получить как можно развернуты ответ .

Xamarin or Java + Android SDK что выбрать?
Всем привет. Есть желание освоить мастерство разработки приложений под Андройд. Вопрос что лучше использовать??? Java + Android SDK или...

С#, Java, Python, . ? Что выбрать для написания кроссплаформеноого ПО?
Здравствуйте, товарищи! В каком случае писать на Питоне, а в каком на Java по вашему мнению? Или, может на каком-то другом языке? Можно...

C++ vs Java vs python. Что выбрать для олимпиадного программирования новичку?
не получается определиться с выбором языка


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru