реклама на сайте
подробности

 
 
> С/С++, Почему до сих пор все сидят на древних языках вроде С и С++
juvf
сообщение Jul 17 2014, 20:48
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Очередной хлоливар С/С++ vs Java/C# возник в месте обсуждения РТОС для мк. Я его переместил сюда.

Вброс
Цитата(DASM @ Jul 17 2014, 22:10) *
Читаю все это и волосы дыбом. Тем более что и работаю с этим. Почему программист должен думать об освобождении памяти? Почему многопоточность не поддерживается средствами языка? Почему до сих пор все сидят на древних языках вроде С и С++ (он недалеко ушел от С, пусть и поддерживает ООП, но все равно с ним обрушить любую систему на ура можно. Есть ли нормальные реализации Явы или С шарп для контроллеров? Иначе это хождение по граблям будет вечным. 15 лет в теме и все одно и тоже. И памяти то уже достаточно для Явы например, и все равно. От слов «указатель» и «приведение типов» тошнит уже в век, когда объемы флеш и озу - ничто, а время на выпуск - все, это анахронизм какой то


Цитата
Читаю все это и волосы дыбом.
я когда вижу код на Perl - волосы дыбом, это не значит что Perl гавно.
Цитата
Почему многопоточность не поддерживается средствами языка?
а почему в языке должна быть многопоточность? Язык - это всего лишь язык. А всё остальное - это библиотеки, фрэймворки. Нужна многопоточность - подключай boost, Qt, *RTOS.... или сам суперлупом обеспечивай. Такто можно заявит: Почему сигналы-слоты не обеспечивает язык? Почему extFat не обеспечивает язык? Почему KDE не обеспечивает язык?
Цитата
Есть ли нормальные реализации Явы или С шарп для контроллеров?
нету. не нормальных, не ненормальных.
какая к чёрту жава на мк? Даже эти ваши линуксы пишут на си по сей день. не на жаве, и тем более не на с#. и жава.... для неё нужна жавамашина. какую жава машину вы запехнёте в мк с 1кБ ОЗУ? Всё это удел высокоуровнего программирования, окошки, форточки... даже для ПК драйвера пишут на Си/С++. Не разу не слышал чтобы кто-то написал низкоуровневый драйвер для ПК на жаве.
А по поводу с# на мк- вообще смешно.... ибо c# не не язык программирования, а "язык программирования виндоус". Вы бы ещё спросили "А есть нормальные реализации языка 1С для мк?". ))
см вики
Цитата
C# — объектно-ориентированный язык программирования. Разработан в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework....
Это нужно в мк с 256 байтами ОЗУ (да хоть и с 64 кБ ОЗУ) запихать .NET? А также для неё поставить Windows8.... c мэтро biggrin.gif

Цитата
С++ (он недалеко ушел от С, пусть и поддерживает ООП, но все равно с ним обрушить любую систему на ура можно.
Дак на ура и жавой рушатся приложения только так.

Цитата(DASM @ Jul 18 2014, 01:26) *
Посмотрите примеры программ на Java - там нет этого дебилизма. С++ позволит даже такое *(int *)0x40001234 = 0; На Яве вам никто не позволит пользоваться указателями, оных и нету, и никто не позволит приводить типы с уменьшением точности. С++ - это очень старый язык, он неплох для своих лет, но уже 2014 на дворе. Тот же ассемблер завуалированный.

А как в яве запись в регистр микросхемы? например в общем адресном пространстве 0x40001234 - адрес регситра RxDATA, а 0x40001236 - адрес регистра TxDATA. Как на Jave происходит обращение к этим регистрам?

Цитата
С++ - это очень старый язык, он неплох для своих лет, но уже 2014 на дворе.
старый не знаяит плохой. Русский ещё старее, а на дворе 2014...
ДВС - ему больше 100 лет. а на дворе 2014. Но пока человечество не придумало лучше двигатель. laughing.gif
Go to the top of the page
 
+Quote Post
10 страниц V  < 1 2 3 4 > »   
Start new topic
Ответов (15 - 29)
A. Fig Lee
сообщение Jul 18 2014, 11:03
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Ява на МК - глупость и не более.
Идея Явы - абстрагироватся от железа, в то время как программирование контроллеров сильно от него зависит.
С учетом многообразия и смены микроконтроллеров, основное время будет уходить в нахождении багов в
сандвиче Ява/хардвар, "почему на С работает, а на Яве нет".




--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 18 2014, 11:34
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



ага-ага http://artemonische.narod.ru/nesbyvshiyesy...i_prognozy.html
Go to the top of the page
 
+Quote Post
virtual9900
сообщение Jul 18 2014, 11:39
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 22-09-09
Из: Петергоф
Пользователь №: 52 521



  1. Tessel is a microcontroller that runs JavaScript
  2. Espruino is a small computer that anyone can use to control things around them. Its JavaScript interpreter gives you instant feedback so that you can experiment and develop whatever your level of experience
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jul 18 2014, 12:33
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(A. Fig Lee @ Jul 18 2014, 15:03) *
Ява на МК - глупость и не более.

Ага скажите это производителям - продвигающим Java для МК и в частности Android OS запускающей Java софт (после конвертации) на Androidе sm.gif

P.S. Java байт код - код стековой машины, но в сравнении с Форт концепцией обладает достаточно большой избыточностью.
Вместе с тем Imsys своей родословной обязаны стековым процессорам,
как и picoJava . И где сейчас PatriotScintific (вроде), если кто помнит. Запуск Java байт кода мохно осуществить и в рамках AVR архитектуры (примерно 12K кода и была тема лет 8 назад по запуску Java на МК на electronix)

Сообщение отредактировал Kopa - Jul 18 2014, 12:50
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 18 2014, 13:28
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Kopa @ Jul 18 2014, 08:33) *
Ага скажите это производителям - продвигающим Java для МК и в частности Android OS запускающей Java софт (после конвертации) на Androidе sm.gif

P.S. Java байт код - код стековой машины, но в сравнении с Форт концепцией обладает достаточно большой избыточностью.
Вместе с тем Imsys своей родословной обязаны стековым процессорам,
как и picoJava . И где сейчас PatriotScintific (вроде), если кто помнит. Запуск Java байт кода мохно осуществить и в рамках AVR архитектуры (примерно 12K кода и была тема лет 8 назад по запуску Java на МК на electronix)

1. Продвигают много чего.. Вон Qualcomm тоже был недоволен количеством ядер в процессорах. Это бессмысленно, чисто маркетинговый ход,
ухудшающий, не улучшающий характеристики. Но выиграет тот, у кого больше ядер, или мегапикселей.
Народ в массе не разбирается.

2. "Можно" не значит нужно. В основном делают для "а вот я могу" или подобного.
Чем поможет Java в 12к на АВР? По моему, ничем, был бы смысл, она бы прижилась.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Enthusiast
сообщение Jul 18 2014, 13:42
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 25-09-09
Из: Nizhny Novgorod, Russia
Пользователь №: 52 588



На мой взгляд, языком следующего поколения встраиваемых устройств вполне может стать Эрланг (Erlang - ERicsson LANGuage). Основные свойства языка: встроенная многопоточность с автоматической балансировкой нагрузки по узлам, "горячее" обновление кода без перезагрузки узла. Работу Эрланга на "Малинке" можно увидеть здесь:
Erlang embedded - episode 1
Erlang embedded - episode 2
Erlang embedded - episode 3
Erlang embedded - episode 4

Сообщение отредактировал Enthusiast - Jul 18 2014, 13:44
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 18 2014, 14:08
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(A. Fig Lee @ Jul 18 2014, 17:28) *
1. Продвигают много чего.. Вон Qualcomm тоже был недоволен количеством ядер в процессорах. Это бессмысленно, чисто маркетинговый ход,
ухудшающий, не улучшающий характеристики. Но выиграет тот, у кого больше ядер, или мегапикселей.
Народ в массе не разбирается.

2. "Можно" не значит нужно. В основном делают для "а вот я могу" или подобного.
Чем поможет Java в 12к на АВР? По моему, ничем, был бы смысл, она бы прижилась.

Какие именно характеристики ухудшает количество ядер от Квалкомма? Одноядерный APQ8064 у меня кушает более всех. Потом обзавелся LG G2 и Galaxy 10 2014 - на 800 снэпдрагоне о 4 ядра - теперь о батарее не сильно волнуюсь.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 18 2014, 14:14
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(DASM @ Jul 18 2014, 10:08) *
Какие именно характеристики ухудшает количество ядер от Квалкомма? Одноядерный APQ8064 у меня кушает более всех. Потом обзавелся LG G2 и Galaxy 10 2014 - на 800 снэпдрагоне о 4 ядра - теперь о батарее не сильно волнуюсь.

Размер, стоимость, расход батареи.
"У меня был Х с один ядром, а стал У с 4мя и ест меньше не стреляет", так как У с одним кушал бы еще меньше, стоил дешевле и так далее со всеми остановками..
А что 8 ядер улучшают, не ясно..


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jul 21 2014, 03:11
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(DASM @ Jul 18 2014, 01:26) *
Да хоть new, хоть malloc - суть одна - любой залетевший дятел разрушит все. Посмотрите примеры программ на Java - там нет этого дебилизма.
И что тут плохово? Для дятлов сделали Java. Дай вилку дебилу, он и себе и окружающим глаза выткнет. Но если на вилку наткнуть пробку от бутылки - такая вилка доставляет определённые неудобства, зато дебилам дятлам такой прибор очень даже безопасен.

а как в жаве уборка мусора происходит? абстрактно, допустим есть 100 байт свободной памяти. Объявляем переменную. в жаве, на сколько я понял динамически выделяется 100 байт и связывается ссылка на этот блок. потом удалили ссылку, по описанию языка, когда-нибудь уборщик мусора освободит эти 100 байт. Но когда? Вот создали переменную в 100 байт, удалили, и тутже создали новую переменную. Но уборщик мусора ещё не освободил память. Что произойдёт? Ошибка выделения памяти? Или принудительный вызов уборщика?

Жава и реалтайм - совместимые вещи? Жава гарантирует, что выполнит функцию за n тактов, и ни какой уборщик мусора не добавит m тактов?
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jul 21 2014, 05:17
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Сборщик мусора и риалтайм - понятия не совместимые. В яве если вы удалили переменную, а потом создали новую, никто не гарантирует, что GC начнёт чистить память. Если память будет заканчиваться, то GC начнёт проходить чаще.
В эрланге есть хитрый сборщик мусора, обеспечивающий так называемый софт риалтайм. Можете почитать поподробнее, если интересно.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jul 21 2014, 05:38
Сообщение #26


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(juvf @ Jul 21 2014, 06:11) *
по описанию языка, когда-нибудь уборщик мусора освободит эти 100 байт. Но когда?

Чего тут сложного? Наверняка используют reference counting. Блок остался бесхозным - и подлежит удалению при следующем обращении к манагеру памяти.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 21 2014, 07:33
Сообщение #27


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(juvf @ Jul 21 2014, 06:11) *
Жава и реалтайм - совместимые вещи? Жава гарантирует, что выполнит функцию за n тактов, и ни какой уборщик мусора не добавит m тактов?


Почему как только речь заходит о Java сразу просыпается трогательное внимание к риалтайму?

А что, C-и жестко риалтаймный? Особенно его функции printf, scanf и т.д.?
Как C-и так и Java нужно приучать к риалтайму. Делать профайлинги, проектировать HAL и проч.



Go to the top of the page
 
+Quote Post
juvf
сообщение Jul 21 2014, 08:46
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(AlexandrY @ Jul 21 2014, 13:33) *
А что, C-и жестко риалтаймный? Особенно его функции printf, scanf и т.д.?

Жестко. printf(buff, "Hello world!"); как ни крути, в какое время не вызови - выполнется за определённое время тактов. ни тактом больше ни тактом меньше.

ps. сорри, printf не пользую, мож там из-за потока может быть задержка. Но sprintf(buff, "Hello world!") - тут уж точно, такт в такт.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 21 2014, 09:27
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Видимо, подразумевалась работа с кучей при вызове printf, sprintf.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jul 21 2014, 09:31
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



sprintf вовсе не обязательно использует кучу.
Go to the top of the page
 
+Quote Post

10 страниц V  < 1 2 3 4 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016