LINUX.ORG.RU
ФорумTalks

Я тупой, что делать?

 


2

2

Не могу осилить ничего сложнее bash и php, просто не понимаю ЗАЧЕМ!?

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

Почитал новость о том, что в Linux приходит Rust, подумал, ну вот время для изучения C упущено, но сейчас начинается новая эпоха с Rust в ядре, чем чёрт не шутит, может стоит попробовать, авось, для ядра какие-нибудь приколюхи тоже смогу писать? НЕТ НЕ СМОГУ ПОТОМУ ЧТО Я ТУПОЙ(((((

https://doc.rust-lang.ru/book/ch03-01-variables-and-mutability.html#Затенение...

Затенение (переменных)

Я не понимаю что это и зачем это нужно.

fn main() {
    let x = 5;

    let x = x + 1;

    {
        let x = x * 2;
        println!("The value of x in the inner scope is: {x}");
    }

    println!("The value of x is: {x}");
}

Почему нельзя из main вызвать функцию, которая сделает это самое x * 2 и напишет строчку, зачем было усложнять и придумывать какое-то { }.

fn main() {
    let x = 5;

    let x = x + 1;

    x_multiple(x);

    println!("The value of x is: {x}");
}

fn x_multiple(x: i32) {
      let x = x * 2;

      println!("The value of x in the inner scope is: {x}");
}

За достоверность синтаксиса не ручаюсь.

Я ещё могу как-то понять типы данных, ну там, один байтик 255 максимальное число, два байтика уже 255 * 255 = 65025 максимальное число, четыре байтика 255 * 255 * 255 * 255... Прикольно конечно, да, что 4 байтами можно кодировать большие числа, как это делают во всяких JPEG, PNG и т.д. бинарных форматах, что можно одним символом " " (пробел) описать число 32 т.к. это 32 символ в ASCII таблице.

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

Классы в PHP не осилил, Rust похоже тоже не осилю.

Ну и что теперь, обратно в дворники идти?

★★★★★

Последнее исправление: Spoofing (всего исправлений: 1)

Ответ на: комментарий от alex1101

бесит что я не понимаю почему не могу всего этого понять.

нейронных связей не хватает, в мозгах просто учить нечего.

это как кошку или собаку пытаться научить чем-нибудь, мозгов нет, там учить нечего.

вот так же и у меня.

господи за что(((

Spoofing ★★★★★
() автор топика

Я тупой, что делать?

начни с кубиков.

Почему нельзя из main вызвать функцию, которая сделает это самое x * 2 и напишет строчку, зачем было усложнять и придумывать какое-то { }.

так вон, можно же. ты же сам пример привел :|

но на самом деле, штука со скобочками выглядит удобно. тебе просто показали, что так можно делать, а как ты это будешь использовать - решать тебе.

usi_svobodi
()
Ответ на: комментарий от Spoofing

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

Проще говоря, когда человек пытается понять квантовую физику, используя модель классической с её шариками и определённостью - получается вот такое вот страдание) Или когда пытается осилить Раст, держась обеими лапками за другие ЯП.

alex1101
()
Последнее исправление: alex1101 (всего исправлений: 1)
Ответ на: комментарий от Spoofing

бесит что я не понимаю почему не могу всего этого понять.

Да ну, братан, фигня это. У каждого свои особенности и склад ума. Кто-то может, кто-то нет.

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

ИМХО, начни с паскаля. Основы довольно просты, как только вдуплишь, что это и как работает, можно идти дальше в раст. Но лучше через Си :)

Zhbert ★★★★★
()
Ответ на: комментарий от alex1101

Ну это не обязательно. Я вот с ассемблера начинал, нахрена мне там математика? Только компьютерная логика и понимание, как работает процессор.

Zhbert ★★★★★
()
Ответ на: комментарий от Spoofing

бесит что я не понимаю почему не могу всего этого понять

Чувак, «понять – значит привыкнуть и научиться использовать». Т.е. первый этап – привыкнуть, а там само пойдёт. Это как ездить на велосипеде.

зачем

В данном случае низачем, это просто пример как это работает.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от usi_svobodi

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

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

а для чего такие сложные «фишечки» внедряют в ЯПы — не понятно.

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

function testfn() {
  $x = 123;

  echo $x;
}

testfn(); // 123

echo $x; // ошибка

ну а почему бы не сделали так:

function testfn() {

  function testfn_inside() {
    $x = 123;

    echo 123;
  }

}

testfn_inside(); // ошибка, такой функции не существует

testfn::testfn_inside(); // 123

тоже же могли бы на PHP что-то эдакое учудить. но не пошли по этому пути.

а всякие Rust'ы идут. в итоге отпугивая новичков такими «изяществами».

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

Spoofing ★★★★★
() автор топика

Это нормально, Раст могут осилить не только лишь все.

А если серьезно, то ищи в этом позитив: тупым живется легче, меньше страдают разными псих. заболеваниями. Судя по всему, ты и так уже умней чем процентов 90 (95?) населения. Так что, все не так уж и плохо.

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

Если бы он был умнее 95% наcеления, у него и денег было бы больше 95% населения. Ум не меряется умением решать задачки, ум - это комплекс.

lenin386 ★★★★
()
Ответ на: комментарий от urxvt

тупым живется легче

Это не так. Тупые регулярно создают себе проблемы на ровном месте.

меньше страдают разными псих. заболеваниями

Да вроде тоже нет. Психзаболевания это физические поломки в мозге, они никак не зависят от ума.

alex1101
()

Почему нельзя из main вызвать функцию, которая сделает это самое x * 2 и напишет строчку, зачем было усложнять и придумывать какое-то { }.

Это синтетический пример, чтобы показать как работает затенение. Не нужно в нём искать глубокий смысл.

{ } - область видимости, в которой будет жить затенённая переменная. Там растом по белому написано, что внутри { } println! распечатывает затенённую переменную, а после } распечатывает оригинальную переменную, потому что область видимости затенённой переменной закончилось.

Классы в PHP не осилил, Rust похоже тоже не осилю.

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

ox55ff ★★★★★
()

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

Morin ★★★★
()

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

Во-первых, чтобы отдельные элементы были «подписаны» своими названиями. В базе данных же у каждой записи есть колонки, например, у сущности User есть поля first_name, last_name, date_of_birth, email, password_hash и так далее. Так же и тут, чтобы не вспоминать, что там у нас было под индексом 5, а что под индексом 7.

Во-вторых, для типизации. Видя, что у нас переменная user имеет тип User, и компилятор, и программист сразу понимают, какой набор полей будет у этой сущности. Причём нельзя будет по ошибке положить «юзера» в переменную типа Order даже если количество полей у них случайно будет совпадать.

static_lab ★★★★★
()
Ответ на: комментарий от Spoofing

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

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

а для чего такие сложные «фишечки» внедряют в ЯПы — не понятно.

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

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

usi_svobodi
()
Ответ на: комментарий от lenin386

Если бы он был умнее 95% наcеления, у него и денег было бы больше 95% населения. Ум не меряется умением решать задачки, ум - это комплекс.

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

urxvt ★★★★★
()
Ответ на: комментарий от alex1101

Это не так. Тупые регулярно создают себе проблемы на ровном месте.

Эти проблемы сущие мелочи, в сравнении с душевными терзаниями по-настоящему умных людей.

Да вроде тоже нет. Психзаболевания это физические поломки в мозге, они никак не зависят от ума.

Чем сложней механизм или система тем выше шанс поломки.

urxvt ★★★★★
()
Ответ на: комментарий от Spoofing

не понимаю почему не могу всего этого понять

Нет необходимости, когда станет «очень_нужно» – всё поймёшь.

для чего такие сложные «фишечки» внедряют в ЯПы — не понятно

Аналогия: давным-давно "человекиписалитекстыбезпробеловизаглавныхбукв, не ведая про точки с запятыми и прочими сложнопонимаемыми загогулинами. Но древние писцы осознали пользу синтаксиса, позволяющего выразительно и гибко записывать мысли.
Языки программирования повторяют этот путь, так что «если долго мучиться, что-нибудь получится» :)

quickquest ★★★★★
()
Ответ на: комментарий от urxvt

Эти проблемы сущие мелочи, в сравнении с душевными терзаниями по-настоящему умных людей.

По-настоящему умные люди не страдают душевными терзаниями 🙂 У них могут быть эпизодические сомнения, муки выбора и т.д. Но долгие душевные терзания это не от большого ума, а как раз наоборот.

Чем сложней механизм или система тем выше шанс поломки.

Это общие слова, которые непонятно как относятся к теме. Ум это не какой-то часовой механизм.

alex1101
()
Последнее исправление: alex1101 (всего исправлений: 1)

Расслабься. Во первых, программирование - не для всех. Во вторых, Rust - довольно сложный язык, гораздо сложнее C (а может быть даже и C++).

rupert ★★★★★
()

rust это такое подмножество haskell с синтаксическим сахаром, элементами доступа к железу, своим приколом по управлению памятью и современным тулингом. так что рекомендую сначала освоить haskell, что несложно, если делать это с нуля, а не пытаться натянуть свои представления о программировании на него. потом при переходе на rust просто переключиться на то, что всегда do-блок имплицирован и монады почти не используются (ну и продвинутых фич системы типов может не быть)

caryoscelus
()

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

это уже больше того что умеет 95% специалистов на рынке.

Советую попробовать golang - язык прост как топор и очень хорошо продуман, в отличие от того же rust. Модули ядра на нем конечно не попишешь, зато все остальное - прямо за милую душу.

Lrrr ★★★★★
()
Последнее исправление: Lrrr (всего исправлений: 1)
Ответ на: комментарий от static_lab

Причём нельзя будет по ошибке положить «юзера» в переменную типа Order

Так себе преимущество. Очень необычно себя ощущаешь, когда не можешь просто так распоряжаться вон тем куском памяти по своему усмотрению.

Правда на Rust даже не пытался писать. На Go что-то такое экспериментировал с чтением структур dbf. Примерно как в теннис играть со связанными руками, наверное. В целом можно конечно, и ракетка надежнее держится.

Toxo2 ★★★
()

Гм, да ты даже максимальное число неправильно в принципе вычисляешь. А что будет если ты про знаковые/беззнаковые узнаешь? А если про числа с плавающей или фиксированной запятой? Головушка треснет и посыпятся тараканы!

Если серьезно, то примеры в туторах не имеют обычно какой-то практической ценности, они призваны демонстрировать некие абстрактные идеи, которые дальше будут использованы для объяснения более сложных механизмов. Если ты не понимаешь идею области видимости, то как с тобой разговаривать о времени жизни объекта, управлении им и распределении ресурсов?

cobold ★★★★★
()

Я сейчас Rust изучаю, после десяти лет опыта с C, C++, Java, Python, Assembler…

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

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от caryoscelus

Rust настолько подмножество Haskell, что в его системе типов даже монады выразить нельзя. Не, ну я понимаю, что и там, и там есть ADT, и трейты похожи на классы типов (если прищуриться). А где остальные сходства?

theNamelessOne ★★★★★
()
Ответ на: комментарий от Toxo2

Очень необычно себя ощущаешь, когда не можешь просто так распоряжаться вон тем куском памяти по своему усмотрению.

А как часто ты пишешь код вроде

$user_id = 123;
...
$order = get_user($user_id);
recover_password($order);
static_lab ★★★★★
()

Все мои скрипты входят в серию «Библиотека программиота», некоторые даже в золотой фонд.

Irma ★★
()
Ответ на: комментарий от static_lab

Никогда ) А что это, если не секрет?

Ааааааа, наверное, понял. Это пример где хотели recover_password($user_id); , а нечаянно сделали recover_password($order);, так?

Ну тогда ничего же мешает сделать и recover_password($another_user_id); нечаянно.

Toxo2 ★★★
()
Ответ на: комментарий от theNamelessOne

https://varkor.github.io/blog/2019/03/28/idiomatic-monads-in-rust.html

А где остальные сходства?

а где отличительные черты помимо уже вышеперечисленных? ленивости по умолчанию нет, но в данном случае haskell как понятие нарицательное не обязательно её подразумевает

inb4: любой язык можно рассматривать как подмножество теории типов со странным синтаксисом

caryoscelus
()

Если хочешь стать программистом, то тебе для начала нужно изучить то, что учат по этой специальности в техникумах и ВУЗах, а не просто синтаксис модного язычка.

Загугли всякие курсы, там есть содержимое, по нему несложно загуглить и все остальное.

Матлогика, ЯП типа Pascal для основ ООП. Мне после Паскаля плюсы сразу же хорошо зашли из книжки Страуструпа, но в real life на плюсах мне кодить было как-то не очень, наверно потому что никогда не было соответствующих задач.

Современные языки программирования не очень сильно отличаются друг от дружки, т.е. зная определенный набор абстракций, ты как бы сразу обучаешься семантике многих ЯП, остается только подучить синтаксис каждого. На это даже намекают мульти франтендность современных тулчейнов, начиная от gcc и заканчивая RemObjects Elements, где один и тот же проект можно кодить на разных языках программирования и даже таргетировать его в разные рантаймы.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от alex1101

По-настоящему умные люди не страдают душевными терзаниями 🙂 У них могут быть эпизодические сомнения, муки выбора и т.д. Но долгие душевные терзания это не от большого ума, а как раз наоборот.

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

Это общие слова, которые непонятно как относятся к теме. Ум это не какой-то часовой механизм.

Так и соотносится, что законы мироздания везде одинаковые. Условно, материалистично: чем больше у тебя подшипников в часах, тем больше вероятность износа одного подшипника и заклинивание шестерни; чем больше в мозгу задействовано активных клеток, тем больше вероятность их повреждения.
Разве ты не ощущал, когда от длительного умственного напряжения начинает болеть голова? Очевидно, умственная работа (как и физическая) бесследно не проходит.

urxvt ★★★★★
()
Ответ на: комментарий от static_lab

Извините. Мы с вами похоже на разных волнах. Мне не надо присваивать «юзера» к переменной типа «заказ». Мне надо одним куском считать некоторое количество байтов и расставить указатели на внутренности так, как мне будет удобно. А не как компилятор считает допустимым.

Toxo2 ★★★
()
Ответ на: комментарий от urxvt

Разве ты не ощущал, когда от длительного умственного напряжения начинает болеть голова? Очевидно, умственная работа (как и физическая) бесследно не проходит.

IMHO главное хорошо выспаться и отдохнуть, тогда умственная деятельность сильно ускоряется и напряжение почти не ощущается даже на сложных задачах. Поэтому лучше не отказывать себе в сне, если внезапно захотелось вздремнуть, можно поспать 2 раза в сутки при желании.

Как в меме про кота: «Ну вот поспали, теперь можно и отдохнуть» :) Зато потом все идет само собой.

sanyo1234
()

Чтобы понять язык нужно не мануалы читать, а самому много писать и читать чужой код, параллельно заглядывая в мануалы.

Тогда постепенно будет понимание приходить.

mono ★★★★★
()
Ответ на: комментарий от urxvt

Это видно и на глаз, по обычно трагичной и сложной биографии великих людей

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

И сложности/трагедии жизни необязательно сопровождаются душевными терзаниями. Даже ужасные беды могут восприниматься спокойно. Тогда как не очень умные люди склонны раздувать катастрофу из откровенных мелочей.

законы мироздания везде одинаковые

Интересно, откуда ты мог узнать законы мироздания 😁 Людям эти законы недоступны напрямую, у людей есть только теории. Каждая из которых имеет свои границы применимости. И разные уровни друг к другу не сводятся. Только стыкуются краями.

Разве ты не ощущал, когда от длительного умственного напряжения начинает болеть голова?

Ощущал. Но если у тебя нет предрасположенности - никакая напряжённая работа тебе крышу не сорвёт. Ну, может, конечно, но это крайне маловероятно.

Куда выше вероятность поехать головой, если у тебя окружение поехавшее. Из-за чего, например, психиатры обязаны наблюдаться у других психиатров. Поэтому я предпочитаю не общаться с истеричками, фанатиками, шизами и прочими неадекватами. И не читать всякий тупак и прочий информационный мусор, даже «для смеха» (мозг-то не понимает, что это «для смеха», он есть то, чем ты его кормишь).

alex1101
()
Последнее исправление: alex1101 (всего исправлений: 5)

бесит что я не понимаю почему не могу всего этого понять.

Хм, попробуй SQL. Причём, какой-нибудь MS SQL, там синтаксис попроще, и нет затенения переменных.

Не, а вдруг, лучше зайдёт?

tiinn ★★★★★
()

Я тупой, что делать?

после 30 уже вряд ли что-то поможет.

voltmod ★★
()
Ответ на: комментарий от Spoofing

ну а почему бы не сделали так

Лол, ты учишь ЯП, или уже свой решил запилить?))

функция внутри функции

У тебя синдром утенка. Функция внутри функции не очень удобно.

в итоге отпугивая новичков такими «изяществами»

Да ладно, ничего в затенении сложного и пугающего нет)

goingUp ★★★★★
()
Ответ на: комментарий от Toxo2

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

Rust позволяет сделать это с помощью unsafe std::mem::transmute или преобразованием указателя с помощью as. А какую практическую задачу вы хотите этим решить?

static_lab ★★★★★
()
Последнее исправление: static_lab (всего исправлений: 1)

если я правильно понял твое негодование, то тебе не до конца понятен смысл shadowing. блоком {} обозначают область видимости для заданных переменных. в случае, если используется имя переменной внутри {}, при этом это же имя уже используется снаружи, то такой трюк называется shadowing. это значит, что внутри этого блока под этим именеме будет жить другая переменная со своим значением. однако нюанс в том, что до момента ее определения все еще используется под этим именем другая переменная, объявленная за пределами блока {}. поэтому в том примере let x = x*2 будет значить, что имя х будет задействовано для новой переменной, но в момент создания этой переменной ее значение будет вычисленно из значения, которое хранится в переменной х из внешнего блока.

этот пример максимально тупой, чтобы отобразить смысл shadowing, а не показать какую-то глубокую логику.

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

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 3)
Ответ на: комментарий от alex1101

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

Я же говорю, на глаз определил. Возможно, кто-то и статистику подвел.

И почему ты заменил умных на великих? Умный может остаться безвестным, великий может быть не очень умным.

Если не брать во внимание всяких спортсменов, то, мне кажется, это практически тотожные множества. Не могу вспомнить великого человека о котором бы отзывались как о глупом.

Ощущал. Но если у тебя нет предрасположенности - никакая напряжённая работа тебе крышу не сорвёт. Ну, может, конечно, но это крайне маловероятно.

Ага, а если нету предрасположенности, то спину не сорвешь и грыжи не будет.

Куда выше вероятность поехать головой, если у тебя окружение поехавшее. Из-за чего, например, психиатры обязаны наблюдаться у других психиатров. Поэтому я предпочитаю не общаться с истеричками, фанатиками, шизами и прочими неадекватами. И не читать всякий тупак и прочий информационный мусор, даже «для смеха» (мозг-то не понимает, что это «для смеха», он есть то, чем ты его кормишь).

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

urxvt ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)