помогите выбрать язык программированиядо этого прогал на с++, сейчас планирую пересаживаться на какой-нибудь другойчто необходимо:+++ наличие универсальных указателей на функциюна метод+++ возможность вызова функции/метода по имени+++ полноценное ооп, хорошая производительность++ возможность передать в функцию, требующую определённое количество однотипный элементов, диапазон из массива++ функции с переменным числом параметров++ синтаксис, схожий с с++++ лёгкая интеграция с другими языками программирования+ наличие встроенной библиотеки шаблонов+ наличие простых графических библиотек+ многофункциональная среда для языка+ подключаемый сборщик мусора- динамическая типизация-- отсутствие каких-либо фич из с++--- неуправляемый сборщик мусора
бамп
>>146301513 (OP)Ты такой тупой, что тебе только пхп
>>146301725Двощуюмимо-прогер
>>146301513 (OP)учи языки командования над людьми. говорят, зарплата вдвое-втрое выше.
>>146301725>Ты такой тупойпочему?>только пхппо каким пунктам подходит?
>по каким пунктам подходит?Тебе лучше в менеджеры.
>>146302006нет, тебе. если я написал хуйню в списке, то укажи, что именно
>>146301513 (OP)Лол, очевидно, что GO. Только на вроде бы нет указателей (не писал на нем). Но из новых и годных языков, больше всего подходит. Еще и комьюнити от Google.
>>146302156Ты там такие пункты написал - сборщик мусора и указатели в одном пакете? А ты не размечтался там? Просто я таких языков не знаю, чтобы и мусор собирали и прямой доступ к памяти осуществляли.
Почему выкатываешься с плюсов? Я сам в них вкатиться хочу. Ты студент или работал с ними?
>>146302242>А ты не размечтался там?вполне возможно, что размечтался. в целом на сборщик пофигу, а вот указатели очень важны.>>146302320студентота, выкатываюсь из-за того, что работа с указателями в некоторых ситуациях - сплошные танцы с бубном
>>146302457Хз. Плюсы хочу для геймдева учить. Тебе нужно смотреть на Python, Java, C# или Go.
>>146302553подожду анончика, который прогал на чём-нибудь из этого. пожелания у меня всё-таки немного специфические
Вообще самая большая база сейчас у Java. Но голая Java никому сейчас особо не нужна. Дрочи hibernate, spring. Особое внимание обрати на новый java8 стандарт - это вот сейчас очень модно. Когда освоишь можешь scala смотреть, тоже лишним не будет
>>146303259насколько со списком совпадает?
>>146303348Про прямой доступ к памяти можешь забыть, но в остальном в целом вроде подходит, особенно с фишками из восьмого стандарта.
кадер лол
>>146301513 (OP)ну есть только 3 языкаjavaсjsостальное мусор для детей
>>146303452ок, почитаю>Про прямой доступ к памяти можешь забытьпо возможности, распиши подробнее этот момент
>>146303470Js годный в связке с чем-либо. Сложную бизнес-логику ты одним однопоточным JSом не вывезешь никогда. Ну ты конечно можешь попытаться, но и срать не снимая свитер тоже можно при желании
bump
>>146301513 (OP)аноны, может взлетит использовать какой-либо язык в дополнение к с++ для нормальной работы с указателями?
>>146303739Можно в NodeJS использовати изи код написанній на с++. Я такое не осуществлял. Но ведь сам Node На крестах написан. так что...
>>146303599А что тут расписывать? Java вообще по сути только со ссылками работает - любой объект это по сути ссылка. Исключение составляют только примитивные типы.
>>146303787вот это довольно интересно выглядит
Test
rust же
>>146304081почти ничего о нём не слышал. по каким пунктам подходит?
>>146303658я имел ввиду, что без него сейчас никак, хоть ты обосрись, а связка - тот же java или с, не понимаю тех, кто до сих пор использует php на беке
>>146304256Никто не использует. Ну может только какие нибудь веб-студии, которые сайты визитки за 15к делают
>>146304256Вообще даже лучше не голый Js, а сразу какие нибудь модные фреймворки
>>146304081>Объектно-ориентированное программирование как таковое языком не поддерживается, но язык позволяет реализовать большинство понятий ООП при помощи других абстракций, например, типажей.насколько всё плохо?
>>146304551Скажем так - ооп На rust это как срать сквозь свитор при помощи вставленной в задний проход трубки
>>146304654тогда не пойдёт.
>>146301513 (OP)С
>>146302156Двачую товарища. Указатели в GO есть.
>>146305105что с ооп в go?
>>146302851На шарпе прогал.>наличие универсальных указателей на функциюна методВместо указателей там делегаты.class C { public int MyMethod(string str) { return str.Length; }}.....delegate int MyDelegate(string str);C c = new C();MyDelegate myDelegate = c.MyMethod;int result = myDelegate("qwe");>возможность вызова функции/метода по имениМожно через рефлнксию.System.Reflection.MethodInfo method = typeof(C).getMethod("MyMethod');C c = new C();int result = method.Invoke(c, new object[] {"qwe"});>полноценное ооп, хорошая производительностьООП полноценное. Классы, интерфейсы, абстрактные классы, статические классы, ковариация/контрвариация интерфейсов, рефлексия (позволяющая обходить инкапсуляцию...). Только множественного наследования классов нет (а интерфейсов есть), как в плюсах.Производительность хуже, чем у крестов, и, вроде бы, чуть лучше (мб только в некоторых моментами), чем у джавы.>возможность передать в функцию, требующую определённое количество однотипный элементов, диапазон из массиваНе совсем понял, что именно ты хочешь. Если в функции эти аргументы объявлены через запятую, то, ну, можешь попробовать это сделать через метод Invoke, описанный выше, только это долговато работает. В таком случае лучше сделать, чтобы функция сразу принимала массив. Тогда и не будет лишних копирований переменных.>функции с переменным числом параметровprivate void MyMethod(params int[] test) {...}...this.MyMethod(1, 2, 3, 4);>синтаксис, схожий с с+++>лёгкая интеграция с другими языками программированияХз, не пробовал.>наличие встроенной библиотеки шаблонов+>наличие простых графических библиотек+>многофункциональная среда для языка+>подключаемый сборщик мусораОн там всегда.>динамическая типизацияСтатическая типизация.>отсутствие каких-либо фич из с++Нет дефайнов, которые позволяют компиллятору код подставлять в исходный файл самому. Вроде бы. А мож и есть, но не встречал.Нет оператора "запятая", позволяющего в одной инструкции выполнить несколько операторов.>неуправляемый сборщик мусораЕсли ты имеешь в виду неуправляемость программистом, то сборка мусора начинается в непредсказуемое время, но можно начать её самому вызовом System.GC.Collect();
>>146303739А что тебе не нравится с указателями?
>>146306051под каждые типы входных/выходных параметров нужен свой тип указателя - неудобно, указатели не конвертируются в указатели на методы, даже если танцевать с бубном, функцию по имени вызвать нельзяне относится конкретно к указателям, но мешает очень сильно
>>146305957>Вместо указателей там делегаты.не совсем то, что нужно>Можно через рефлнксию.вот это интересно, посмотрю>В таком случае лучше сделать, чтобы функция сразу принимала массивне всегда. если они сильно семантически различны, то передача как массив-плохое решение>Нет дефайнов, которые позволяют компиллятору код подставлять в исходный файл самому.неприятнов целом весьма неплохо, надо будет посмотреть повнимательнее на с#
>>146301513 (OP)Dlangдальше сам
на html работаю, зп 85К
>>146308978а ооп там есть?
>>146308459>не совсем то, что нужноЭто в чём это? Какой вообще чудесный функционал указателей на функцию ты используешь, что тебе не хватит делегата? Делегат, по своей сути, это типобезопасный указатель на функцию, лолд.>неприятноНу, а другим неприятно, когда у тебя половина кода это макросы. Охуеть, серьёзно, выкиньте из головы все нестандартные макросы, чур, чур>лёгкая интеграция с другими языками программированияПри небольшом желании через маршалинг можешь работать с любым языком, который есть в платформе .net. С теми же плюсами из мелкомягкого компилятора.>передача как массив-плохое решениеТы всегда можешь передать чудесный указатель на подмассив, это абсолютно эквивалентно передаче двух указателей на элементы, лол.Но вообще, у всех языков, кроме крестов, есть проблема с графикой, так что такое. Наличие библиотек =/= они нужные/рабочие.
>>146309999>Ну, а другим неприятно, когда у тебя половина кода это макросы.использовал в основном для сокращения записи указателя на функции, очень удобно>Ты всегда можешь передать чудесный указатель на подмассив, это абсолютно эквивалентно передаче двух указателей на элементы, лол.нет же. представь, что ты должен передать в функцию несколько интов с сильно разным смыслом, что отражено в их названиях в описании функции.>При небольшом желании через маршалинг можешь работать с любым языком, который есть в платформе .net.посмотрю, интересно.>Какой вообще чудесный функционал указателей на функцию ты используешь, что тебе не хватит делегата?много функций с разным количеством параметров, под каждый вид отдельный делегат/указатель заводить не хочу
>>146308126То есть, ты хочешь, чтобы одному и тому же указателю можно было присваивать адреса функций с разными сигнатурами? Если да, то какой в этом смысл, ведь ты не сможешь вызвать функцию, не зная её сигнатуры.
>>146310649я знаю, к примеру, что среди параметров только инты, я знаю их количество допустим, возвращаемого значения нет, адрес функции есть, сигнатуру восстановить вполне реально
>>146310594>представь, что ты должен передать в функцию несколько интов с сильно разным смыслом, что отражено в их названиях в описании функции.Если тебе так важны названия, то можешь использовать ассоциативный контейнер.
>>146310812в целом неплохой стул. если не найду чего-то удобнее, то воспользуюсь
>>146310804Т. е. у тебя, например, есть 2 функции void func1(int par) и void func2(int par1, int par2) и указатель pointer, который может принимать обе этих функции.И тогда ты будешь писать при использовании этого указателяif (pointer == func1){pointer(228);}else if (pointer == func2){pointer(228, 1488);}Так что ли? Но тогда какой смысл вообще в этом указателе?
>>146310594>ты должен передать в функцию несколько интов с сильно разным смысломможет пора подумать про рефакторинг?>отдельный делегат/указатель заводить не хочуПосмотри про вариативность делегатов
>>146311266не-а. ты принимаешь дополнительно количество параметров(vector.size()), которые надо передать в функцию, и проверка будетif(vector.size()==1){pointer(vector[1]);}if(vector.size()==2){pointer(vector[1],vector[2]);}
>>146311394>может пора подумать про рефакторинг?возможно>Посмотри про вариативность делегатовпосмотрю
>>146301513 (OP)Си/threadооп нинужон.
>>146311671>ооп нинужон.ПО-ЧЕ-МУ?
>>146311728я скозал!
>>146311739ох, бля
>>146311574В языках со статической типизацией такого не может быть, так как ты тут можешь написать передачу двух параметров в функцию с одним параметром и наоборот. Пересмотри свою архитектуру и найди решение получше.Можешь, вообще, привести простой пример задачи, где это может понажобиться?
>>146311833Что такое ? Чем не аргумент ?
>>146311728Нужно захламлённое пространство имён, в котором не найти нужную функцию без гугла.
>>146301513 (OP)>полноценное оопЯ нашел язык для тебя, опхуй.https://github.com/yegor256/eo
>>146312097>These things we don't tolerate:>NULL >operators>type casting>flow control statementsДа, самые ненужные вещи они выкинули
>>146311943>Можешь, вообще, привести простой пример задачи, где это может понажобиться?простенькая программа похожая на интерпретатор. пользователь пишет, какие команды надо выполнять, я сохраняю адрес функции, которую необходимо вызвать и добавляю дополнительные параметры в зависимости от состояния программы, и в определённый момент выполняю пользовательские команды в определённом порядке на данный момент программа уже работает, но мне совершенно не нравится то, что получилось
>>146301513 (OP)Очевидный D очевиден. https://en.wikipedia.org/wiki/D_(programming_language)
>>146311971но ведь ооп же классно, ну чего ты?
>>146312373>ониЭто он, и у него довольно своеобразный взгляд на ооп. Оче классная была дискуссия на тему ооп с ним на жавадэй 2к16. Алсо>имплагинг, нулл - нужная вещь
>>146312481есть что-то, что урезали относительно с++?
>>146312566Ну, мне нравится думать про железо. Ссал я с колокольни на высокие ОБЪЕКТНЫЕ материи, сорь.
В двух словах поясните за ООП школьнику. Сейчас на Си задачи решаю, с крестами будет круче/удобнее?
Python+крайне востребован+быстр в освоении+100% скрипты для оптимизации своей жизни станешь писать на нём+он заменит тебе калькулятор+гигансткое колличество библиотек + лёгкий импорт с-шных(по сути заголовочный файл переписать)+Django/Tornado/Flask(круче искать априори бесполезно, эти фреймворки и делают пайтон столь востребованным)+ФЕЕРИЧЕСКИ приятный синтаксис+Именно на нём написан(серверные части) Youtube/Dropbox+Его активно спонсирует и юзает google+активно развивается за счёт PEP'ов(рац предложений пользователей), а не прихоти разработчика самодура+Полнейшее ООП+проблема 2/3 уже не актуальна, всё нужное уже переписали+кроссплатформенен+взгляни на вакансии Python 3 + Django - кол-во вакансий и ЗП тебя порадуют-скорость, но в его сфере применения(веб-сервера преимущественно) это не является проблемой-уйти с него будет трудно, затягивает-гибкость, он станет гибким только тогда когда ты его крайне глубоко изучишь, на уровне реализации, но тогда проблема производительности отпадает + такие специалисты крайне востребованы просто ОЧЕНЬ востребованы
>>146313097ещё к минусам - GIT но обойти реально, но это уже для глубокого понимания языка
>>146312897основная идея такая: ты выделяешь из пачки переменных/функций логически связанную часть и объединяешь их под одним именем(машина имеет переменную кузов, движок и функцию ездить). теперь ты можешь создать переменную машина и автоматом создадутся переменные кузов и движок внутри неё+ функция ездить будет иметь постоянный доступ к ним. это совсем в двух словах
>>146313097>количество вакансий порадуетТы на приколе? Весело конечно на нем, но для вкатывания хуйня. Джуны питонисты почти нигде не нужны. Проще действительно уж с похапэ стартовать.
>>146313284Спасибо, теперь понял.
>>146312397Сделай для каждой команды по классу, наследнику одного и того же базового класса, и оверрайдь в них виртуальный метод, принимающий мапу с параметрами (имя=>значение). Либо мапу с параметрами передавай в конструктор, а оверрайдить будешь метод без параметров.Все эти объекты в контейнер базового класса загоняешь и на стадии выполнения просто по очереди вызываешь тот метод перегружаемый.
>>146312481выглядит весьма неплохо. другие аноны, отпишитесь, сталкивался ли кто ещё с этим языком, как ощущения?
>>146313334есть и для джуниоров, согласен меньше, но есть. Но он и не вкатывается, он таки на ++ уже посидел. Специалист задроченный в пайтоне - редкость. Самый норм сейчас вкатиться в Python на Лутце + любая рандомная с названием по стрёмней, пройтись по Djang'е и уйти в проект по поддержке Djang'и. Опыт наберёться быстро если не дрочить на стены.
>>146313503Тебе как хобби язык нужен? Если нет, ориентируйся в первую очередь на рыночек.
>>146313550Тоже думал о джанге. Мне понравится? Лучше похапе?
>>146313407почитай наследование, инкапсуляция, полиморфизм, и офигей от потенциала ооп
>>146304052Двачую
>>146313633Это довольно разные вещи. Django даст тебе возможность с пол пинка делать почти что угодно(просто взгляни на первые 5-6 страниц любого тутора и ты поймёшь в чём её прелесть). Нравится она всем, точнее не только лишь всем, мало кому она не нравиться)) ИМХО там где есть смысл развернуть Django, php соснёт.
>>146313578>ориентируйся в первую очередь на рыночек.я бы хотел, чтобы ты был неправ. очень.
>>146313450>Сделай для каждой команды по классу, наследнику одного и того же базового классаесли я буду использовать мапы, то классы здесь в принципе будут избыточны. это ведь один из паттернов, верно?
>>146301513 (OP)TypeScript>наличие универсальных указателей на функциюМожно сказать Check, если считать ссылку и указатель одним и тем же>полноценное ооп, хорошая производительностьCheck>возможность передать в функцию, требующую определённое количество однотипный элементов, диапазон из массиваCheck ...myArray %> функции с переменным числом параметровCheck>лёгкая интеграция с другими языками программированияCheck>наличие встроенной библиотеки шаблоновCheck>наличие простых графических библиотекCheck>многофункциональная среда для языкаCheck>подключаемый сборщик мусораNot check>динамическая типизацияПо желанию>отсутствие каких-либо фич из с++давно с плюсами дела не имел, так что не знаю что сказать>--- неуправляемый сборщик мусораУвы, check
>>146302006>>146301830сладкий бубалех
>>146313808То есть полную замену пыхе он не обеспечит?
>>146314253>Check ...myArray %это просто офигенно, обязательно почитаю про этот язык
>>146313986Почему классы избыточны? Мапы нужны для того, чтобы передавать в команду различные параметры из командной строки и использовать их по именам.
>>146314557это фича из EcmaScript 6, но в ТСе поддерживается и компилируется в любой JS левел. А еще есть по целым объектам:const obj = { ...prevObj, a: 5 }а еще есть async/await
>>146314655сигнатура у всех функций одинаковая -> понадобится один тип указателя -> помещаем все функции в один класс -> вызываем через указатель. а классы здесь были бы просто большим количеством не сильно полезного кода. и всё-таки, это паттерн, или я туплю?
>>146314852а как ооп вообще компилируется в javaScript?
Brainfuck/thread
>>146315079в завимости от таргета. если в ес6 комплировать - то в нативные классы, если в ес5 - то в прототипы
>>146314974>сигнатура у всех функций одинаковаяТы же раньше писал, что разная. И что тебе важны названия параметров.Да хуй его, какая разница.
>>146314433они выполняют несколько разные задачи. Заменить может, но в некоторых случаях(лёгких проектах) даже Flask, а уже тем более Django будет из пушки по воробьям
>>146302242unsafe код на сисярпе
>>146315268писал брейнфак на брейнфаке.
>>146315541либо я тебя совсем не понял, либо в твоём примере в функцию передаётся просто мапа одним параметром, внутри которой имена переменных и их значения, что даёт унифицированную сигнатуру функций
>>146301513 (OP)Под все параметры подходит c#. Думаю, и джава тоже подойдёт, туда, вроде бы, тоже прикручивали функциональщину
А если я хочу делать инди-хуинди игры, помимо крестов что юзать? Алсо, доброаноны киньте гайд для гей-дева.
>>146315993посмотри sfml библиотеку к крестам, забей на всё остальное
>>146316074Спасибо.
>>146315541P.S. Если так хочешь какой-нибудь паттерн, то примени абсьрактную фабрику: в базовом классе делаешь статический метод, принимающий строку, содержащую имя команды, и возвращающий, объект класса этой команды.
>>146313097Вечера тебе. Смотри, буквально на днях начал вкатыватьсяи выкатываться во всю эту среду и выбрал питон как первый язык, который я хотел бы изучать. Но к Лутцу еще не приступал, а по гайдам начал читать Вирта "алгоритмы и структуры данных" и SICP, книги довольно старые, но там объясняются принципы программирования, которые по сути не изменились за это время. Так вот правильно ли я поступаю? И что еще посоветуешь для изучения питон и пойдет ли он как первый язык? Спасибо.
>>146309999>При небольшом желании через маршалинг можешь работать с любым языком, который есть в платформе .net. С теми же плюсами из мелкомягкого компилятора.Еще через DLR в теории можно много с чем интегрироваться, но сам не пробовал.
>>146315828Второе.
>>146313097>а не прихоти разработчика самодураС этого люто проиграл.
>>146316241>SICP, книги довольно старые, но там объясняются принципы программирования, которые по сути не изменились за это времяА почему тогда MIT от него отказался?
>>146316231хочу писать такие простенькие моменты считанными строчками кода. спасибо тебе за советы, если не перекачусь - возможно пойду по одному из предложенных тобой путей
>>146301513 (OP)Если ты, как ты говоришь, до этого прогал на плюсах, то ты должен сам рассмотреть несколько ЯП и сделать соответствующие выводы. Да и ты не конкретизировал, какие тебе нужны языки, для каких целей? Для web-разработки, али под ОС?
>>146316646Нет, я про то, что там, как мне кажется, вводят таких же гуманитариев головного мозка как я в сферу программирования, а именно как правильно мыслить.
>>146316703под винду, портируемость идёт в плюс, но не критична, в web вкатываться не хочу
>>146316241Лутц "Изучаем Python" 4!!! издание. Это библия Пайтона(не питона, а пайтона!!! он назван в честь телешоу, а не пресмыкающегося), начинать нужно только с неё. Лучше ещё никто не написал.
>>146316741Ой, разговоры про мышление начались. Лучший способ чему-то научиться, делать это. Для начала любой курс на ютубе посмотри, дальше задачу себе даешь и гуглишь. Книжки не подстегнут тебя ни к чему, онли практика, проверено.
>>146316397ну ладно может и не совсем без его участия)) Но уж степень влияния PEP'ов трудно отрицать. Они внесли серьёзный вклад в удобство пайтона.
>>146316934>>146316932Спасибо. Добра вам.
Напоминаю всем сычам, что в веб разработке, нихуя даже думать не нужно. Все говно уже сделали за вас. Работа кодера это искать нужные скрипты в библиотечке и прикручивать их.
>>146317058Кстати о задаче, я лично изучал(и считаю это верным способом) - читаешь лутца до примерно трети, придумываешь большой проект, например копию какого-нибудь приложения(хоть текстового редактора, пофиг).А дальше читай и реализовывай, ИМХО лучше сразу херачить криво-косо но большую задачу, так ты быстрее набьёшь шишки в стиле написания кода.
>>146317231Декстоп? Сложно наверное, если борду свою написать, это еще как то я могу себе представить, но вот вибм конвертер... Например функционал в коде окей, а граф оболочка того же редактора как делается? Тоже в коде прописывается, отрисовывается?
>>146317183>в веб разработке, нихуя даже думать не нужноНу да, если пишешь говноблог или простенький магазин по продаже дилдаков.
>>146308126Еще один говнокодер
>>146317448а ты до этого кодил на чём-то?
>>146317448На WPF почти так же, как и в вебе.
>>146317475А что еще можно писать? Хайлоад уровня лицокниги? Так и там уже все реализовано.
>>146317516серьёзно? что именно из этого подвело тебя к такому выводу?
>>146317525На сишке, арифметика на пайтоне. Мне непонятно как делается интерфейс приложухи, тоже в фотошопе отрисовывается? Типа как в верстке?
>>146301513 (OP)Плохому танцору...
>>146301513 (OP)Питон.
>>146317664>тоже в фотошопе отрисовываетсяили стандартные окошки/кнопки/менюшки.или крафтишь из графических примитивов внутри приложения если уж совсем что-то примитивное.
>>146317571Ну вот окончишь свой быдловузик, устроишься на работу, тогда и узнаешь.
>>146317448Моей 3-й при изучении была реплика winamp'а. Tkinter(таки если уж дрочить, то дрочить, впрочем до сих пор нахожу ему применения, ибо он быстр, встроен и кроссплатформенен) сделал GUI, звуки уже ХЗ на чём 5 лет назад было. Ушло где-то неделя разработки(на тот момент 1.5 месяца вялого изучения в 8 классе шкалки). GUI(в т.ч. с разделяемым КАК в оригинале окошком) парсинг треков, чтение заголовков, подгружал с инета инфу и ещё куча дерьма. Разве визуальные наркотики не делал. Вторым проектом(плохо доделаным конечно, он работал только в 1 конкретном месте, но на 2-м месяца вялого изучения школьника 8-го класса думаю норм) - распознавание жестов. Вебка + OpenCV+куча математики(её то и не хватило чтоб толком закончить), распознавать успел за 3 дня научиться кол-во пальцев и угол поворота руки. ХЗ зачем но было прикольно. Также написал игру столлман есть ноги(даже видос остался криво снятый https://vk.com/saram23?z=video316881060_171320860%2Fvideos316881060)
>>146301513 (OP)haskell
>>146317664спросил потому, что лично мне всегда было понятнее, как сделать десктопку, а вот всякий веб - тёмный лес
>>146317870ты просто машина. я подрабатываю репетиторством, ко мне студиозисы приходят, чтобы понять какие-нибудь вложенные циклы, а ты тут ТАКОЕ вываливаешь
>>146316698Там надо будет сделать шаблонную функцию template<class T>, которая возвращает указатель на базовый класс (в сигнатуре), но на самом деле возвращает указатель на T, а принимает мапу с параметрами. Далее нужна статическая мапа с ключом — названием класса и значением — адрес на ту шаблонную функцию с соответствующим классом в угловых скобках. И эта мапа инициилизирована строчками вида название команды — адрес шаблонной функции для соответствующего класса, что тоже может быть макросами сделано для уменьшения количества текста.Ну и в итоге статическая функция в твоём базовом классе принимает строку (название команды) (а так же мапу с параметрами), ищет её в мапе, достаёт адрес функции (та, которая шаблонная), инстанциирующей объект, выполняет её, передавая мапу с параметрами, получает указатель (желательно shared_ptr), ну и возвращает это.А дальше ты это вносишь в свой вектор команд. И потом, когда надо выполнять их, ты уже не делаешь никаких проверок (объект сам знает, какой код ему выполнять, а параметры уже переданы при инстанциировании), а просто делаешь им всем по очеерди execute().Я так вижу.
>>146318097я дрочить научился в 9-м классе. Потому и делал от скуки)
>>146318097Кстати как вкатился в репетиторство? Имею некоторый опыт по знакомым, да и наследственное - маман учитель. Но хотел бы взять пиздюка к ЕГЭ готовить или лучше к олимпиадам. Где рекламиться/как искать?
>>146317587Шаблоны и полиморфизм дают достаточную гибкость для того, чтобы подняться над тем плоским миром, где требуется конвертировать указатели. Небось еще динамик кастом пользуешься.
>>146318343собственно, идёшь в гугл, пишешь найти репетитора по предмету, выбираешь сайт с репетиторами получше и регаешься там как репетитор. необходима профильная вышка ( не педобраз, а по предмету ), но не везде её наличие будут проверять
>>1463185092-й курс шараги по спец-и "Информатика и вычислительная техника" сойдёт?
>>146318642ток для некоторых сайтов. заходишь на сайт и смотришь, требуют ли при регистрации докуметры. если да-идёшь на другой
>>146318353из пушки по воробьям же
>>146318203не уверен, что template там нужен, в предка присваивать наследника и так норм
>>146301513 (OP)Как ты можешь с чего-то "перекатиться" если ты на плюсах ни копейки не заработал.Бабу даже не понюхал. Ты и никогда в него не вкатывался, твои обосанный лабы это просто ничто.Охуительня история.
>>146318926Ты серьезно? Деассемблируй и удивись.
>>146319788кода будет заметно больше.
>>146319996до комиляции разумеется.
>>146319996Понятно
>>146319213Это для того, чтобы не делать кучу присваиваний в свитче, а просто макросно проинициализировать мапу названиями.
>>146320074эх, чот прибамбливает на тебя... может, я реально хуй...
>>146320152тогда ок
>>146305340Через ещё большую жопу, чем в остальных «ООП» языках. Впрочем pure OO язык — это жопа с повышенной размерностью.
оп потихонечку выкатывается курить полученную информацию. спасибо всем анончикам, поучаствовавшим в обсуждении
>>146320227У тебя, похоже, заблуждение насчет тяжеловесности некоторых фич языка. Стоит больше дизассемблировать разные подходы, чтобы реально понимать, сколько весит каждый из них. Да, строк кода может оказаться больше (только если это небольшая программа), но после компиляции программа будет не тяжелее, чем если бы она была написана через еблю с указателями. А бонусом будет большая гибкость, что жизненно необходимо при создании больших проектов. Если же в фундаменте большого проекта лежит ебля с указателями, типы которых прибиты гвоздями, то такой проект быстро загнется, т.к. его гибкость будет стремиться к нулю, а внесение изменений в фундамент такого проекта будет требовать массу усилий.
>>146321576Пожалуйста.
>>146321664ну смотри, на каждую функцию, реально исполняющую свою задачу, приходится одна строго определённая функция - обёртка, помещающая все её параметры в массив данных. + 2 функции: пакующая и распакующая/запускающая данные. не совсем понимаю, где здесь в принципе может всплыть проблема.
>>146322130Проблема может оказаться там, где тебе нужно руками кодить много повторяющихся вещей. Например, если тебе для добавления в программу новой "реально исполняющей свою задачу" функции требуется написать еще обертки, где-то зарегистрировать какие-то указатели, что-то еще поменять в десятке файлов, то полезно подумать над дизайном еще раз. Для тебя это, конечно, может и не составлять проблемы. Но с другой стороны ты мог бы поднять эффективность своей работы. Представь, например, что тебе не надо делать обертки, а вся необходимая обвязка генерируется компилятором из шаблонов. Ты только пишешь свою новую "реально исполняющую задачу" функцию и регистрируешь ее одной строчкой.
>>146324323к такому я только приблизился. сейчас надо для добавления функции написать обёртку, в которой одна строка - вызов пакующей функции. всё остальное работает само по себе
>>146324996паковщик - функция с переменным числом параметров - просто переписывает все параметры в командный векторраспаковщик: if(vec.size()==4) ((pmove4)(vec[0]))(vec[1],vec[2],vec[3],step); if(vec.size()==3) ((pmove3)(vec[0]))(vec[1],vec[2],step); if(vec.size()==2) ((pmove2)(vec[0]))(vec[1],step); if(vec.size()==1) ((pmove1)(vec[0]))(step); }
>>146301513 (OP)D.
>>146326063 if(vec.size()==4) ((pmove4)(vec[0]))(vec[1],vec[2],vec[3],step); if(vec.size()==3) ((pmove3)(vec[0]))(vec[1],vec[2],step); if(vec.size()==2) ((pmove2)(vec[0]))(vec[1],step); if(vec.size()==1) ((pmove1)(vec[0]))(step);}
>>146326233почему именно D?
>>146326433Все твои фичи есть в D.
>>146326246Зачем этот лютый пиздец?
>>146326960Он так может.
>>146326960>>146327038да, но нет. эта штука для вызова любой функции по адресу и известному количеству параметров
>>146327126собственно, этот костыль - одна из вещей, которой я хотел найти замену в этом треде
>>146327126но можно же использовать вариадики, не?
https://vk.com/id207297701добавьте в конфу
>>146327705как?
>>146327936Без проблем.
>>146327980ну ты всё-таки распиши поподробнее, как именно их здесь использовать
>>146327541И ты выбрал искать другой язык программирования. Заебись. Почитай хоть Александреску, что ли.
>>146328366почитаю
Поскаль
>>146313503Провозился с ним какое-то время.+ Удобно, разные неприятные или ненужные мелочи из С++ пофикшены или переделаны+ Импорты, хэшмапы в языке (а не в либе), много компайл-тайма, допиленные шаблоны, куча инструментов для мультитрединга в стд, тупли и куча других няшностей. Большая и фичастая стд библиотека.+ Линковка с С/С++ библиотеками. Можно без проблем дружить с C, были бы биндинги. Можно кое-как дружить с C++.+ Мгновенная компиляция.+ На его охуенность можно дрочить.- Некоторые вещи непривычны после плюсов, надо подолбаться/привыкнуть. Не критично, но если ты дебил, то будет баттхёрт.- Разработчики — большие любители ломать обратную совместимость. Библиотеки собираются ТОЛЬКО той версией компилятора, под которую написаны. - Кривоватое API у стандартной библиотеки. Нет ощущения выдроченности, как в С++. Один раз напоролся на конфликт имён из двух разных модулей стд. Не критично.- Большая и плохо поддерживаемая стандартная либа. Например, shared Variant не засунуть в Message (не помню точные названия классов, но было). Разработчикам дико не хватает рук фиксить всё это говно.- dub ёбаное говно, пакеты модерируются через жопу, старые пакеты проёбываются, из-за сломанной обратной совместимости компилятора сборка превращается в леденящий душу пиздец. Можно не пользоваться и собирать всё по-старинке, либо прикрутить сторонний сборщик, либо разобраться, как в этом дерьме можно собирать из локальных пакетов.- Нет работы, в отличие от хипстерского Go, например. Дишка — труъ андеграунд.Вывод:Можно играться, но для продакшена не стоит.
>>146329027>Можно играться, но для продакшена не стоит.Какой у тебя может быть продакшн, насекомое?
>>146301513 (OP)RustСвоеобразный язык, но неплохое совпадение по пунктам %)> +++ наличие универсальных указателей на функциюна методесть> +++ возможность вызова функции/метода по имениНе очень понятно, имеется в виду возможность хранить указатель на функцию на стеке в каком-нибудь хэшмепе? На расте делается просто.> +++ полноценное ооп, хорошая производительностьТут минус, используется система типов родственная хаскелю, имхо очень классная, но ни разу не ООП точно> ++ возможность передать в функцию, требующую определённое количество однотипный элементов, диапазон из массиваДа, с любого массива можно взять т.н. слайс, указатель на начало и конец среза с массива> ++ функции с переменным числом параметровК великому сожалению нет, хотя наверняка должна быть поддержка для C FFI> ++ синтаксис, схожий с с++Имхо плюс-минус> ++ лёгкая интеграция с другими языками программированияДа, так как нет сборки мусора. Код даже может дергаться из C/C++> + наличие встроенной библиотеки шаблоновИменно плюсовых шаблонов тут нет, есть НОРМАЛЬНЫЕ макросы, а не препроцессор C, и синтаксические расширения времени компиляции, но они пока не доехали до стабильной ветки. Местные дженерики напоминают тайп-классы к хаскелле> + наличие простых графических библиотекБинлинги к SDL точно есть, с GUI вроде жопа> + многофункциональная среда для языка???> + подключаемый сборщик мусораRust основан на концепции времени жизни объектов (lefetimes - аналог RAII, так же концепция заимствований, про это лучше почитать отдельно, очень интересная тема)Этот подход почти отметает необходимость в сборке мусора, однако заметно усложняет написание кода, особенно на начальном этапе.Однако, если язык интегрируется с языком со сборкой мусора, то можно сделать так, чтобы определенные объекты собирались этим самым сборщиком мусора.> - динамическая типизацияСтатическая, сильная, во многом похожа на хаскельную, если проникнешься, велик шанс что на типизацию в плюсах будешь смотреть, как на говно> -- отсутствие каких-либо фич из с++Каких-либо прямых заимствований тупо из плюсов вроде нет, есть, правда, довольно много синтаксического сахара и заимствований из языков высокого уровня (при этом оверхед стараются держать в идеале на нуле или очень небольшой), и вообще код на расте выглядит более высокоуровневым, чем плюсовый> --- неуправляемый сборщик мусораТочно нет, старые добрые стек и куча %)
>>146301513 (OP)Русский.
>>146301513 (OP)>-- отсутствие каких-либо фич из с++>--- неуправляемый сборщик мусораочевидно. советую тебе C++
>>146329660На расте многое делается не как в С, там надо переучиваться.
>>146329986Что есть, то есть. Язык ИМХО хороший, но новых концепций много, а концепция лайфтаймов и заимствований с гарантиями времени компиляции без рантайм-оверхеда вообще уникальная.
>>146301513 (OP)ABAP
Ананасы, как фрилансить с с++? Че еще знать надо к нему?
>>146330675Никак, пиздуй в энтерпрайз.
>>146303658Но ведь можно срать не снимая свитер>>146304654Да что не так со свитром?
>>146304551Скажем так, есть аналог класса - struct и аналог абстрактного класса родителя при наследовании? - trate (типаж), методы могут добавляться как к тому так и другому, если добавляются к struct'у, то это аналог собственного метода у класса, от которого никто не наследуется, если к типажу - то это аналог интерфейса в жабе. Наследования нет, вместо того, чтобы описывать кто от кого унаследовался, ты подбираешь к каким страктам подходят какие типажи. Например тупой пример ты не создаешь тип Number и наследуешь от него Int, Uint, Float, а сразу создаешь Int, Uint, Float и говоришь, что Int и Uint удовлетворяют типажу Eq, так как если тебе дать два целых числа, ты однозначно можешь сказать их соотношение - больше, меньше или равно. А вот Float этому типажу увы не соответствует, так как среди допустимых значение есть NaN, который не равен даже самому себе и вообще полная НЁХ. В стандартной библиотеке раста есть типаж для этого PartialEq https://doc.rust-lang.org/std/cmp/trait.PartialEq.htmlПо началу кажется, да ну его в пень, а со временем понимаешь, что, благодаря такому подходу, ты вынужден обрабатывать почти все пограничные случаи, и кол-во трудноуловимых багов в твоем коде значительно снижается.