The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.40, opennews (??), 23-Дек-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


28. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 13:14 
Все никак не пойму чем Rust так обожаем? Может синтаксисом, так не такое же уг в стиле C++ с синтаксическим сахаром от которого диабет уже начиная с C++11, может безопасностью, так нет мешанина unsafe и safe кода по определению не может быть безопасной, объясните пожалуйста зачем оно?
Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск языка программирования Rust 1.40"  +8 +/
Сообщение от Аноним (21), 23-Дек-19, 13:24 
Для того чтобы это понять, нужно очень хорошо знать С++, и работать со сложными проектами где проблемы С++ вылазят и доставляют много боли.
После этого посмотреть на раст и понять, как он большую часть этой боли решает, в т.ч. благодаря пониманию программистом идей и способов написания корректно работающего кода.
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск языка программирования Rust 1.40"  –3 +/
Сообщение от Аноним (5), 23-Дек-19, 13:28 
Перечисли будь добр не проблемы C++ потому что это и фига языка одновременно, а именно то шо хруст решает
Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск языка программирования Rust 1.40"  –2 +/
Сообщение от Аноним (5), 23-Дек-19, 13:29 
Совместимость с С та еще фига в кармане)
Ответить | Правка | Наверх | Cообщить модератору

45. "Выпуск языка программирования Rust 1.40"  –2 +/
Сообщение от Аноним (5), 23-Дек-19, 13:38 
Вся суть C++ это борьба с тем уродством который называют няшным Си, тут тебе и указатели, и строки-массивы, и сегфолты, и ацкий синтаксис со звездочками, и упоротые макросы и стопитсот другого гемора
Ответить | Правка | Наверх | Cообщить модератору

49. "Выпуск языка программирования Rust 1.40"  –4 +/
Сообщение от Аноним (5), 23-Дек-19, 13:41 
Чего стоит альтернативный синтаксис указателя vasyan[0] вместо *vasyan, итого массив как бы тупо указатель, но передается в другой указатель как не указатель, можно невозбранно херачить *vasyan=vasyan[0], при том что правильно было бы **vasyan=vasyan[0] и такого сладкого хлеба в Си и следовательно в плюсах хватит каждому братишке
Ответить | Правка | Наверх | Cообщить модератору

203. "Выпуск языка программирования Rust 1.40"  +3 +/
Сообщение от Anonim (??), 23-Дек-19, 16:46 
Сам хоть понял че написал?)) сразу видно что ты не разбираешься в Си, более того, банально путаешь такие понятия как массив и указатель. И самое печальное, что вас таких умников дохера и больше!
Ответить | Правка | Наверх | Cообщить модератору

207. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 16:59 
Ну давай расскажи чем vasyan[1] отличается от *vasyan++ или почему для "массива" не нужен оператор адреса *vasyan=mas работает как же так, если только mas не адрес на первый элемент участка памяти в котором лежат данные? Ты же гуру все знаешь, обьясни по пацански
Ответить | Правка | Наверх | Cообщить модератору

239. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 23-Дек-19, 18:05 
Не путай тёплое с мягким!
Сперва ответь себе на следующие вопросы, что такое в языке Си:
1) объект
2) указатель
3) массив
А затем спроси себя, чем отличаются эти понятия:
1) указатель и адрес
2) массив и имя массива
Ты ведь понимаешь, что это разные понятия?
Читая твои предложения, складывается стойкое очущение что нет!
Ответить | Правка | Наверх | Cообщить модератору

242. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 18:24 
K&R не читал да? Риччи сам пишет шо массив есть альтернативная форма записи указателей или ты самый умный?
Ответить | Правка | Наверх | Cообщить модератору

271. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 23-Дек-19, 19:51 
Не надо врать и вводить в заблуждение других!
Идите и сами для начала прочитайте эту книгу в оригинале - такого бреда там нет!
Если я не прав, давай сюда номер страницы где это сказано?
Ответить | Правка | Наверх | Cообщить модератору

276. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 20:10 
Глава 5.3 Указатели и массивы

Начиная с...

Между индексированием и арифметикой с указателями существует очень тесная связь. По определению
значение переменной или выражения типа массив есть адрес нулевого элемента массива. После
присваивания

Может наконецто дойдет

Ответить | Правка | Наверх | Cообщить модератору

278. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 20:14 
А что у нас может хранить адрес? Напомни будь добр
Ответить | Правка | Наверх | Cообщить модератору

353. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 24-Дек-19, 10:46 
А вы странный:)))
Теперь сравните это с тем бредом, что вы написали выше:
>>>Риччи сам пишет шо массив есть альтернативная форма записи указателей<<<

Если вы не в состоянии увидеть разницу - то увы, я тут ничего не могу поделать:(

Ответить | Правка | Наверх | Cообщить модератору

380. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 18:55 
Васян ты питоном упоролся или в терминологии полный ноль?
Ответить | Правка | К родителю #353 | Наверх | Cообщить модератору

250. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 18:47 
Объект в Си? Ну разве что файл как единица трансляции, больше никаких объектов в нем нет
Ответить | Правка | К родителю #239 | Наверх | Cообщить модератору

272. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 23-Дек-19, 19:54 
object is a region of data storage in the execution environment.
Ответить | Правка | Наверх | Cообщить модератору

277. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 20:12 
В таком понимании в Си объектов нет
Ответить | Правка | Наверх | Cообщить модератору

279. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 23-Дек-19, 20:21 
Идите и читайте стандарт языка си, хотя об этом также сказано и в K&R
Ответить | Правка | Наверх | Cообщить модератору

284. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 20:38 
Приведи главу, а не разглогольствуй
Ответить | Правка | К родителю #279 | Наверх | Cообщить модератору

354. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 24-Дек-19, 10:59 
В книге есть такая вещь, которая называется Index.
Пожалуйста, сделайте самому себе одолжение и научитесь им пользоваться - уверяю вас, это очень полезно.
Ответить | Правка | К родителю #284 | Наверх | Cообщить модератору

381. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 18:56 
Че сам не научишься и требуешь пруф?
Ответить | Правка | К родителю #354 | Наверх | Cообщить модератору

383. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 19:00 
Пруф за пруф
Ответить | Правка | К родителю #354 | Наверх | Cообщить модератору

423. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 25-Дек-19, 04:13 
> Пруф за пруф

Хех, а я помню этот момент, так что намекну, где искать, и где товарищ лукавит.

Такое определение объекта и правда было дано в стандарте/драфте ISO/IEC емнип 2005го что ли года. Тогда пошла серия шуточек из разряда "смотрите, в С тоже есть объекты". Но они в общем-то были тухлыми, поскольку все понимали перегруженность термина object, и воспринимать его буквально было уделом людей в общем-то недалёких.

Что собственно понятно, потому что у K&R понятие объекта тоже было. Но не в таком виде. У них было что-то вроде "именованной области памяти". Вот собственно тут и есть лукавство, ибо товарищ заявляет, что "это ещё у K&R было". И скорее всего именно по этой причине он никогда не предоставит пруф.

Но в общем и целом, тут всё равно надо понимать, что слово object -- оно буквально должно пониматься как объект, вещь, сущность, штука. Так что да, когда человек говорит об "объекте в языке Си", в котором обычно этот термин в повседневной работе с ним не употребляется от слова совсем, тыкая собеседника в его якобы "некомпетентность", а сам аппелирует при этом к стандарту ISO -- то надо этого буквоеда ссаными тряпками хлестать, пока у него катарсис не случится.

Ответить | Правка | К родителю #383 | Наверх | Cообщить модератору

442. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 25-Дек-19, 08:21 
>>>Такое определение объекта и правда было дано в стандарте/драфте ISO/IEC емнип 2005го что ли года. <<<

Определение понятия объект, именно в таком виде, дано ещё в самом первом стандарта языка С языка (ISOC90).
Так что не нужно писать, того в чём вы не разбираетесь!
Запомните, если в какой-либо книге сказано одно, а в стандарте говорится другое - то любой профессионал вам скажет, что нужно верить тому, что написано в стандарте, а не в книге!

Так что, можете все ваши пожелания в мой адрес, успешно адресовать самому себе и балбесам вроде вас!

Ответить | Правка | К родителю #423 | Наверх | Cообщить модератору

444. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 25-Дек-19, 09:00 
> Так что не нужно писать, того в чём вы не разбираетесь!
> Так что, можете все ваши пожелания в мой адрес, успешно адресовать самому себе и балбесам вроде вас!

О, какие мы горячие. Надо же.

> Определение понятия объект, именно в таком виде, дано ещё в самом первом стандарта языка С языка (ISOC90).

Я конечно мог попутать год стандарта, поскольку эти писульки в основном предназначены для разработчиков компиляторов сей, и посему в чтение оных я никогда особо не вдавался. Но я не мог попутать определения, данного K&R. И я готов предоставить пруф хоть сейчас, поскольку уж что-что, а исходный вариант K&R мы найдём весьма легко, в отличие от драфта C90.

Вот K&R, пожалуйста, найди там данное тобой определение: http://www2.cs.uregina.ca/~hilder/cs833/Other Reference Materials/The C Programming Language.pdf
Ты не сможешь этого сделать. А вот я своё -- легко найду. Потому что я-то не балабол, и за слова пруфлинком отвечу.

> Запомните, если в какой-либо книге сказано одно, а в стандарте говорится другое - то любой профессионал вам скажет, что нужно верить тому, что написано в стандарте, а не в книге!

Ага, вот то-то ребята в институте Макса Планка который год уже сидят и находят противоречия в стандарте, да никак вылизать до конца его не могут. То-то у нас такая тьма неопределённого поведения.

Я вот что тебе скажу по этому поводу: вы, буквоеды драфтовые -- не специалисты ни разу; любой хакер знает, что верить надо исходнику либо тесту. Потому что реализация всегда впереди стандарта.

Мог бы молча проглотить и убраться подальше. А теперь обтекай, ламер.

Ответить | Правка | К родителю #442 | Наверх | Cообщить модератору

448. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 25-Дек-19, 09:20 
>>>эти писульки в основном предназначены для разработчиков компиляторов сей, и посему в чтение оных я никогда особо не вдавался.<<<

Тогда нам не о чем дальше разговаривать!

P\S: Продолжайте и дальше ссылаться на K&R словно это библия какая-то - я не против:)))

Ответить | Правка | К родителю #444 | Наверх | Cообщить модератору

449. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 25-Дек-19, 09:21 
> Тогда нам не о чем дальше разговаривать!

Вот и молодец. Правильное, разумное решение.

Ответить | Правка | К родителю #448 | Наверх | Cообщить модератору

450. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 25-Дек-19, 09:42 
>>>поскольку уж что-что, а исходный вариант K&R мы найдём весьма легко, в отличие от драфта C90.<<<

Ну и совсем напоследок: вот держи для саморазвития, любитель пруфа:))
http://read.pudn.com/downloads133/doc/565041/ANSI_ISO%2...

Ответить | Правка | К родителю #449 | Наверх | Cообщить модератору

452. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 25-Дек-19, 09:49 
>>>>поскольку уж что-что, а исходный вариант K&R мы найдём весьма легко, в отличие от драфта C90.<<<
> Ну и совсем напоследок: вот держи для саморазвития, любитель пруфа:))
> http://read.pudn.com/downloads133/doc/565041/ANSI_ISO%2...

Клёво, спасибо! Извинения приняты, Иван.

Ответить | Правка | К родителю #450 | Наверх | Cообщить модератору

463. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 26-Дек-19, 00:41 
Если есть понятие объекта как ты утверждаешь, должен быть и класс? Где классы?
Ответить | Правка | К родителю #442 | Наверх | Cообщить модератору

281. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 23-Дек-19, 20:25 
Вы ведь должны понимать, что одно и тоже понятие, необязатально везде и всегда, будет обозначать тоже самое!
Ответить | Правка | Наверх | Cообщить модератору

285. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 20:40 
Можешь в конкретику? образы это удел питона
Ответить | Правка | К родителю #281 | Наверх | Cообщить модератору

208. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 23-Дек-19, 17:01 
И главное, приоткрой занавес тайны почему индекс первого элемента массива равен нулю? поржу хоть
Ответить | Правка | К родителю #203 | Наверх | Cообщить модератору

320. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (320), 23-Дек-19, 23:32 
Ловите паскалиста реликтового !
Ответить | Правка | Наверх | Cообщить модератору

341. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonymqwe (?), 24-Дек-19, 06:43 
Pascal как язык программирования, более продуман по сравнению с С. Он не стал столь массовым только из-за хайпа UNIX.
Ответить | Правка | Наверх | Cообщить модератору

327. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним84701 (ok), 24-Дек-19, 01:04 
> И главное, приоткрой занавес тайны почему индекс первого элемента массива равен нулю?
> поржу хоть

---
> A postfix expression followed by an expression in square brackets [] is a subscripted
> designation of an element of an array object. The definition of the subscript operator []
> is that E1[E2] is identical to (*((E1)+(E2))).

Оно?

Ответить | Правка | К родителю #208 | Наверх | Cообщить модератору

382. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 18:59 
Ну да индекс это смещение указателя относительно начала участка памяти
Ответить | Правка | Наверх | Cообщить модератору

401. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним84701 (ok), 24-Дек-19, 20:07 
> Ну да индекс это смещение указателя относительно начала участка памяти

Ну дык - из этого определения следуют очень интересные "возможности", которые (имхо) намного нагляднее примера  "*foo vs. foo[0]" демонстрируют "синтактический сахаризм" (или скорее -- наследие ограничений древних компиляторов):


#include <stdio.h>                                                                      
int main(void) {
    int bar[6];
    4[bar] = 10;
    char* foo[2] = {"hello","hello"};                                                    
    1[foo] = "world";                                                                    
                                                                                        
     int y = 2334;                                                                        
     int *x = &y;                                                                        
     0[x] = 1337;    
                                                                    
     puts(*foo);                                                                          
     puts(1[foo]);                                                                        
     printf("%d\n",0[x]);                  
     return 0;                                                                            
}

% gcc -Wall -Wextra hw.c && ./a.out
hello
world
1337 10


;)
Ответить | Правка | Наверх | Cообщить модератору

215. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 17:25 
Ладно спойлер, а то эксперт загрузился, ноль в качестве индекса на первый элемент обозначает нулевое смещение с начала участка памяти на которую он указывает, компилятор просто преобразовывает vasyan[0] как *vasyan, так работает адресная арифметика
Ответить | Правка | К родителю #203 | Наверх | Cообщить модератору

216. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 17:28 
Массив это просто синтаксический сахар над указателями, с некоторыми фичами, но это больше про многомерные массивы, такими как выделение памяти под индекс с указателями, к которым хрен доберешься из языка, такая условность
Ответить | Правка | К родителю #203 | Наверх | Cообщить модератору

328. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от anon2 (?), 24-Дек-19, 01:58 
> Чего стоит альтернативный синтаксис указателя vasyan[0] вместо *vasyan, итого массив как
> бы тупо указатель, но передается в другой указатель как не указатель,
> можно невозбранно херачить *vasyan=vasyan[0], при том что правильно было бы **vasyan=vasyan[0]

Вы не понимаете основ.

Все просто: любой указатель указывает на массив. Но в большинстве случаев это массив из одного элемента.
Поэтому для доступа к первому элементу массива придумали специальный синтаксис со звёздочкой.
А ещё указатель можно сдвинуть, поэтому *(arr+x) эквивалентен arr[x].
Поэтому и индекс первого элемента 0.

Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

345. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 24-Дек-19, 08:25 
Ну вот ещё один:(((
Причина всех этих, казалось бы на первый взгляд странностей в том, что в языке Си, по банальной причине неэффективности, отсутствует возможность работать с массивом целиком!
Ответить | Правка | Наверх | Cообщить модератору

357. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Урри (?), 24-Дек-19, 13:28 
Что значит отсутствует? Тут их целых две сразу.
Ответить | Правка | Наверх | Cообщить модератору

363. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 24-Дек-19, 13:41 
Давайте, удивите меня очередной порцией бреда:)
Прошу в студию ваши две возможности!
Ответить | Правка | Наверх | Cообщить модератору

366. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 24-Дек-19, 13:52 
Вы не можете работать с массивом целиком, означает: что вы не можете скопировать массив просто написав a1 = a2. Следовательно, также Вы не можете передать массив целиком в функцию в качестве аргумента; вы также не можете вернуть массив целиком из функции, просто потому что это неэффективно каждый раз копировать массив целиком!
Ответить | Правка | К родителю #357 | Наверх | Cообщить модератору

399. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 20:03 
А ты не думал почему так? Может быть потому что имя массива это указатель который передается? А?
Ответить | Правка | Наверх | Cообщить модератору

443. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Anonim (??), 25-Дек-19, 08:30 
Чувак, без обид, но ты просто безнадёжен:))
Ответить | Правка | Наверх | Cообщить модератору

369. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Anonim (??), 24-Дек-19, 14:02 
Однако, Например в том же языке Rust такая возможность есть, хотя опять же вы должны понимать что это неэффективно.
Ответить | Правка | К родителю #357 | Наверх | Cообщить модератору

400. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 20:05 
Там много чего ненужного есть и шо? Копировать массивы в функцию/метод считай создавать новый массив, память жрет, софтина тормозит
Ответить | Правка | Наверх | Cообщить модератору

386. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 19:15 
ЩИТО?
Ответить | Правка | К родителю #345 | Наверх | Cообщить модератору

384. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 19:11 
Массив это как бы по определению участок последовательно размещеннных ячеек памяти, таким образом даже тип int, можно представить как массив из 4 байт и невозбранно записать туда четыре char

int i=0;
char *s=(char*)&i;
*s='a',*(s+1)='n',*(s+2)='a',*(s+3)='l';
for(int i=0;i<4;i++){
    cout << *(s+i);
}

Таким образом мы получили массив char из 4 элементов, а вообще массив это просто сырая память которая и не в курсе шо она int, char и тд

Ответить | Правка | К родителю #328 | Наверх | Cообщить модератору

385. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 19:13 
Ну да, я про это и говорил нулевое смещение относительно начала, только мне ли ты ответил?
Ответить | Правка | К родителю #328 | Наверх | Cообщить модератору

370. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 24-Дек-19, 14:04 
> Чего стоит альтернативный синтаксис указателя vasyan[0] вместо *vasyan, итого массив как
> бы тупо указатель, но передается в другой указатель как не указатель,
> можно невозбранно херачить *vasyan=vasyan[0], при том что правильно было бы **vasyan=vasyan[0]
> и такого сладкого хлеба в Си и следовательно в плюсах хватит
> каждому братишке

Ну это... Вы по-видимому не понимаете основ сишного синтаксиса. Когда объявляется массив vasyan -- этот символ как раз указатель, раскрывается при использовании как раз в адрес. *vasyan -- это как раз взятие первого элемента по адресу vasyan. vasyan[i] -- это эквивалент *(vasyan+i). Следовательно vasyan[0] -- это и есть *vasyan. А вот **vasyan -- это уже *(*vasyan). То есть сначала надо взять первый элемент по адресу vasyan, трактовать его как адрес и взять уже значение по этому адресу. И это, как видите, ни разу не vasyan[0], который в сущности есть *vasyan.

И таки да, поскольку такие вещи, как оказалось, молодому программисту для понимания слишком сложны -- как раз и создаются новые языки типа Rust или Go. Вам дай в руки чистый C, так вы ж с ним наворотите невесть чего. Поэтому новые языки -- как раз для вас и писаны. Изучайте. =)

Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

387. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 24-Дек-19, 19:18 
Смеешься чтоли? Я же написал что синтаксис массива сахар над указателями
Ответить | Правка | Наверх | Cообщить модератору

403. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 24-Дек-19, 22:31 
> Смеешься чтоли? Я же написал что синтаксис массива сахар над указателями

Разумеется сахар. И что? Ведь ты также написал, что

> правильно было бы **vasyan=vasyan[0]

А это прямо говорит о непонимании арифметики указателей. С чего вдруг "правильно было бы"? Правила раскрытия этих конструкций не позволяют такой трактовки -- и точка.

Ответить | Правка | Наверх | Cообщить модератору

413. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 25-Дек-19, 02:15 
Уверен? А спорим, что данное утверждение имеет правду только в случае многомерного массива, когда создается индекс с указателями на участок памяти, я об этом писал, если ты не видишь смотри лучше,  случае одномерного массива используется обычный указатель *vasyan, в двумерном **vasyan, потому что он содержит адрес первого указателя индекса, который в свою очередь ссылается на участок памяти
Ответить | Правка | Наверх | Cообщить модератору

419. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от freehckemail (ok), 25-Дек-19, 03:19 
> Уверен? А спорим, что данное утверждение имеет правду только в случае многомерного
> массива, когда создается индекс с указателями на участок памяти, я об
> этом писал, если ты не видишь смотри лучше,  случае одномерного
> массива используется обычный указатель *vasyan, в двумерном **vasyan, потому что он
> содержит адрес первого указателя индекса, который в свою очередь ссылается на
> участок памяти

Чувак, да в одном твоём сообщении больше символов, нежели нужно для банальной проверки твоего утверждения. Почему тебе не лень написать сообщение, но лень написать меньшее количество символов для его проверки? Хочешь я напишу? Это займёт от силы минуту. =/

Ответить | Правка | Наверх | Cообщить модератору

424. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от j3t (?), 25-Дек-19, 04:16 
В студию!
Ответить | Правка | Наверх | Cообщить модератору

425. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от freehckemail (ok), 25-Дек-19, 04:32 
> В студию!

И кто меня за язык тянул... Всегда ведь, всегда найдётся кто-нибудь, кто поймает на слове... И слово придётся держать... =/


freehck@home:~$ cat test.c
#include <stdio.h>
typedef unsigned long ul;
int main(void) {
  ul arr[2][2] = {{1,2},{3,4}};
  printf("%lu %lu %lu %lu %lu\n", (ul)arr, (ul)*arr, (ul)arr[0], **arr, arr[0][0]);
  return 0;
}
freehck@home:~$ gcc -Wall -Wextra test.c
freehck@home:~$ ./a.out
140732652187392 140732652187392 140732652187392 1 1

Ответить | Правка | Наверх | Cообщить модератору

459. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от anon2 (?), 25-Дек-19, 22:44 
> Уверен? А спорим, что данное утверждение имеет правду только в случае многомерного
> массива, когда создается индекс с указателями на участок памяти, я об
> этом писал, если ты не видишь смотри лучше,  случае одномерного
> массива используется обычный указатель *vasyan, в двумерном **vasyan, потому что он
> содержит адрес первого указателя индекса, который в свою очередь ссылается на
> участок памяти

Позвольте вмешаться :)
О каком "индексе с указателями" идёт речь?
В объявлении int arr[N][M]; нет никаких указателей.
Объявляется массив из N массивов (а не N указателей на массивы).
И занимает он память в N*M интов.

А вот как определяется массив из указателей:
    int x[2] = {1,2};
    int y[2] = {3,4};
    int (*a[2])[2] = {&x,&y}; // можно и {x,y}, но будут предупреждения компилятора
    int *b[2] = {x,y};        // можно и {&x,&y}, но будут предупреждения компилятора

ну и доступ к элементам
a[0][0][0] // 1
или
***a // 1   ведь * - это "сахар" над [0] :)))

b[0][0] // 1
или
**b // 1

Ответить | Правка | К родителю #413 | Наверх | Cообщить модератору

407. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от anon2 (?), 24-Дек-19, 23:24 
> Смеешься чтоли? Я же написал что синтаксис массива сахар над указателями

Нее, "синтаксис массива сахар над указателями" - это ошибочное утверждение, в корне неверное и искажающее всю суть языка С :)

Всё с точностью наоборот :)
Как я сказал, указатель - это массив (например из одного элемента).
Обратное утверждение, что массив - это указатель, не имеет смысла.

Массив первичен, а указатель - лишь средство передачи ссылки на массив (технически, адреса массива, который совпадает с адресом первого элемента массива).

Т.е. '*' - это "сахар" для массива, для взятия первого элемента, чтобы писать не arr[0], а *arr.

А потом ещё определили и арифметику над указателями (ещё один "сахар"):
- прибавление N к указателю даст ссылку на под-массив, начинающийся с N-ого элемента от начала исходного массива.

А ведь в некоторых языках, например в Pascal, арифметика над указателями не определена.

Кстати, начните с изучения Pascal, а уже потом беритесь за более сложные вещи, такие как C.

Ответить | Правка | К родителю #387 | Наверх | Cообщить модератору

416. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 25-Дек-19, 02:24 
Массив это не более чем сырая память, можно массив int mas[10], внезапно сделать типа char, просто обращаясь к нему как char* x=(char*)mas, и получим массив из 40 символов

Насчет обратных утверждений массив это вполне себе память, переменная тоже память, попробуем найти разницу между массивом и переменной, возьмем int x=0 и обратимся к ней как char* s=(char*)&x и внезапно переменная становится массивом

Синтаксический сахар это обращения к значению как имя[index]

Ответить | Правка | Наверх | Cообщить модератору

458. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от anon2 (?), 25-Дек-19, 21:28 
>> Массив это не более чем сырая память, можно массив int mas[10], внезапно сделать типа char, просто обращаясь к нему как char* x=(char*)mas, и получим массив из 40 символов

С точки зрения компилятора массив это не просто сырая память, а набор элементов определённого типа. И кастинг "char* x=(char*)mas" нарушает strict aliasing rules и как следствие может приводить к UB (но для char * вроде пока? есть исключение из правил). Но не суть.

>> Насчет обратных утверждений массив это вполне себе память, переменная тоже память, попробуем найти разницу между массивом и переменной, возьмем int x=0 и обратимся к ней как char* s=(char*)&x и внезапно переменная становится массивом

Ага. Оператор & создаёт ссылку на массив. Хотя опять нарушение strict aliasing из-за кастинга к char*. Только не обращайтесь к переменной x через указатель s - получите UB.

>> Синтаксический сахар это обращения к значению как имя[index]

Не-а.
Это _базовая_ операция обращения к элементу массива - даже в Java такая есть.
А "сахар" - это *ptr (эквивалент ptr[0]) или ptr-> (эквивалент ptr[0].) - этого в Java нет.
И арифметика указателей тоже "сахар" - и этого ни в Pascal ни в Java нет.
Поинтер в C - это алиас массива.

И это особенность C по сравнению, скажем с Java, где всё кроме примитивных типов - объект, а ссылка на объект вроде как и поинтер (может быть null), но с этим поинтером нельзя работать как с массивом.


А еще только C++-сники, в массе своей не знающие C, пишут * возле типа, что не правильно :)
Пример:
    int x;
    int(*a) = &x;   // - объявление поинтера,
    (int*)b = &x;   // - не компилируется :) Ибо (int*) b не есть l-value.
    (int*)(a = &x); // - наверно так? Но это не объявление поинтера.
    *(int*)a = x;   // - а можно ещё так. Но это тоже не объявление поинтера.
    (int*)(c) = &x; // - и так тоже не компилируется.

Ответить | Правка | Наверх | Cообщить модератору

460. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 25-Дек-19, 23:46 
Ничего такой кастинг не нарушается, значит когда память аллоцируешь и приводишь ее к нужному тебе типу с помощью указателя так это видите ли нормально, а когда массив плохо? Для указателя абсолютно фиолетово с каким типом работать, привет void*, насчет расставления звездочек оно имеет значение в константных указателях, ну и в указателях на указатель указателем погоняющим, в простых без разницы

Вся соль в том, что из таких багофич C/C++ состоит чуть менее чем полностью

Ответить | Правка | Наверх | Cообщить модератору

477. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от anon2 (?), 26-Дек-19, 17:01 
> Ничего такой кастинг не нарушается, значит когда память аллоцируешь и приводишь ее
> к нужному тебе типу с помощью указателя так это видите ли
> нормально, а когда массив плохо?

Когда память аллоцируешь, у malloc есть специальный атрибут __attribute__((malloc)), который подсказывает компилятору, что возвращаемую память можно кастить к любому типу и проблем со strict aliasing не будет.

Массив или другой объект это не важно. Важен тип объекта.

> Для указателя абсолютно фиолетово с каким
> типом работать,

Ага, только вдруг с новым компилятором ломатся код, работающий годами.
А читать про strict aliasing вам лень.
Ну вот хотя бы 3-я ссылка в гугле: https://habr.com/ru/post/114117/

> привет void*,

А для void*, как и для char* сделали исключение :)


Интересный пример про string aliasing (из https://stackoverflow.com/questions/2958633/gcc-strict-alias...):

unsigned long a;
a = 5;
*(unsigned short *)&a = 4;

- компилятор может выкинуть последнее присвоение, т.к. ему понятно, что указатель unsigned short * ну никак не может указывать на переменную a, ведь её тип - unsigned long.


> насчет расставления звездочек оно имеет значение в
> константных указателях, ну и в указателях на указатель указателем погоняющим, в
> простых без разницы

ну это про стилистику, как отличить программиста на C от программиста на C++ :)

> Вся соль в том, что из таких багофич C/C++ состоит чуть менее
> чем полностью

Полностью согласен.

Ответить | Правка | Наверх | Cообщить модератору

492. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 26-Дек-19, 19:55 
Через void* любой тип можно кастовать в любой тип вполне легально, так как void* не проверят тип на который ссылается

Насчет С и С++, я искреннее рад шо си в крестах из года в год все меньше

Ответить | Правка | К родителю #477 | Наверх | Cообщить модератору

124. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (21), 23-Дек-19, 14:52 
https://www.reddit.com/r/rust/comments/dzyceo/what_advantage.../
вот весьма политкорректная подборка, советую почитать
Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

218. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 23-Дек-19, 17:30 
Посмотрел главные доводы, он просто лучше... Серьезно? Вот так просто, капец, он безопаснее, он эффективнее, где когда применялся, откуда инфа, чисто теоретически Haskell лучше C++, но это же не так
Ответить | Правка | Наверх | Cообщить модератору

375. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (21), 24-Дек-19, 18:14 
На реддите люди достаточно компетентные пишут. В т.ч. авторы самого языка rust, а также популярных crate-ов. Им можно верить, хотя бы на столько чтобы попробовать самому)
Ответить | Правка | Наверх | Cообщить модератору

418. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 25-Дек-19, 02:35 
Авторы самого языка ясен пень будут петь песни какой он огого, ну и фанатики как и всего нового тоже есть
Ответить | Правка | Наверх | Cообщить модератору

73. "Выпуск языка программирования Rust 1.40"  +2 +/
Сообщение от Урри (?), 23-Дек-19, 14:07 
Я очень хорошо знаю С++, давно работаю со сложными проектами - вообще не понимаю зачем Раст нужен.

Вся эта мифическая боль отлично решается в С++ всевозможными библиотеками. А если что-то еще не решено (хотя так не бывает, ибо все уже давно написано на С++), то всегда можно взять и самому решить.

Кроме того, С/С++ более лаконичен и красив; как на больших кусках кода, так и на маленьких. Не верьте мне - сходите на https://www.rosettacode.org/wiki/Category:Rust и сравните решение типичных задач на расте и других языках программирования. Заодно если там наговнокожено - напишите свой, красивый вариант, а мир оценит.

Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

80. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 14:13 
Как зачем? Ради еще одного не нужного языка, каждый год какой то убийца чего то появляется, вон даже на жабу покушались камень скала котлин какой то диалект лиспа, плюсы не исключение
Ответить | Правка | Наверх | Cообщить модератору

169. "Выпуск языка программирования Rust 1.40"  –2 +/
Сообщение от fust (?), 23-Дек-19, 15:38 
человеческий мозг устроен так что он ищет и жажде постоянно чего то новое
если завтра появится какой то язык фейспалм, продвигаемый какой то не бедной компанией
появится много одептов его и считающие что это решение всех проблем

если посмотреть на одептов раста
это в большинстве случаев молодые люди студенты или недавние выпускники вузов

Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

197. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 16:22 
Их то и жаль
Ответить | Правка | Наверх | Cообщить модератору

221. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от red75prim (?), 23-Дек-19, 17:42 
Решите диагностику использования инвалидированных итераторов в compile time.
Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

51. "Выпуск языка программирования Rust 1.40"  +6 +/
Сообщение от Аноним (51), 23-Дек-19, 13:42 
Во-первых, Rust - это не то чтобы улучшенный C++ (частично, конечно, это так). Скорее это прагматичный Haskell и Rust имеет более консистентный дизайн, чем плюсы. Язык избавлен от легаси и имеет довольно целостную экосистему, достаточно элегантно решая при этом множество проблем других языков.

Во-вторых, все плохие практики разработки на низкоуровневом языке в Rust отключены по умолчанию (мутабельность, прямое управление памятью и т.д.). Благодаря этому ты не можешь накосячить случайно, а там, где ты хочешь сделать что-то стремное, ты должен явно об этом сказать компилятору - дальше, если что-то пойдет не так, ты сам себе злобный Буратино. Более того, оказалось, что 99% процентов кода можно легко написать на безопасном подмножестве Rust, так еще и дизайн кода выйдет лучше просто за счет соблюдения ограничений safe-подмножества Rust. Кроме того, соблюдая ограничения, нацеленные на обеспечение безопасности работы с памятью, ты еще и бесплатно получаешь потокобезопасность, которую, насколько я знаю, другие существующие языки предоставить не могут.

В-третьих, система типов Rust предоставляет достаточно информации компилятору, чтобы потенциально обогнать C++, а возможно и C.

Благодаря этим качествам в низкоуровневое программирования становится гораздо легче вкатиться новичкам (предполагаю, что это главная и тщательно скрываемая причина хейта к Rust - он подрывает элитарный флёр C/C++ разработчиков, ведь теперь даже любой JS-дев может при достаточных усилиях написать эффективный безопасный низкоуровневый код и не страдать).

Синтаксис не слишком чистый, с этим спорить не стану. Но это не то чтобы самое главное в языке. Мне плюсовый синтаксис подавно не нравится, уж лучше чистый C, чем плюсы.

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

55. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 13:50 
Сам себе противоречишь вначале синтаксис конфетка, в последнем абзаце констатация унылости
Ответить | Правка | Наверх | Cообщить модератору

69. "Выпуск языка программирования Rust 1.40"  +2 +/
Сообщение от Аноним (51), 23-Дек-19, 14:05 
Я скорее говорил о системе типов, чем о синтаксисе, когда перечислял достоинства. Не путайте одно с другим.
Ответить | Правка | Наверх | Cообщить модератору

84. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 23-Дек-19, 14:18 
Классный дизайн и отсутсвие легаси это не про синтаксис? Почему тогда если можно было создать офигенный ЯП без легаси создали гомункула от которого кровь стынет в жилах?
Ответить | Правка | Наверх | Cообщить модератору

110. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Аноним (51), 23-Дек-19, 14:44 
Вкусовщина, конечно, но про "кровь стынет в жилах" никак не соглашусь. Я лишь сказал, что синтаксис не слишком чистый. Тем не менее, он и не ужасный. Наоборот, есть много приятных деталей. Та же философия everything is expression зачастую позволяет решать некоторые задачи более элегантно.

Меня лично смущает лишь обилие спецсимволов ('!?$), но к этому привыкаешь, потому что они играют важную роль. Ну и зря они притянули как есть синтаксис дженериков с угловыми скобками - без type алиасов сложные выражения с дженериками читать сложно.

Ответить | Правка | Наверх | Cообщить модератору

119. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Аноним (5), 23-Дек-19, 14:49 
Отсутствие нормального ООП не смущает?

Кровь стынет в жилах на полном серьезе, он же совершенно не читаем

Ответить | Правка | Наверх | Cообщить модератору

127. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (51), 23-Дек-19, 14:57 
ООП в расте реализовано в полной мере, кроме наследования типов. Разделение поведения производится посредством типажей (трейтов), которые можно имплементировать для разных типов или даже сделать generic blanket имплементацию для множества типов, удовлетворяющих определенным условиям. Наследования же нет совершенно намеренно. Причина - наследование многими считается антипаттерном, в том числе создателем Java:

https://www.javaworld.com/article/2073649/why-extends-is-evi...

> If you could do Java over again, what would you change?
> I'd leave out classes
> Кровь стынет в жилах на полном серьезе, он же совершенно не читаем

Ну, тогда язык не для вас. У меня ничего не стынет и все читаю. Зачем желчь попусту пускать?

Ответить | Правка | Наверх | Cообщить модератору

145. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 15:16 
Как код повторно используете?
Ответить | Правка | Наверх | Cообщить модератору

153. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Andrey Mitrofanov_N0 (??), 23-Дек-19, 15:26 
> Как код повторно используете?

Сказали ж т-те:  трейты в крейтах!  Ч-чо не понятоно-то?77

Ответить | Правка | Наверх | Cообщить модератору

166. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 15:32 
Я непонял, а полиформизм?
Ответить | Правка | Наверх | Cообщить модератору

180. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (51), 23-Дек-19, 15:50 
Полиморфизм на уровне трейтов. Причем, благодаря опциональному динамическому диспатчингу можно, например, даже создать массив из объектов разных типов, но имплементирующих указанные трейты.
Ответить | Правка | Наверх | Cообщить модератору

191. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 16:13 
Класс мало было прототипов JavaScript которые таки перепилили в классы, теперь залупень в виде трейтов, боже мой куда мы катимся
Ответить | Правка | Наверх | Cообщить модератору

199. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Andrey Mitrofanov_N0 (??), 23-Дек-19, 16:36 
> Я непонял, а полиформизм?

Трейты в крейтах с поли-хери-тансом.
Прекрати уже, иди учиться коммунизму настоящим образом.

Ответить | Правка | К родителю #166 | Наверх | Cообщить модератору

464. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (464), 26-Дек-19, 02:05 
Кхм. Полиморфизм в ООП -- это только одна из разновидностей полиморфизма, полиморфизм подтипов.
Ответить | Правка | К родителю #166 | Наверх | Cообщить модератору

63. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Урри (?), 23-Дек-19, 13:57 
> ведь теперь даже любой JS-дев может при достаточных усилиях написать эффективный безопасный низкоуровневый код и не страдать

А-ХА-ХА-ХА-ХА-ХА-ХА-ХА-ХА!

Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

70. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Аноним (51), 23-Дек-19, 14:06 
Собственно, реакция, подтверждающая мои слова.
Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Урри (?), 23-Дек-19, 14:11 
Собственно, реакция, подтверждающая мой громкий хохот.

Эффект Даннинга-Крюгера во всей своей красе.

Ответить | Правка | Наверх | Cообщить модератору

81. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (51), 23-Дек-19, 14:14 
Как скажете.
Ответить | Правка | Наверх | Cообщить модератору

111. "Выпуск языка программирования Rust 1.40"  +2 +/
Сообщение от Урри (?), 23-Дек-19, 14:44 
Да, в данном случае именно как скажу - ибо чтобы писать "эффективный безопасный низкоуровневый код" надо уметь программировать и понимать, что ты делаешь; а не иметь "правильный" инструмент.

Это как чтобы делать "эффективную и безопасную операцию на селезенке" надо иметь хирургическую практику, знать что такое селезенка, как она функционирует, как функционирует весь организм, что можно и что нельзя с ней делать.

Вы же сейчас открытым текстом заявили, что любой дворник может делать операции на селезенке, если ему дать умный скальпель, который не позволяет делать некоторые ошибки (например, не позволяет взять себя не той стороной).

Ответить | Правка | Наверх | Cообщить модератору

135. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (51), 23-Дек-19, 15:03 
Во-первых, я сказал "при достаточном количестве усилий". Для этого JS-деву придется хотя бы понять разницу между стеком и кучей. Но по крайней мере, он сможет это сделать не потратив годы на развитие навыка уклонения от подводных камней C/C++. Тем не менее, я совершенно не имел в виду, что код такого дева будет также хорош и эффективен, как код настоящего системного программиста, получившего неоднократное посттравматическое расстройство после работы с C/C++.

> Вы же сейчас открытым текстом заявили, что любой дворник может делать операции на селезенке, если ему дать умный скальпель, который не позволяет делать некоторые ошибки (например, не позволяет взять себя не той стороной).

В общем-то да. Я надеюсь и верю в будущее, когда благодаря технологиям люди смогут сами себя лечить от серьезных болезней, не выкладывая огромные деньги медицинским картелям.

Ответить | Правка | Наверх | Cообщить модератору

158. "Выпуск языка программирования Rust 1.40"  +3 +/
Сообщение от Урри (?), 23-Дек-19, 15:28 
> Для этого JS-деву придется хотя бы понять разницу между стеком и кучей.

Для того, чтобы научиться программировать JS-деву надо не "хотя бы понять разницу", а учиться программировать. И точка.


> не выкладывая огромные деньги медицинским картелям.

Вкупе с JS выше это утверждение выглядит довольно органично. Это ничего, что хирурги овладевают профессией очень долго и очень сложно?

Ответить | Правка | Наверх | Cообщить модератору

186. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (51), 23-Дек-19, 16:07 
> Для того, чтобы научиться программировать JS-деву надо не "хотя бы понять разницу", а учиться программировать.

Не спорю, только считаю, что с Rust у него это получится проще.

> Вкупе с JS выше это утверждение выглядит довольно органично.

А ваши рассуждения отдают банальным консерватизмом: язык, который завещали деды, медицина, которую зевещали деды. И не важно, что деды тех самых дедов жили свосем иначе и завещали совсем другое.

Ответить | Правка | Наверх | Cообщить модератору

362. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Урри (?), 24-Дек-19, 13:41 
> Не спорю, только считаю, что с Rust у него это получится проще.

С питоном - проще. С С или Паскалем - тоже проще. С Растом - однозначно нет.

> А ваши рассуждения отдают банальным консерватизмом

Жаль, что у вас сложилось такое мнение. Я никакого повода этому не давал; более того, выше я кому-то писал что очень люблю C#, хотя писать на нем сейчас нечего.

Ответить | Правка | Наверх | Cообщить модератору

402. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Аноним (51), 24-Дек-19, 22:02 
> С питоном - проще. С С или Паскалем - тоже проще. С Растом - однозначно нет.

Мы ведь говорили об эффективном по потреблению вычислительных ресурсов надежном коде. С Python, при всех его достоинствах, такой код написать нельзя. Python защитит от UB, но динамическая типизация подарит вам океан других сложностей, не говоря уж о производительности и потреблении памяти. С прост, но вообще ни от чего не защитит, а навык написания дойстойного кода на C требует немалой практики.

Rust же имеет далеко не единственный механизм обеспечения надежности кода, помимо borrow checker. В Rust нет null (уже минус огромный класс фатальных и поразительно часто встречающихся ошибок). В Rust нет исключений, неявно нарушающих поток управления и не дающих разработчику понять, что вообще может произойти, когда он вызовает ту или иную функцию. Благодаря концепции владения, RAII в Rust позволяет достигать великолепных гарантий. Например, вы можете быть уверены, что открытый вами файл будет закрыт в любом случае, где бы не завершилось его время жизни, даже если поток запаниковал - при этом от вас не требуется ничего. И это на самом деле только вершина айсберга.

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

Люди обращаются к простым высокоуровневым языкам не потому, что не могут осились C/C++, а потому, что не желают страдать и учиться ходить по канату над озером из лавы, жонглируя бананами. Из-за этого в мире на сегодняшний день целая гора ужасно неэффективного кода, потребляющего чудовищные ресурсы ради тривиальных задач. С другой стороны, с каждым годом в системном софте накапилвается все больше и больше ошибок и уязвимостей в силу дефектов проектирования C/C++. Rust имеет все возможности, чтобы это изменить: в мире станет больше низкоуровневого кода, а сам он станет надежнее. А в ответ только насмешки и мелочные поиски любых надуманных недостатков.

Ответить | Правка | Наверх | Cообщить модератору

189. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (189), 23-Дек-19, 16:12 
Дак и говорится о том, что теперь ему придётся потратить напорядок меньше усилий на обучение.

мимо

Ответить | Правка | К родителю #158 | Наверх | Cообщить модератору

137. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Тита_М (?), 23-Дек-19, 15:06 
Но согласись, что если тот же хирург будет "вооружён" специальным режущим прибором, который хотя бы компенсирует тремор, то эффективность операций повысится.
Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

405. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Илья (??), 24-Дек-19, 23:01 
> Это как чтобы делать "эффективную и безопасную операцию на селезенке" надо иметь хирургическую практику, знать что такое селезенка, как она функционирует, как функционирует весь организм, что можно и что нельзя с ней делать.

Я слаб в бестолковых сравнениях, Я правильно понял, что вы имели в виду следующее:

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

?

Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

122. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 23-Дек-19, 14:52 
При всей высокоуровневости JavaScript, нужно признать что язык ацки упоротый в отличии от питона и руби, C++ от мира веба
Ответить | Правка | К родителю #63 | Наверх | Cообщить модератору

136. "Выпуск языка программирования Rust 1.40"  +1 +/
Сообщение от Урри (?), 23-Дек-19, 15:04 
Щас вас макаки захейтят. Это же единственный язык, который они знают, а значит объективно посмотреть на дизайн они в принципе не могут.

JavaScript действительно имеет худший дизайн из всего мейнстрима.

Ответить | Правка | Наверх | Cообщить модератору

170. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (5), 23-Дек-19, 15:40 
То шо они могут на JS вывести alert ниче не значит, там API умом тронешься и тебе мультимедиа, и звук, и 2d, и 3d, и DOM, и websocket, и webworker, и столько всего шо смело заявляю JS быдлокодоустойчивый язык
Ответить | Правка | Наверх | Cообщить модератору

66. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 23-Дек-19, 14:00 
Нравится синтаксис С но не нравится C++? Ну ты петросян, а ниче шо у них один синтаксис на двоих?
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

72. "Выпуск языка программирования Rust 1.40"  –1 +/
Сообщение от Аноним (51), 23-Дек-19, 14:07 
> уж лучше чистый C
> чистый

Вдумывайтесь, когда читаете, пожалуйста.

Ответить | Правка | Наверх | Cообщить модератору

86. "Выпуск языка программирования Rust 1.40"  +/
Сообщение от Аноним (5), 23-Дек-19, 14:19 
C99 грязный? или что тебя смущает?
Ответить | Правка | Наверх | Cообщить модератору

288. "Выпуск языка программирования Rust 1.40"  –2 +/
Сообщение от Ретроград (?), 23-Дек-19, 20:46 
На словах про консистентный дизайн подавился бутербродом. Не неси больше такой чуши, кто-нибудь и умереть может ненароком. На что уж C++ свалка, но ржа даже его переплюнула. На секундочку, плюсы стандартизируются комитетом профессионалов. У раста же нет вообще никакого ни стандарта, ни общего документа, ни-фи-га. Есть пачка противоречащих друг другу RFC, за которые хрен пойми кто когда-то проголосовал. В итоге мы имеем стабильный компилятор, в котором половина доступных фич доступны через фич-гейты, которых в стабильном компиляторе нет (хотя на самом деле они есть и используются, но как будто бы их там нет - само по себе ситуация идиотская и говорит об уровне "консистентного дизайна"). Да блин, язык системного программирования БЕЗ МОДЕЛИ ПАМЯТИ спустя десять лет (!!!) разработки - это очень, очень сильно.
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

317. "Выпуск языка программирования Rust 1.40"  +3 +/
Сообщение от Аноним (317), 23-Дек-19, 22:30 
> У раста же нет вообще никакого ни стандарта, ни общего документа, ни-фи-га

https://doc.rust-lang.org/reference/index.html

Язык C. Год рождения: 1972. Год появления первого официального стандарта: 1989. Год включения модели памяти в стандрат: 2011.

Язык C++. Год рождения: 1985. Год появления первого стандарта: 1998. Год включения модели памяти в стандрат: 2011.

Язык Rust. Год рождения (первая стабильная версия): 2015.

Основная причина, зачем С и C++ нужна была модель памяти состоит в том, что до ее появления многопточность в этих языках была попросту некорректной. В Rust даже без готовой модели памяти (над которой сейчас работают профессионалы с PhD) многопоточность находится на фундаментально ином уровне корректности, чем тот, какой когда-либо сможет позволить себе C или С++.

Над Rust работает не больше человек, чем работали над стандартами C/C++, так что ожидать появления полноценного стандарта намного раньше, чем оно было с C/C++ нечестно, особенно учитывая, что Rust куда более формальный язык, чем вольные C и плюсы.

Извините, но выпад довольно дешевый.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру