От итальянцев. Лежит в папке core в файле WString.cpp.
В стандартной поставке стандартных библиотек с компилятором такого класса нет. Разработчики взяли и написали его самостоятельно, на том самом с++. Ни с какого языка он не взят, хоть, действительно, во многих языках существуют всяческие обёртки для упрощения работы со строками.
Можно сказать и так, чётких границ в определениях нет. Если так будет удобнее, можно считать, что Wiring - это такая сторонняя библиотека (написана на с/c++/и немножко на ассемблере) от итальянцев для упрощения работы с ардуинами, просто она подключается в arduino ide прозрачно и автоматически.
VeD пишет:
Если так, тогда какой язык учить?
Тот, за который вам будут платить больше всего на работе :) Для освоения же начал работы с ардуино - c/c++.
То есть они взяли C++ и просто модифицируют его, добавляя в него свои плюшки? Если так, тогда какой язык учить?
Никто никакой язык не модифицировал. Они просто написали программу.
Вот если я напишу на С++ или на Java или ещё на чём, программу, которая считает количество минут со дня рождения Вашей бабушки, я тоже модифицирую язык?
Открою Вам страшный секрет - в языке С++ (как впрочем и в любом другом языке) нет никакого digitalRead(), никакого millis() и даже, страшно сказать, никакого delay()! Как жить-то? Какой язык учить?
Но лично для меня написание всяких там библиотек, фреймворков, ни что иное как модификация языка.
Не, не угадали, вот так считать как раз и нельзя :) Язык - это if, for-while, include-define, const, long, struct, скобочки, точки с запятой. Всё остальное - это библиотечные функции, просто их за вас написали уже очень много.
VeD, а что иначе составляет язык, как не функции?) Так языков вообще не существует, все модификации.
Просто хотелось б узнать, что вы считаете "чистым" Си. Все функции и все классы кем-то когда-то написаны.
Ну, существует стандарт языка. То, что в него входит - это язык, а то, что сверху - это написанные на нём функции.
В языке LISP, например, вообще стандарты (старые) определяли два уровня языка: "чистый лисп" и просто "лисп". Так второе обычно писалось на первом, но это считалось именно языком, т.к. оно описано в стандарте.
Чистый си - это базовый язык + стандартные библиотеки. Базовый язык определяет синтаксис, зарезервированые слова, операции, типы, выражения и т.д. но не функции. Те функции которые мы привыкли считать "си" - это из стандартных библиотек. Например memcpy обявлена в string.h. И любой компилятор претендующий на соответствие стандарту именно так и организован. Все остальное - "нечистый си"
Писать собственный класс поддержки строк произвольной длинны - старинная народная забава, конкурирующая с написанием своей ОС, и своего языка. И итальянцы видимо тоже участвуют. Как правило в таких классах все работает отлично, пока не начинается добавление/удаление символов в строку. Либо память жрет как не в себя, либо тормозит дико. Фиксил както тормоза в одном проекте. Строка в сотни килобайт формировалась добавлением в конец по одному символу. И каждый раз память релокейтилась ))) ИМХО - написать такой класс адекватно работающий при всех мыслимых способах работы со строкой невозможно, где влетиш заранее в той или иной реализации - неизвестно, я избегаю использовать такое.
Чичтым Си я считаю весь язык без библиотек. Ведь даже чтобы разобраться в библиотеках, нужно знать как они устроены и как написаны. Для этого нужно знать чистый язык. Да для сравнения взять язык русский. Есть слово привет, а есть модификация прив. С прив работать проще, меньше букв. Но этого прив нет в чистом русском. Для меня фреймворки и библиотеки как прив. Вроде бы и просто, подключил и кучу кода писать не надо, но с другой стороны, лично для меня хотелось бы знать что та или иная функция библиотеки делает, как ее использовать, об этом в ничего в стандартном языке нет.
Значит достаточно запомнить как пользоваться библиотеками и ну его это ЯП? На хабре читал, о фреймворк программистах, которые языка не знают, а проекты создают.
От итальянцев. Лежит в папке core в файле WString.cpp.
В стандартной поставке стандартных библиотек с компилятором такого класса нет. Разработчики взяли и написали его самостоятельно, на том самом с++. Ни с какого языка он не взят, хоть, действительно, во многих языках существуют всяческие обёртки для упрощения работы со строками.
То есть они взяли C++ и просто модифицируют его, добавляя в него свои плюшки? Если так, тогда какой язык учить?
Можно сказать и так, чётких границ в определениях нет. Если так будет удобнее, можно считать, что Wiring - это такая сторонняя библиотека (написана на с/c++/и немножко на ассемблере) от итальянцев для упрощения работы с ардуинами, просто она подключается в arduino ide прозрачно и автоматически.
Если так, тогда какой язык учить?
Тот, за который вам будут платить больше всего на работе :) Для освоения же начал работы с ардуино - c/c++.
То есть они взяли C++ и просто модифицируют его, добавляя в него свои плюшки? Если так, тогда какой язык учить?
Никто никакой язык не модифицировал. Они просто написали программу.
Вот если я напишу на С++ или на Java или ещё на чём, программу, которая считает количество минут со дня рождения Вашей бабушки, я тоже модифицирую язык?
Открою Вам страшный секрет - в языке С++ (как впрочем и в любом другом языке) нет никакого digitalRead(), никакого millis() и даже, страшно сказать, никакого delay()! Как жить-то? Какой язык учить?
Это есть в wiring
Порыл я гугл, ардуино программируется на C/C++ , а вот эти String pinMode() digitalRead() delay() функции библиотеки написанной для ардуино.
Но лично для меня написание всяких там библиотек, фреймворков, ни что иное как модификация языка.
Но лично для меня написание всяких там библиотек, фреймворков, ни что иное как модификация языка.
Не, не угадали, вот так считать как раз и нельзя :) Язык - это if, for-while, include-define, const, long, struct, скобочки, точки с запятой. Всё остальное - это библиотечные функции, просто их за вас написали уже очень много.
VeD, а что иначе составляет язык, как не функции?) Так языков вообще не существует, все модификации.
Просто хотелось б узнать, что вы считаете "чистым" Си. Все функции и все классы кем-то когда-то написаны.
В языке LISP, например, вообще стандарты (старые) определяли два уровня языка: "чистый лисп" и просто "лисп". Так второе обычно писалось на первом, но это считалось именно языком, т.к. оно описано в стандарте.
откуда всё? - в С++ этого нет!
нам подсунули палёный С++ !
Чистый си - это базовый язык + стандартные библиотеки. Базовый язык определяет синтаксис, зарезервированые слова, операции, типы, выражения и т.д. но не функции. Те функции которые мы привыкли считать "си" - это из стандартных библиотек. Например memcpy обявлена в string.h. И любой компилятор претендующий на соответствие стандарту именно так и организован. Все остальное - "нечистый си"
Писать собственный класс поддержки строк произвольной длинны - старинная народная забава, конкурирующая с написанием своей ОС, и своего языка. И итальянцы видимо тоже участвуют. Как правило в таких классах все работает отлично, пока не начинается добавление/удаление символов в строку. Либо память жрет как не в себя, либо тормозит дико. Фиксил както тормоза в одном проекте. Строка в сотни килобайт формировалась добавлением в конец по одному символу. И каждый раз память релокейтилась ))) ИМХО - написать такой класс адекватно работающий при всех мыслимых способах работы со строкой невозможно, где влетиш заранее в той или иной реализации - неизвестно, я избегаю использовать такое.
Чичтым Си я считаю весь язык без библиотек. Ведь даже чтобы разобраться в библиотеках, нужно знать как они устроены и как написаны. Для этого нужно знать чистый язык. Да для сравнения взять язык русский. Есть слово привет, а есть модификация прив. С прив работать проще, меньше букв. Но этого прив нет в чистом русском. Для меня фреймворки и библиотеки как прив. Вроде бы и просто, подключил и кучу кода писать не надо, но с другой стороны, лично для меня хотелось бы знать что та или иная функция библиотеки делает, как ее использовать, об этом в ничего в стандартном языке нет.
Значит достаточно запомнить как пользоваться библиотеками и ну его это ЯП? На хабре читал, о фреймворк программистах, которые языка не знают, а проекты создают.
и, кто тебе запрещает читать исходники библиотек?
чистый C++ ты же знаешь.
ЕвгенийП, с вами согласен, но наш ТС отрицает все библиотеки впринципе, даже стандартные.
Чичтым Си я считаю весь язык без библиотек
Я к чему это спросил, где в C++ String. Хотел протестить его в visual C++ Ну потом разобрался как это делать в ардуино ide.
снова за рыбу деньги - нет в С++ String, так же как нет произведений Пушкина в толковом словаре русского языка.
Лежит в папке core в файле WString.cpp.
я запрещаю ходить к стоматологу, который не знает сопромата.
https://habrahabr.ru/post/208904/ вот эта статья
https://habrahabr.ru/post/208904/ вот эта статья
а, я на форуме arduino.ru читал, что есть такие программисты, которые не знают, откуда в С++ берутся библиотеки.
Я этого не говорил. Я спросил откуда в ардуино String так как думал, что он стандартно от C++, а не собственная разработка