Хотел вкатиться в программирование на C# (до этого писал на LUA и немного JS), но пытаясь учиться по официальным гайдам от M$, разбил себе голову, так как в теме с Hello World встретил слова "интерфейс", "класс", "метод", "пространство имён". После того, как я понял, что нихуя не понял, я понял, что без постижения ООП мне вообще нечего делать в шарпе. Нужны годные материалы по теме, с меня, как обычно, нихуя.
>>1049085 (OP)Такие треды всегда создаются раз в несколько месяцев, лолМногие хотят найти истинный ооп
Бамп
>>1049087Мне просто нужно понять ооп на том уровне, чтобы получить возможность понять библиюC#. Сама философия ооп не сильно упала.
>>1049091> истинный оопЯ нашел, эт инверсия flow control при менеджменте зависимостей за счет полиформизма.
https://github.com/dotnet/csharplang/blob/master/spec/README.md
Бамп возрождающий
>>1049085 (OP)Тебе не ООП нужно изучать, а основы программирования. Класс и интерфейс тебе сейчас не нужен. Метод это просто функция. Пространство имен модуль, например файл с кодом, который назван по имени. И все функции внутри можно вызывать используя имя модуля. Например есть дом №40 по какой-то улице. В нем могут жить несколько Ивановых. Поэтому чтобы обратиться к нужному нам человеку, мы должны знать его квартиру. Тут тоже самое. Модуль нужен для того, чтобы функции с одинаковыми именами из одних файлов, не конфликтовали с такими же функциями из других файлов. Потому что если в одном модуле будет несколько функций с одинаковым именем, то как транслятор будет понимать какую вызвать. Поэтому нужно указать имя модуля и имя фукнции из модуля. Почитай СИКП, там в первой главе пространства имен, функции. Потом будут и разъяснения объектов (классы) и интерфейсов.
>>1049091>библиюC#Что ты имеешь ввиду?Без опыта будет сложно начинать с C#, Java, C++. Лучше взять JS, Python или Руби. Самое правильное начинать с Лиспа. СИКП и Scheme.
>>1049085 (OP)1) Попробуй RUST или Erlang.2) ООП - это очень просто, книги писать не надо.У тебя есть 2 некие сущности, которым нужно между собой взаимодействовать.Это в общем случае некие модули программы(которые могут быть оформлены как объекты)Суть ООП подхода в том, чтобы ввсти дополнительную сущность "сообщение", и отвязать модули друг от друга, связав их только сообщением.Таким образом, что, отправитель сообщения, и получатель, никак не связанны друг с другом и друг от друга не зависят, но оба, зависят от сообщения.В C# это через интерфейсы реализовывается. Но ООП в сиподобных языках в целом ублюдсткое.
>>1049363Если быть честным, то ООП в Java и C# не имеет никаких сообщений. Один объект вызывает функцию другого объекта. Почему это везде называют передачей сообщений, мне непонятно. Честно говоря туфта какая-то получается. Зачем вызывать функцию через левый объект, если можно вызвать напрямую?На Эрланге пробовал писать, сложна. Библиотек мало, не знаешь что написать. Раст кажется вообще запутанным, даже Хаскелль выглядит полегче. Какие языки можешь посоветовать, чтобы без джавового ООП?
>>1049369>Один объект вызывает функцию другого объектаЭто и есть сообщение.>Зачем вызывать функцию через левый объект, если можно вызвать напрямую?Потому что в первом случае тебе надо создать один объект, а во втором создать все объекты.
>>1049385>Это и есть сообщение.Какой в этом смылс, какие выгоды, для чего? Можно же вызвать функцию безо всяких объектов. Например создать лямбду.>Потому что в первом случае тебе надо создать один объект, а во втором создать все объекты.Не много не понял. Что значит создать все объекты? Имеем объект автомобиль и объект двигатель, зачем вызывать функцию запуска двигателя из объекта автомобиль? Можно же вызывать функцию напрямую. Или использовать анонимную функцию, а данные в отдельных структурах. Это же более модульно получается. И вроде такое еще называют полиморфизмом.
>>1049388>создать лямбдуОдно из преимуществ ООП это возможность понимать код и его повторно использовать.>Что значит создать все объекты?То, что пока объект создан и нужен, он есть на куче, а когда ненужен, он убирается. Если ты не будешь создавать объектов, они уже все должны быть созданы.
>>1049388>И вроде такое еще называют полиморфизмом. Это и есть ООП в системе типов страусупа(С++)>>1049369>Если быть честным, то ООП в Java и C# не имеет никаких сообщений.Как ООП может иметь или не иметь конкретные языковые конструкции?ООП - это принцип, идея.Идея сообщений в С# реализуется через интерфейсы.>>1049363>В C# это через интерфейсы реализовывается.>В C# это через интерфейсы реализовывается.>В C# это через интерфейсы реализовывается.>В C# это через интерфейсы реализовывается.>В C# это через интерфейсы реализовывается.Ты чем читаешь, дебила кусок?>Один объект вызывает функцию другого объекта. Почему это везде называют передачей сообщенийПотому, что, это, передача, сообщений.>мне непонятно. Честно говоря туфта какая-то получается.Учись, развивайся, может поймешь.>Зачем вызывать функцию через левый объект, если можно вызвать напрямую?В смысле "ЛЕВЫЙ", схули он левый?Наличие языковой конструкции "объекта" никак несвязанно с ООП и сообщениями.Можно функцию без объекта.>>1049363>Это в общем случае некие модули программы(которые могут быть оформлены как объекты)>Это в общем случае некие модули программы(которые могут быть оформлены как объекты)>Это в общем случае некие модули программы(которые могут быть оформлены как объекты)>Это в общем случае некие модули программы(которые могут быть оформлены как объекты)>Это в общем случае некие модули программы(которые могут быть оформлены как объекты)>Это в общем случае некие модули программы(которые могут быть оформлены как объекты)А могут и не быть.Еще раз, перечитай, 10 раз, 20 раз, 30 раз.А потом кукарекай.>На Эрланге пробовал писать, сложна.Бида.>не знаешь что написать.Может с этого стоит начинать?>Какие языки можешь посоветовать, чтобы без джавового ООП? Питон, GO, lisp, Cи.
>>1049388>Какой в этом смылс, какие выгоды, для чего? Выгода инверсии flow of control объясняется SOLID-принципами.
>>1049351Настолько базовые вещи я понимаю. Я целый сервер написал на LUA. (MTA). Там как раз целыми ассемблями скрипты пишутся. Экспортируются, вызываются. Без небольшого функционального подхода я бы там ничего не написал. Просто я путаюсь конкретно на интерфейсах и общей спецификации шарпа, мне её тяжело понять. Это я про твоё первое-второе-третие предложения. А за остальное спасибо тебе, ознакомлюсь с СИКП.
>>1049645Спустя время я все же понял шарп.