Откуда в arduino класс String?

VeD
Offline
Зарегистрирован: 21.02.2016

В C++ такого класса нет. С какого языка он взят?

negavoid
Offline
Зарегистрирован: 09.07.2016

От итальянцев. Лежит в папке core в файле WString.cpp.

В стандартной поставке стандартных библиотек с компилятором такого класса нет. Разработчики взяли и написали его самостоятельно, на том самом с++. Ни с какого языка он не взят, хоть, действительно, во многих языках существуют всяческие обёртки для упрощения работы со строками.

VeD
Offline
Зарегистрирован: 21.02.2016

То есть они взяли C++ и просто модифицируют его, добавляя в него свои плюшки? Если так, тогда какой язык учить?

negavoid
Offline
Зарегистрирован: 09.07.2016

Можно сказать и так, чётких границ в определениях нет. Если так будет удобнее, можно считать, что Wiring - это такая сторонняя библиотека (написана на с/c++/и немножко на ассемблере) от итальянцев для упрощения работы с ардуинами, просто она подключается в arduino ide прозрачно и автоматически.

VeD пишет:

Если так, тогда какой язык учить?

Тот, за который вам будут платить больше всего на работе :) Для освоения же начал работы с ардуино - c/c++.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

VeD пишет:

То есть они взяли C++ и просто модифицируют его, добавляя в него свои плюшки? Если так, тогда какой язык учить?

Никто никакой язык не модифицировал. Они просто написали программу.

Вот если я напишу на С++ или на Java или ещё на чём, программу, которая считает количество минут со дня рождения Вашей бабушки, я тоже модифицирую язык?

Открою Вам страшный секрет - в языке С++ (как впрочем и в любом другом языке) нет никакого digitalRead(), никакого millis() и даже, страшно сказать, никакого delay()! Как жить-то? Какой язык учить?

VeD
Offline
Зарегистрирован: 21.02.2016

Это есть в wiring

VeD
Offline
Зарегистрирован: 21.02.2016

Порыл я гугл, ардуино программируется на C/C++ , а вот эти String pinMode() digitalRead() delay() функции библиотеки написанной для ардуино. 

Но лично для меня написание всяких там библиотек, фреймворков, ни что иное как модификация языка.

negavoid
Offline
Зарегистрирован: 09.07.2016

VeD пишет:

Но лично для меня написание всяких там библиотек, фреймворков, ни что иное как модификация языка.

Не, не угадали, вот так считать как раз и нельзя :) Язык - это if, for-while, include-define, const, long, struct, скобочки, точки с запятой. Всё остальное - это библиотечные функции, просто их за вас написали уже очень много.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

VeD, а что иначе составляет язык, как не функции?) Так языков вообще не существует, все модификации.
Просто хотелось б узнать, что вы считаете "чистым" Си. Все функции и все классы кем-то когда-то написаны.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Yarik.Yar пишет:
что вы считаете "чистым" Си.
Ну, существует стандарт языка. То, что в него входит - это язык, а то, что сверху - это написанные на нём функции.

В языке LISP, например, вообще стандарты (старые) определяли два уровня языка: "чистый лисп" и просто "лисп". Так второе обычно писалось на первом, но это считалось именно языком, т.к. оно описано в стандарте.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

откуда всё? - в С++ этого нет!

нам подсунули палёный С++ !

Logik
Offline
Зарегистрирован: 05.08.2014

Чистый си - это базовый язык + стандартные библиотеки. Базовый язык определяет синтаксис, зарезервированые слова, операции, типы, выражения и т.д. но не функции. Те функции которые мы привыкли считать "си" - это из стандартных библиотек. Например memcpy обявлена в string.h. И любой компилятор претендующий на соответствие стандарту именно так и организован. Все остальное - "нечистый си"

Писать собственный класс поддержки строк произвольной длинны - старинная народная забава, конкурирующая с написанием своей ОС, и своего языка. И итальянцы видимо тоже участвуют. Как правило в таких классах все работает отлично, пока не начинается добавление/удаление символов в строку. Либо память жрет как не в себя, либо тормозит дико. Фиксил както тормоза в одном проекте. Строка в сотни килобайт формировалась добавлением в конец по одному символу. И каждый раз память релокейтилась )))  ИМХО - написать такой класс адекватно работающий при всех мыслимых способах работы со строкой невозможно, где влетиш заранее в той или иной реализации - неизвестно, я избегаю использовать такое.

VeD
Offline
Зарегистрирован: 21.02.2016

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

VeD
Offline
Зарегистрирован: 21.02.2016

Значит достаточно запомнить как пользоваться библиотеками и ну его это ЯП? На хабре читал, о фреймворк программистах, которые языка не знают, а проекты создают.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

VeD пишет:
лично для меня хотелось бы знать что та или иная функция библиотеки делает, как ее использовать, об этом в ничего в стандартном языке нет.

и, кто тебе запрещает читать исходники библиотек?

чистый C++ ты же знаешь.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

ЕвгенийП, с вами согласен, но наш ТС отрицает все библиотеки впринципе, даже стандартные.

VeD пишет:

Чичтым Си я считаю весь язык без библиотек

VeD
Offline
Зарегистрирован: 21.02.2016

Я к чему это спросил, где в C++ String. Хотел протестить его в visual C++ Ну потом разобрался как это делать в ардуино ide.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

VeD пишет:
Я к чему это спросил, где в C++ String. Хотел протестить его в visual C++ Ну потом разобрался как это делать в ардуино ide.

снова за рыбу деньги - нет в С++ String, так же как нет произведений Пушкина в толковом словаре русского языка.

negavoid пишет:

Лежит в папке core в файле WString.cpp.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

VeD пишет:
На хабре читал, о фреймворк программистах, которые языка не знают, а проекты создают.
Сейчас много спецов развелось. В следующий раз идите к врачу, который медицины не знает, но зубы дёргает.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ЕвгенийП пишет:

VeD пишет:
На хабре читал, о фреймворк программистах, которые языка не знают, а проекты создают.
Сейчас много спецов развелось. В следующий раз идите к врачу, который медицины не знает, но зубы дёргает.

я запрещаю ходить к стоматологу, который не знает сопромата.

VeD
Offline
Зарегистрирован: 21.02.2016

https://habrahabr.ru/post/208904/ вот эта статья

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

VeD пишет:

https://habrahabr.ru/post/208904/ вот эта статья

а, я на форуме arduino.ru читал, что есть такие программисты, которые не знают, откуда в С++ берутся библиотеки.

VeD
Offline
Зарегистрирован: 21.02.2016

Я этого не говорил. Я спросил откуда в ардуино String так как думал, что он стандартно от C++, а не собственная разработка