[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]

 [ Скрыть форму ]
Имя
Не поднимать тред 
Тема
Сообщение
Капча Капча
Пароль
Файл
Вернуться к
  • Публикация сообщения означает согласие с условиями предоставления сервиса
  • В сообщениях можно использовать разметку wakabamark
  • На данной доске отображаются исходные имена файлов!
  • Разрешенные типы файлов: pdf, music, text, code, vector, image, archive, flash, video
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

No.36161 Ответ [Открыть тред]
Файл: 125860969610249.jpg
Jpg, 39.86 KB, 300×100 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
125860969610249.jpg
Доска посвящена созданию программ и всему, что с ним связано. Для обсуждения готовых программ, железа, устройств есть доска >>/lor/

Простые реквесты для ньюфагов >>28288
Помощь начинающим >>44688 (новый)
Оффициальный™ Лунного Сахара тред >>43581

Языки программирования:
Haskell >>35693
Lisp >>29402
Assembler >>32929
C++ >>43511
Java >>46281
C# и .Net >>27510
Perl >>37854
Python >>46029
Доска посвящена созданию программ и всему, что с ним связано. Для обсуждения готовых программ, железа, устройств есть доска >>/lor/

Простые реквесты для ньюфагов >>28288
Помощь начинающим >>44688 (новый)
Оффициальный™ Лунного Сахара тред >>43581

Языки программирования:
Haskell >>35693
Lisp >>29402
Assembler >>32929
C++ >>43511
Java >>46281
C# и .Net >>27510
Perl >>37854
Python >>46029
PHP >>23225
JavaScript >>40541
Pascal/Delphi >>37645
Golang >>48143

Фреймворки и библиотеки:
Ruby on Rails >>31319
Qt >>31597

Инструменты:
Vim >>33881
Emacs >>36714
Системы контроля версий >>28005

Прочие технологии:
SQL >>29820

Информатика:
Стеганография >>35350

"Кафедра сайтостроя": тред тут в /s >>31137 и тред в /u >>u/104773
Game Development тред тут >>39943 "Кафедра гейм-девелопмента" в /u: >>u/60525
Сообщение слишком длинное. Полная версия. Post was modified last time at 2017-09-26 21:53:58


No.46281 Ответ [Открыть тред]
Файл: main-qimg-2a7cef12cc63002b267d248611c76e58.png
Png, 782.27 KB, 572×861 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
main-qimg-2a7cef12cc63002b267d248611c76e58.png
И мы продолжаем ликвидацию безграмотности, неспешные беседы и яростные дискуссии вокруг яваскрипта.

Предыдущий тред: >>40541
126 posts are omitted, из них 19 с файлами. Развернуть тред.
>> No.48876 Ответ
>>48875
> так?
Да, только sum(5) это прямой вызов, дальше как у тебя.

Со вторым примером вообще непонятка. Зачем ты определяешь проперти у функции? Тут нужен объект, т.е. var f={huita: function(){}};return f; и т.д.
>> No.48878 Ответ
Вообще у тебя довольно странные проблемы, чисто синтаксические, лол.
Первый раз такое встречаю. Это первый язык, или ты на чем-то экзотическом писал раньше?
>> No.48879 Ответ
Файл: DE56FQjWAAE3yi9.jpg_large.jpg
Jpg, 62.84 KB, 718×639 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
DE56FQjWAAE3yi9.jpg_large.jpg
>>48878
Да.:3да, первый
>>48876
Затем, что функция ведь тоже объект, почему у неё не может быть своих методов?
То есть
function Calculator() {
var a = 0, b = 0;
return {
read: function(){
a = Number(prompt('Введите первое число'));
b = Number(prompt('Введите второе число'));
},
sum: function(){
return a + b;
},
>>48878
Да.:3да, первый
>>48876
Затем, что функция ведь тоже объект, почему у неё не может быть своих методов?
То есть
function Calculator() {
var a = 0, b = 0;
return {
read: function(){
a = Number(prompt('Введите первое число'));
b = Number(prompt('Введите второе число'));
},
sum: function(){
return a + b;
},
mul: function(){
return a*b;
}
};
};
И всё? Вроде работает, но почему первый вариант не работал? Функция же это объект, а вызов функции по имени возвращает её код. Что не так?
Сообщение слишком длинное. Полная версия.
>> No.48880 Ответ
>>48879
> вызов функции по имени
В смысле без скобок.
>> No.48881 Ответ
>>48879
Результат-то объект, но он создается через function, там другой синтаксис.
Можно навешать через function.property = ''.
>> No.48882 Ответ
>>48881
Да, но почему? Это прямо в спецификации написано?
Что вообще можно почитать, чтобы там синтаксис разжёвывался?
>> No.48883 Ответ
>>48882
Вот это годная книга, рекомендую.
https://eloquentjavascript.net/
>> No.48884 Ответ
Кстати, как ситуация с use strict? Его сейчас всё ещё нужно писать отдельно или старые стандарты больше не поддерживаются?
>> No.48894 Ответ
Проблемы с синтаксисом...
Проблемы с людьми, которые не умеют составлять учебнки!
> Фигурные скобки считаются объектом, только если они находятся в контексте выражения.
Эта информация находится примерно в середине учебника. До этого так же были оговорки насчёт вызова функции со скобакми и без и всякое друое. Вот почему бы просто не посвятить отдельную главу синтаксису, к которой, если что, можно было бы вернуться и перечитать, а не разыскивать крупицы информации по мегабайтам текста?.. И ведь это уже третий сайт с курсом js, а проблемы те же.
>> No.48897 Ответ
>>48894
Смирись. Просто читай учебник целиком. Сожри всю информацию, а уже потом она у тебя в башке переварится.


No.48895 Ответ [Открыть тред]
Делимся годными гайдами, либами, примерами etc.
Вот например либа, которая очень помогает в работе с реалмом: https://github.com/vicpinm/Kotlin-Realm-Extensions

Также сейчас постигаю dependency injection. Кое-как освоил надеюсь Dagger 2, но в интернетах уже есть инструменты поинтереснее - Kodein (инфы мало) и KOIN (ещё меньше). Собсно стоит пытаться на них перелезать с Dagger'a?
>> No.48896 Ответ
Зачем ты так спойлеры используешь?


No.36714 Ответ [Открыть тред]
Файл: 20z_ZW7lnTw.jpg
Jpg, 47.63 KB, 820×325 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
20z_ZW7lnTw.jpg
У нас есть Vim-тред, пусть будет и Emacs.
176 posts are omitted, из них 26 с файлами. Развернуть тред.
>> No.47220 Ответ
>>47216
Нет, это совсем не то.
>> No.47221 Ответ
>>47215
Я думал тут за пол часа набросать тебе решение, но понял что задача нетривиальная ввиду того, что путешествуя по истории регионов (выделений) ты будешь создавать новые выделения. В любом случае, публикую свои наработки:
http://pastebin.com/W321qZwe
>> No.47318 Ответ
Файл: -.png
Png, 3.51 KB, 235×49
edit Find source with google Find source with iqdb
-.png
Файл: -.png
Png, 9.83 KB, 900×92
edit Find source with google Find source with iqdb
-.png

Есть одна проблема. Использую емаксклиент, так вот если им попытаться открыть файл который нельзя читать, то вместо ошибки, происходит пик 1, дальше я жму ^C и терминал ломается до перезапуска, перестает отображаться вводимый текст и перевод каретки, весь вывод отображается в одну строку, можно ли это исправить?
>> No.47468 Ответ
>>47318
У меня выводится сообщение об ошибке в таком случае. Какая версия emacs, открываются ли файлы которые можно читать?
>> No.47469 Ответ
>>47468
Читаемые файлы открываются. Если emacsclient -c, то ошибка выводится, а если emacsclient -t, то ломается терминал.
Версия 24.5.1
>> No.47470 Ответ
>> No.48089 Ответ
Файл: magit-400x400px.png
Png, 10.03 KB, 400×400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
magit-400x400px.png
Подайте автору магита, кто сколько может.
https://www.kickstarter.com/projects/1681258897/its-magit-the-magical-git-client
>> No.48855 Ответ
Не осталось ли у кого книги Д.Бушенко по elisp? В гугле нихрена нет...
>> No.48885 Ответ
>> No.48893 Ответ
>>48885
Спасибо.


No.47927 Ответ [Открыть тред]
Файл: tumblr_oppvh6XMAq1w6k0rko1_540.gif
Gif, 231.52 KB, 540×304 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tumblr_oppvh6XMAq1w6k0rko1_540.gif
Тред помощи начинающим свой долгий и тернистый путь в дебри программирования. А также необузданных оленей, код-мартышек, выбора ЯП и иных платиновых вещей.
Но в первую очередь всё-таки помощи новичкам. Всё, чтобы зашедший сюда в первый раз мог почувствовать себя как дома.
Главное - без фанатизма.

Предыдущий: >>46762
301 posts are omitted, из них 45 с файлами. Развернуть тред.
>> No.48842 Ответ
Файл: 148c52390af4dadab7b97d89e8d2b32a.jpg
Jpg, 413.08 KB, 904×852 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
148c52390af4dadab7b97d89e8d2b32a.jpg
Без шуток, c vim + g++ + gdb можно нормально жить и работать с С++? С вимом я более-менее разобрался, с gcc тоже проблем быть не должно, наверно, но вот дебаг с помощью гдб меня очень беспокоит.
Я им почти не пользовался и не знаю, что он может. Плюсы, это ведь не руби, в котором для отладки, по крайней мере мне пока что, достаточно pp. Было бы неплохо иметь возможность хотя бы знать состояние переменных, какой поинтер куда указывает и т.п. Хорошо бы, чтобы этим занимался дебаггер. Или труъ хардкор кодеры делают это с помощю printf()?
Просто не хочется очередную IDE наворачивать, тем более что есть все, что нужно, кроме дебаггера.
>> No.48843 Ответ
>>48842
> Просто не хочется очередную IDE
То есть тебе проще мучаться с кучей костыликов и разношерстного софта, чем с одним инструментом? Ну серьезно, умные люди специально для тебя стараются упростить процесс программирования, а ты нос воротишь.
>> No.48844 Ответ
>>48843
Мне приходится писать на разных языках, и если для каждого ставить по IDE у меня получится десять текстовых редакторов с разными хоткеями, настройками и всем остальным. Я раньше так и делал, но потом подумал, что это не дело.

Алсо, когда я последний раз писал на плюсах, около года назад, я так и не нашел IDE в которой было бы все как надо. Точнее нашел, но в какой-то момент она обновилась и у нее отвалился как раз дебаггер и, возможно, компилятор вместе с ним, не помню. Быстро это исправить не удалось, пришлась искать другую IDE.
>> No.48864 Ответ
Есть ли тут доброантон, которого я могу помучить нубскими вопросами на тему JS так, что он бы мне в течении нескольких часов мог ответить?
>> No.48865 Ответ
>>48864
Да сразу вопросы кидай.
>> No.48866 Ответ
>>48865
Тогджа лучше сразу в джаваскрипт-тред кину.
>> No.48886 Ответ
>>48844
> я так и не нашел IDE в которой было бы все как надо
MS Visual Studio Community Edition.
Нет, я серьезно, лучшая IDE сейчас. Еще бы рантаймы свои богомерзкие не пихала, вообще бы была идеальна.
>> No.48890 Ответ
Есть ли какие http-библиотеки (для любого мейнснтримного языка) или на крайняк никсовые соснольные тулзы, которые поддерживают многопоточную закачку файла с Range, как в старых даунлоад-менеджерах?
>> No.48891 Ответ
>>48886
> Visual Studio
> лучшая IDE
Не смеши мой Qt Creator.
>> No.48892 Ответ
>>48891
> Не смеши мой Qt Creator.
Они уже починили багу, что с их автосейвами, если внезапно произойдет пиздец, херятся все исходники?
А нормальную отладку тоже уже завезли?


No.43511 Ответ [Открыть тред]
Файл: 599716131.png
Png, 77.78 KB, 317×372 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
599716131.png
Предыдущий тред: >>39226
357 posts are omitted, из них 30 с файлами. Развернуть тред.
>> No.48618 Ответ
>>48617
Мм, ни разу такого не делал. Погуглил, GSL очень круто выглядит. Может чуть позже заморочусь, на сишарп опыт есть в принципе.
>> No.48619 Ответ
Файл: Безымяывынный.png
Png, 292.25 KB, 2646×1024 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Безымяывынный.png
>>48609
попробуй notepad++(просто блокнот с подсветной(ну на самом деле не просто но не суть)) и mingw или cygwin (наверно лучше cygwin, но у меня и то и то работает (а вообще какая между ними разница кто нить знает ?)). Ну и почитай в интернетике про GCC (про ключи -x -o -I и тд). Студию я и метровой палкой бы не советовал, у меня с ней неприятный личный опыт... удачки
>> No.48620 Ответ
>>48619
> Я скачал эклипс, долго разбирался в нем. Оказалось, что к нему нужен еще отдельно компилятор какой-то мингв или как его суку
Не, Notepad ему не подойдет.
>> No.48670 Ответ
>>48609
Используй GNU Emacs. Это лучший вариант.
>> No.48747 Ответ
Ищу парочку плюсоебов на разные проекты разных размеров и долгосрочности.

Первый: нужно знание реверсинга, алгоритмов шифрования, умение копипастить из декомпилятора иды про в вижал-студию так, чтобы собиралось и даже работало. З/п от 100000 руб в мес в зависимости от навыков. Вакансия резиновая, реверсеров и тех, кто нареверсенное будет воплощать в дллки надо много.

Второй: куте/плюсы/андроид. Да, все три вместе. Да, на плюсах и куте под андроид. Если такие извращенцы есть, то очень нужны еще вчера. Надо разработать прототип одной хреновины, плачу 100-200к в зависимости от всяких разных условий.
>> No.48754 Ответ
Файл: 1474966900_y1.jpg
Jpg, 71.73 KB, 700×528 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1474966900_y1.jpg
>>48747
> Ищу парочку плюсоебов на разные проекты разных размеров и долгосрочности.
>> No.48802 Ответ
Файл: Untitled.png
Png, 38.95 KB, 1456×676 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Untitled.png
Надеюсь я зашел туда, все-же "с" подобный язык.
Есть одна ардуина которая принимает данные через serial, хотя пожалуй это не важно, на картинке в левой части вывод а в правой то как serial plotter ардуиновой ide этот вывод истолковывает. Как можно сделать так что-бы вместо красной линии были значения по горизонтали, синяя осталась как есть, а после того как синяя дойдет до конца она опять начинала с начала а не продолжалась? serial plotter вообще предоставляет такие возможности? Наверное так себе вопрос задал, но надеюсь понятно.
Будет нище спектроанализатор, по вертикали децибелы а по горизонтали мегагерцы.
>> No.48887 Ответ
>>48747
Бамп.
Если вдруг есть люди, которые просто хотят писать на плюсах просто в рамках ТЗ, без всяких там KPI и прочей бюрократии, милости просим.
Любителям дрочить на технологии, паттерны и вообще вставать в позу "я щитаю правильным только так, а иначе я нихуя делать не буду!" не беспокоить.
Походу надо забить найти профессионалов и нанять за еду еще студентов и выпускников. Они хоть и тупые и нихуя не умеют, зато стараются, делают что им говорят и не выебываются.
>> No.48888 Ответ
Файл: 603x339_307715.jpg
Jpg, 31.71 KB, 603×339 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
603x339_307715.jpg
>>48887
Отправил резюме. Надеюсь, дойдёт.
>> No.48889 Ответ
>>48887
Плюсы знаю на уровне "никак", готов работать за нихуя целыми днями. Из языков знаю python и lua, понимаю ООП и есть пару говно-игр в консоли, но хочу выучить плюсы. Я подхожу?


No.48832 Ответ [Открыть тред]
Файл: pg087.png
Png, 23.35 KB, 475×349
edit Find source with google Find source with iqdb
pg087.png
Файл: pg072.png
Png, 56.58 KB, 515×709
edit Find source with google Find source with iqdb
pg072.png
Файл: 14686072547160.png
Png, 44.08 KB, 1024×450
edit Find source with google Find source with iqdb
14686072547160.png

Как понять ООП? Я просто вот не понимаю, зачем это нужно. Безотносительно языка программирования

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

Вот допустим есть public private protected модификаторы доступа т.е. ограничения на то, откуда какой метод можно вызывать. public можно вызывать отовсюду, private только для методов из числа public, а protected ... protected становится private при наследовании, притом наследований может быть 3 вида - тоже public, private, protected... Зачем всё это? Чем это лучше просто кучи функций, которые могут просто вызывать другие функции и работать с какими-то структурами?

Или вот методы, методы это функции, которые привязаны к конкретной структуре, но что если мне нужны методы, которые связывают два разных класса? Например это может код, переводящий из вектора в растровую картинку. Этот код должен быть методом класса для растровой или векторной картинки?
5 posts are omitted, из них -2 с файлами. Развернуть тред.
>> No.48838 Ответ
Файл: Cylinder_Head_Sector_ru.svg.png
Png, 260.88 KB, 1200×1293 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Cylinder_Head_Sector_ru.svg.png
>>48835
> Классический пример: у тебя есть функция copulate. В сишке ты будешь сам трахаться, плодя бесчисленные copulate(Bat), copulate(Tiger) и т.д., тогда как ООП позволяет тебе выделить общую базу и сделать единый copulate(Animal), где наследники Animal будут перенимать поведение базового класса.
Т.е. смысл ООП в том, чтоб не копипастить? И это новый уровень абстракции?
Новый уровень абстракции это например переход ASM -> C, когда уже не нужно оперировать регистрами и инструкциями процессора. ООП это скорее некий способ организации кода (теперь функции мы привязали к структурам, пишите вот так!), а не новый уровень абстракции.
> Ты не задаешь функции, функции хуйня. Ты задаешь поведение объектов класса. Ты берешь класс и говоришь, что у него есть такие-то методы, и в public методы может тыкнуться любой желающий, а в private только он сам и т.д.
>>48835
> Классический пример: у тебя есть функция copulate. В сишке ты будешь сам трахаться, плодя бесчисленные copulate(Bat), copulate(Tiger) и т.д., тогда как ООП позволяет тебе выделить общую базу и сделать единый copulate(Animal), где наследники Animal будут перенимать поведение базового класса.
Т.е. смысл ООП в том, чтоб не копипастить? И это новый уровень абстракции?
Новый уровень абстракции это например переход ASM -> C, когда уже не нужно оперировать регистрами и инструкциями процессора. ООП это скорее некий способ организации кода (теперь функции мы привязали к структурам, пишите вот так!), а не новый уровень абстракции.
> Ты не задаешь функции, функции хуйня. Ты задаешь поведение объектов класса. Ты берешь класс и говоришь, что у него есть такие-то методы, и в public методы может тыкнуться любой желающий, а в private только он сам и т.д.
А зачем ограничивать себя только таким дефолтным набором public-private-protected? Может ООП является частным случаем более общей парадигмы, т.е. идеи выставлять на что-то какие-то разрешения? Ну вот я приводил пример с контрактами, что одни функции могут там что-то вызывать, а другие не могут, но никакие объекты для этого не требуются, это просто выделение некоторого неймспейса функций и создание для них каких-то запретов/разрешений. Такие же запреты/разрешения можно определять относительно каких-нибудь структур, и это можно сделать намного более гибко, типа вот только функции из этого неймспейса могут работать вот с этими структурами, а вот функции из этого неймспейса могут работать с другими структурами, а еще какие-то функции могут и с теми и с теми структурами работать.
> Замечательная вещь: позволяет отсеять часть ошибок в логике еще на этапе компиляции. Точно так же часть ошибок можно отсеять с помощью правильной установки прав доступа (public-protected-private).
Я и не спорю, но на новую парадигму это не тянет. Это просто возможность ставить самому себе какие-то ограничения. И систему прав доступа можно сделать значительно более гибкой, чем это реализовано в ООП.
> Все просто: public_2 костыль и НИНУЖНО. Имеющихся прав доступа достаточно: это не непонятно какие неймспейсы с потолка, а именно что классы и описание того, кому и что с ними можно делать. По определению public - то, что доступно любому, а потому "запрет private вызывать public" - абсурд.
Ну почему же, вполне можно представить ситуацию, когда полезно сделать ограничения вида "функции из неймспейса №1 могут вызывать только функции из неймспейса №1 и №2, функции из неймспейса №2 могут вызывать только функции из неймспейса №2 и №3, функции №3 вызывают только №3 и №4 и.т.д."
Например представим, что у нас есть гипотетический компьютер с жестким диском с магнитными блинами, и жесткий диск своего контроллера не имеет (управление осуществляется центральным процессором). Есть ОС на этом компьютере, и нам надо создать файл и записать в него такие-то данные. Вот тут можно вводить некие слои с разделением прав. Когда некая программа из юзерспейса просит ОС создать такой-то файл и записать в него такие-то байтики, ядро передает драйверу файловой системы указание "создай такой-то файл и запиши в него то-то", драйвер ФС передает драйверу жесткого диска "запиши вот эти байтики вот туда-то, и вот эти байтики вот туда", при этом драйвер ФС ничего не знает про геометрию диска(дорожки, количество пластин), т.е. с точки зрения драйвера ФС, жесткий диск это просто большой массив из некоторых секторов, например секторов по 512 байт. Т.е. драйвер ФС общается с драйвером жесткого диска на уровне "запиши в тот сектор размером в 512 байт вот это" и "прочитай из того сектора размером в 512 байт и дай мне". В драйвере жесткого диска обращение на чтение/запись такого-то сектора транслируется по каким-то формулам, учитывающим скорость вращения блинов, угол поворота коромысла с магнитными головками, и напрямую управляет всем этим. Так вот, тут имеет смысл запретить обычной программе из юзерспейса обращаться к драйверу жесткого диска напрямую и говорить, в какие секторы что писать. Обычная программа не должна управлять поворотом коромысла с магнитными головками, менять скорость вращения двигателя и прочего (то, что делает драйвер ЖД). Драйвер файловой системы тоже не должен управлять напрямую поворотом коромысла, а только лишь просить у драйвера ЖД, чтобы он туда-то записал/прочитал. А сам драйвер жесткого диска совершенно точно не должен обращаться к каким-нибудь вышележащим функциям, например драйверу ЖД незачем обращаться к драйверу ФС типа "драйвер ФС, давай удали вот этот файл". Т.е. из более низкого уровня нет смысла вызывать более высокий уровень. В ООП private имеет право вызывать и private и public, там нельзя строить такие правила.
Такое можно без всякого ООП делать в чистом Си, разбив реализацию на несколько файлов и используя static функции.
Сообщение слишком длинное. Полная версия.
>> No.48839 Ответ
Давайте сделаем поправку, что ООП в том виде, в котором его задумывал Алан Кей, мало где реализован. Так что да, ООП в мейнстримовых языках больше влияет на организацию кода, чем претендует на новую парадигму.
Собственно говоря, ООП в C++ не реализует ничего такого, чего нельзя было бы написать в C. Да только делается это в плюсах удобнее и безопаснее.
>> No.48840 Ответ
>>48839
> Давайте сделаем поправку, что ООП в том виде, в котором его задумывал Алан Кей, мало где реализован.
Это связано с тем, что каноничное ООП оказалось никому не нужным? Или оно было слишком сложным в реализации? Или почему?
>> No.48841 Ответ
>>48840
Без понятия. Наверное, все как всегда - теория столкнулась с практикой и изменилась.
Вот есть хорошая статья про историю идеи - https://medium.com/@atherlangga/retracing-original-object-oriented-programming-f8b689c4ce50
>> No.48847 Ответ
>>48840
Каноничное ПО никому не нужно. Тебе же пофиг, как это работает. Вот и всем тоже пофиг. А когда всем пофиг, можно "хуяк-хуяк - и в продакшон". При такой бизнес-парадигме популярными становятся языки, на которых "хуяк-хуяк" можно безопаснее и удобнее.
Если тебе действительно интересно, чем может быть полезна объектно-ориентированная парадигма, а не как её подобием обмазали наиболее популярные языки, почитай про CLOS. Если понравится, можешь ещё MOP навернуть и изучить понятие интроспекция в контексте ЯП. Если всё ещё не обретёшь понимания, что такое ООП, ну значит не готов, не нужно оно тебе.
>> No.48849 Ответ
>>48838
> Т.е. смысл ООП в том, чтоб не копипастить? И это новый уровень абстракции?
Ты опять смотришь на функции вместо того, чтобы смотреть на классы. Отсутствие тупого копипаста - лишь вытекающее из мышления на объектном уровне плюшка.
> Новый уровень абстракции это например переход ASM -> C, когда уже не нужно оперировать регистрами и инструкциями процессора. ООП это скорее некий способ организации кода (теперь функции мы привязали к структурам, пишите вот так!), а не новый уровень абстракции.
А здесь не нужно оперировать лоу-левел функциями, а нужно оперировать интерфейсами.
> А зачем ограничивать себя только таким дефолтным набором public-private-protected?
Потому что этого достаточно. Снова, не смотри на какие-то дурацкие неймспейсы как приложение к функциям. Мысли на уровне классов и интерфейсов. Есть только интерфейсы, доступные всем, недоступные никому кроме себя и недоступные никому кроме себя и потомков.
> Ну вот я приводил пример с контрактами, что одни функции могут там что-то вызывать, а другие не могут, но никакие объекты для этого не требуются, это просто выделение некоторого неймспейса функций и создание для них каких-то запретов/разрешений.
Мерзкие сишные костыли. Это называется методы работы одних объектов с другими объектами, и делается через public-protected-private, наследование и иногда friendование.
> И систему прав доступа можно сделать значительно более гибкой, чем это реализовано в ООП.
>>48838
> Т.е. смысл ООП в том, чтоб не копипастить? И это новый уровень абстракции?
Ты опять смотришь на функции вместо того, чтобы смотреть на классы. Отсутствие тупого копипаста - лишь вытекающее из мышления на объектном уровне плюшка.
> Новый уровень абстракции это например переход ASM -> C, когда уже не нужно оперировать регистрами и инструкциями процессора. ООП это скорее некий способ организации кода (теперь функции мы привязали к структурам, пишите вот так!), а не новый уровень абстракции.
А здесь не нужно оперировать лоу-левел функциями, а нужно оперировать интерфейсами.
> А зачем ограничивать себя только таким дефолтным набором public-private-protected?
Потому что этого достаточно. Снова, не смотри на какие-то дурацкие неймспейсы как приложение к функциям. Мысли на уровне классов и интерфейсов. Есть только интерфейсы, доступные всем, недоступные никому кроме себя и недоступные никому кроме себя и потомков.
> Ну вот я приводил пример с контрактами, что одни функции могут там что-то вызывать, а другие не могут, но никакие объекты для этого не требуются, это просто выделение некоторого неймспейса функций и создание для них каких-то запретов/разрешений.
Мерзкие сишные костыли. Это называется методы работы одних объектов с другими объектами, и делается через public-protected-private, наследование и иногда friendование.
> И систему прав доступа можно сделать значительно более гибкой, чем это реализовано в ООП.
Нельзя. Есть объект, который не знает ничего об окружающем мире кроме того, что от него могут унаследоваться. Все возможные виды доступа к его интерфейсам - public, protected, private.
> Ну почему же, вполне можно представить ситуацию, когда полезно сделать ограничения вида "функции из неймспейса №1 могут вызывать только функции из неймспейса №1 и №2, функции из неймспейса №2 могут вызывать только функции из неймспейса №2 и №3, функции №3 вызывают только №3 и №4 и.т.д."
Костыли. Используй классы, Люк.
> драйвер ФС передает драйверу жесткого диска "запиши вот эти байтики вот туда-то, и вот эти байтики вот туда", при этом драйвер ФС ничего не знает про геометрию диска(дорожки, количество пластин), т.е. с точки зрения драйвера ФС, жесткий диск это просто большой массив из некоторых секторов, например секторов по 512 байт. Т.е. драйвер ФС общается с драйвером жесткого диска на уровне "запиши в тот сектор размером в 512 байт вот это" и "прочитай из того сектора размером в 512 байт и дай мне".
Быдлокод с магическими числами. ФС дергает общий интерфейс всех драйверов ЖД "Записать N-байт". Реализация этого интерфейса, представляющая конкретный HAL для конкретного диска, разбивает файл на куски в зависимости от параметров диска, формирует блок метаданных с последовательностью адресов этих блоков, записывает это все и возвращает драйверу ФС файловый дескриптор блока метаданных. Вуаля, все работает на интерфейсах ООП-стайл.
> Так вот, тут имеет смысл запретить обычной программе из юзерспейса обращаться к драйверу жесткого диска напрямую и говорить, в какие секторы что писать.
Вообще не задача программы или ЯП. Это задача ОС заделать разделение на юзерспейс и кернелспейс. В юзерспейсе доступны интерфейсы для записи и чтения файлов, опять же ООП-стайл.
> Такое можно без всякого ООП делать в чистом Си, разбив реализацию на несколько файлов и используя static функции.
Разбивать на файлы все равно придется, очевидно. А всего-то нужно - использовать нужные интерфейсы, которые можно реализовывать для любого устройства. Твою же идею ждет инстант пиздец, стоит только подключить какой-нибудь ССД ил рамдиск или дискетку вместо ЖД, лол.
Сообщение слишком длинное. Полная версия.
>> No.48850 Ответ
>>48849
Спор слепого с глухим.
Как ООП избавляет от копипасты и при чём тут она вообще? Решения типа copulate(Bat), copulate(Tiger) можно сгенерировать независимо от парадигмы. Ни ООП, ни декларативное, ни какое-либое другое программирование не может запретить писать говнокод или копипастить.
Раньше программы писали просто перечислением команд, потом стали выделять куски кода в подпрограммы, процедуры, функции - это уже начала инкапсуляции и полиморфизма. Затем стали объединять разные встроенные типы в структуры, а функционал, работающий с такими комбинированными типами данных - всё так же в процедуры. Почему так стали делать? Потому что программы становились больше, сложнее, возникла необходимость структурировать код, чтобы его было легко анализировать, допиливать. Разные подходы к организации кода были вызваны сильно различающимися типами задач, костылей мышления погромистов и породили необходимость в расслоении на языки с разными парадигмами. Но такого чтобы парадигма лишала возможности говнокодить не было никогда. Ну разве что вот нейронные сети, практически исключив человека из, собственно, процесса формирования итоговой системы, могут как-то помочь с этим, но это уже не о парадигмах речь.
>>48849
Спор слепого с глухим.
Как ООП избавляет от копипасты и при чём тут она вообще? Решения типа copulate(Bat), copulate(Tiger) можно сгенерировать независимо от парадигмы. Ни ООП, ни декларативное, ни какое-либое другое программирование не может запретить писать говнокод или копипастить.
Раньше программы писали просто перечислением команд, потом стали выделять куски кода в подпрограммы, процедуры, функции - это уже начала инкапсуляции и полиморфизма. Затем стали объединять разные встроенные типы в структуры, а функционал, работающий с такими комбинированными типами данных - всё так же в процедуры. Почему так стали делать? Потому что программы становились больше, сложнее, возникла необходимость структурировать код, чтобы его было легко анализировать, допиливать. Разные подходы к организации кода были вызваны сильно различающимися типами задач, костылей мышления погромистов и породили необходимость в расслоении на языки с разными парадигмами. Но такого чтобы парадигма лишала возможности говнокодить не было никогда. Ну разве что вот нейронные сети, практически исключив человека из, собственно, процесса формирования итоговой системы, могут как-то помочь с этим, но это уже не о парадигмах речь.
В плюсах ничего принципиально нового не вводится, никаких волшебных механизмов, исключающих говнокод. Классы - всё те же супер-типы на стероидах. Для каждой лексемы найдётся оправдание, каждая нужна для чего-то, иначе её не впилили бы. И это всё, конечно, работает, ты, конечно, можешь думать классами, наследованиями, разграничением прав для членов класса, пояснять за виртуальные функции и считать шаблоны - венцом программистской мысли. Раньше был молоток, пила, рубанок, теперь - молоток с выдвижной пилой и возможностью прикрутить сколько угодно рубанков, причём у всего этого одна ручка (удобно), и теперь ты не можешь пораниться, потому что везде наклейки "ОСТОРОЖНО!". В нормальном мире ручной инструмент уходит в прошлое, совершенствуются и материалы, и технологии строительства, и вообще автоматизация процесса даёт человеку больше свободного времени на осмысление происходящего.
Сообщение слишком длинное. Полная версия.
>> No.48852 Ответ
>>48849
> Потому что этого достаточно. Снова, не смотри на какие-то дурацкие неймспейсы как приложение к функциям. Мысли на уровне классов и интерфейсов. Есть только интерфейсы, доступные всем, недоступные никому кроме себя и недоступные никому кроме себя и потомков.
Достаточно для чего? Если говорить о том, чего достаточно, то и обычных функций + структур вполне достаточно, а все эти public-private-protected ничего кардинально не меняют. Если же public-private-protected это что-то нужное, то почему именно на этом остановились, почему б не вводить какие-то новые права доступа?
> Мерзкие сишные костыли. Это называется методы работы одних объектов с другими объектами, и делается через public-protected-private, наследование и иногда friendование.
> Нельзя. Есть объект, который не знает ничего об окружающем мире кроме того, что от него могут унаследоваться. Все возможные виды доступа к его интерфейсам - public, protected, private.
Зачем ты говоришь догмами? Язык программирования и предоставляемые им абстракции это не какие-то незыблемые законы физики, вроде закона сохранения энергии, это просто придуманная людьми хрень, которая при желании может быть улучшена/переделана.
> > Ну почему же, вполне можно представить ситуацию, когда полезно сделать ограничения вида "функции из неймспейса №1 могут вызывать только функции из неймспейса №1 и №2, функции из неймспейса №2 могут вызывать только функции из неймспейса №2 и №3, функции №3 вызывают только №3 и №4 и.т.д."
> Костыли. Используй классы, Люк.
Я через классы не могу создавать сложный набор правил доступа, там только public, protected, private.
>>48849
> Потому что этого достаточно. Снова, не смотри на какие-то дурацкие неймспейсы как приложение к функциям. Мысли на уровне классов и интерфейсов. Есть только интерфейсы, доступные всем, недоступные никому кроме себя и недоступные никому кроме себя и потомков.
Достаточно для чего? Если говорить о том, чего достаточно, то и обычных функций + структур вполне достаточно, а все эти public-private-protected ничего кардинально не меняют. Если же public-private-protected это что-то нужное, то почему именно на этом остановились, почему б не вводить какие-то новые права доступа?
> Мерзкие сишные костыли. Это называется методы работы одних объектов с другими объектами, и делается через public-protected-private, наследование и иногда friendование.
> Нельзя. Есть объект, который не знает ничего об окружающем мире кроме того, что от него могут унаследоваться. Все возможные виды доступа к его интерфейсам - public, protected, private.
Зачем ты говоришь догмами? Язык программирования и предоставляемые им абстракции это не какие-то незыблемые законы физики, вроде закона сохранения энергии, это просто придуманная людьми хрень, которая при желании может быть улучшена/переделана.
> > Ну почему же, вполне можно представить ситуацию, когда полезно сделать ограничения вида "функции из неймспейса №1 могут вызывать только функции из неймспейса №1 и №2, функции из неймспейса №2 могут вызывать только функции из неймспейса №2 и №3, функции №3 вызывают только №3 и №4 и.т.д."
> Костыли. Используй классы, Люк.
Я через классы не могу создавать сложный набор правил доступа, там только public, protected, private.
> Быдлокод с магическими числами. ФС дергает общий интерфейс всех драйверов ЖД "Записать N-байт".
Винчестер тебе 1 байт записать не может, там не побайтная адресация (ты б еще попросил его один бит записать, лол). Он прочитает 512 байт (или сколько у него там размер кластера) в буфер, изменит там 1 байт и потом обратно запишет 512 байт. Если ты вот так побайтно будешь писать в некий файл данные по одному байту, это будет нерационально. Лучше пусть это буферизуется, но буферизоваться это может на разных уровнях, и желательно чтобы ФС знала о том, какого размера кластер винчестера, и чтобы ФС была отформатирована соответствующим образом. Абстракция "записать N байт" протекает.
> Вуаля, все работает на интерфейсах ООП-стайл.
> В юзерспейсе доступны интерфейсы для записи и чтения файлов, опять же ООП-стайл.
ООП-стайл, ООП-стайл, ООП-стайл... идея разделения чего-либо на интерфейс и реализацию возникла ДО появления т.н. ООП. Что ты называешь ООП-стайлом?
> Твою же идею ждет инстант пиздец, стоит только подключить какой-нибудь ССД ил рамдиск или дискетку вместо ЖД, лол.
Дискеты и современная флеш-память тоже читается-пишется кусками в сколько-то байт, лол.

>>48850
> В плюсах ничего принципиально нового не вводится, никаких волшебных механизмов, исключающих говнокод. Классы - всё те же супер-типы на стероидах. Для каждой лексемы найдётся оправдание, каждая нужна для чего-то, иначе её не впилили бы. И это всё, конечно, работает, ты, конечно, можешь думать классами, наследованиями, разграничением прав для членов класса, пояснять за виртуальные функции и считать шаблоны - венцом программистской мысли. Раньше был молоток, пила, рубанок, теперь - молоток с выдвижной пилой и возможностью прикрутить сколько угодно рубанков, причём у всего этого одна ручка (удобно), и теперь ты не можешь пораниться, потому что везде наклейки "ОСТОРОЖНО!".
Ну так вот я и говорю, плюсовые классы это такие недоконтракты, типа "public можно вызывать, а вот private можно только из public". Когда я говорю "а зачем только public-private-protected, почему б не сделать более общий механизм", мне он отвечает "так неположено, неканонично, костыли".
Наследование это просто такой инструмент для борьбы с копипастой, недокодогенерации (намного лучше с этим делом обстоит в лиспе, где код = данные).
Зачем использовать более узкие (вероятно, намеренно суженные) механизмы, и почему более общие методы это что-то плохое.
Сообщение слишком длинное. Полная версия.
>> No.48853 Ответ
>>48852
> Достаточно для чего?
Для реализации ООП-подхода. В пределе все есть объект какого-то класса.
> Зачем ты говоришь догмами? Язык программирования и предоставляемые им абстракции это не какие-то незыблемые законы физики, вроде закона сохранения энергии, это просто придуманная людьми хрень, которая при желании может быть улучшена/переделана.
Придумай другой тип доступа, кроме public, protected и private. Не неймспейсики, а именно тип доступа к классу, про который известно только то, что есть еще и другие классы, и что от него можно наследоваться.
> Я через классы не могу создавать сложный набор правил доступа, там только public, protected, private.
Значит, ты не умеешь программировать в ООП. Гугли, как делать интерфейсы.
> Винчестер тебе 1 байт записать не может, там не побайтная адресация (ты б еще попросил его один бит записать, лол). Он прочитает 512 байт (или сколько у него там размер кластера) в буфер, изменит там 1 байт и потом обратно запишет 512 байт. Если ты вот так побайтно будешь писать в некий файл данные по одному байту, это будет нерационально. Лучше пусть это буферизуется, но буферизоваться это может на разных уровнях, и желательно чтобы ФС знала о том, какого размера кластер винчестера, и чтобы ФС была отформатирована соответствующим образом. Абстракция "записать N байт" протекает.
Наоборот, именно абстракция и решает.
>>48852
> Достаточно для чего?
Для реализации ООП-подхода. В пределе все есть объект какого-то класса.
> Зачем ты говоришь догмами? Язык программирования и предоставляемые им абстракции это не какие-то незыблемые законы физики, вроде закона сохранения энергии, это просто придуманная людьми хрень, которая при желании может быть улучшена/переделана.
Придумай другой тип доступа, кроме public, protected и private. Не неймспейсики, а именно тип доступа к классу, про который известно только то, что есть еще и другие классы, и что от него можно наследоваться.
> Я через классы не могу создавать сложный набор правил доступа, там только public, protected, private.
Значит, ты не умеешь программировать в ООП. Гугли, как делать интерфейсы.
> Винчестер тебе 1 байт записать не может, там не побайтная адресация (ты б еще попросил его один бит записать, лол). Он прочитает 512 байт (или сколько у него там размер кластера) в буфер, изменит там 1 байт и потом обратно запишет 512 байт. Если ты вот так побайтно будешь писать в некий файл данные по одному байту, это будет нерационально. Лучше пусть это буферизуется, но буферизоваться это может на разных уровнях, и желательно чтобы ФС знала о том, какого размера кластер винчестера, и чтобы ФС была отформатирована соответствующим образом. Абстракция "записать N байт" протекает.
Наоборот, именно абстракция и решает.
Мне плевать, как там внутри все устроено, какой размер кластера и т.д. Я хочу создать файл в 1 байт и сохранить его на диск. Ты будешь лихорадочно искать подходящую функцию, вручную создавать буфер и наполнять его нулями? Это жопорукость. Ты вызовешь метод и передашь файл в 1 байт, а как там внутри реализовано, что он там прочитает и запишет, не важно. Ты дернешь интерфейс записи N байт, а проверки на N < размера кластера должны быть скрыты внутри и как-то там магически решаться, вплоть до буферизаций и дрочки вприсядку.
> идея разделения чего-либо на интерфейс и реализацию возникла ДО появления т.н. ООП.
Интересно, как ты ее реализуешь на голом С. Без указателей на void.
> Дискеты и современная флеш-память тоже читается-пишется кусками в сколько-то байт, лол.
Все пишется кусками минимум в 1 байт, лол.
Сообщение слишком длинное. Полная версия.
>> No.48863 Ответ
>>48832

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

> > вот допустим есть public private protected модификаторы доступа
> > наследований может быть 3 вида - тоже public, private, protected...
> > Зачем всё это?
Тебе не за чем. А если бы ты кодил хотя бы вдвоем, то быстро бы понял, что некоторые вещи другой человек видеть, наследовать и тд не должен.

> > Этот код должен быть методом класса для растровой или векторной картинки?
Не, это должно быть что-то третье.


No.48777 Ответ [Открыть тред]
Файл: Leezonka.jpg
Jpg, 593.57 KB, 1920×1080 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Leezonka.jpg
Кое-как выучил Python по книге Мэтиза и разобрался с ООП по статьям из сети. Недавно начал читать книгу по алгоритмам и параллельно почитывать "C++. Базовый курс". Так же пытаюсь разобраться с Lua и фреймворком LÖVE2D, получается пока что не очень, скорее всего придётся читать книгу по Lua, чтобы лучше вникнуть.
Но знаете что? Я не написал ещё ни одной программы, ни одной. Я писал различные формулы и недокалькуляторы в консоли, заливал фон синим цветом в LÖVE и всё.
Я не понимаю что делать дальше. Продолжать читать книги по языкам, алгоритмам и CS или же идти что-то писать? Помогите, аноны.
10 posts are omitted. Развернуть тред.
>> No.48807 Ответ
ОП здесь. здесь вас в курсе, аноны. Три дня писал текстовый(в терминале) блэкджек на питоне. Сегодня(третий день) добавил новые функции, оптимизировал и исправил код. Как же это ахуенно, создавать что-то, что-то что работает. В коде куча костылей, велосипед на велосипеде, но всё работает. Правда я пару багов нашёл, при сложении двух тузов, но получить такую комбинацию сложно, позже исправлю. Нужно эту игру ещё напильником допилить и все будет так, как я хотел. Сейчас у меня версия без фишек но с дилером у которого игровой ИИ, так что после допиливания сделаю вторую версию с фишками и шлюхами. После этого начну делать гуевый блэкджек, но уже на Луа с фреймворком Love2D. Логика ведь есть, осталось только на другой язык переписать и добавить методы. Единственное что было скучноватым, так это вбивать в словарь 52 карты, а точнее их значения и иконки.
>> No.48808 Ответ
>>48807
Держу вас в курсе*

быстрофикс
>> No.48809 Ответ
Файл: Безымянный.png
Png, 7.87 KB, 639×182 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Безымянный.png
>>48807
> вбивать в словарь 52 карты
>> No.48815 Ответ
>>48807
ОП снова здесь! Сегодня доделал ещё одну игру. Крестики-нолики в терминале. Но эта игра уже не текстовая, да она в терминале, но там больше визуала, чем текста. Хотя всё так же делается через команды, но зато оформления в разы больше и всё теперь красиво. Пока что сделал только режим для двух игроков, игровой ИИ реализую позже. Время от времени ковыряю Löve2D и пытаюсь придумать какую-то ахуенную казуальную игру в один клик, без всяких сложных движений, джойстиков и так далее, просто кликая на экран, что-то будет психоделическое, резкое, рандомное и всё пиздец как будет зависеть от реакции, в общем, пока что думаю над этим. Так же в своих новорожденных крестиках-ноликах нашёл баг, даже несколько. Пиздец, я не понимаю блядь почему, но исправить это реально, просто нужно оптимизировать код в некоторых местах и упростить его. А ещё появилось острое желание начать пилить сайт-портфолио со своими работами, но так как у меня есть ровно нихуя, то пока что это будет только как концепт в моей голове. Просто хочется где-то реализовать свои знания верстальщика, вот эти все бутстрапоны и ссассы, гриды и семантика хтмлпять. Не зря ведь когда-то учил, хоть и заебало почти сразу же.

>>48809
Спасибо, анон. Только там у меня другая немного ситуация была, это бы помогло ровно никак. Но всё равно спасибо, когда-то точно пригодится.
>> No.48817 Ответ
>>48815
> пытаюсь придумать какую-то ахуенную казуальную игру в один клик, без всяких сложных движений, джойстиков и так далее, просто кликая на экран, что-то будет психоделическое, резкое, рандомное и всё пиздец как будет зависеть от реакции, в общем, пока что думаю над этим
Для начала реализуй водопровод.
>> No.48819 Ответ
>>48777
> > Кое-как выучил Python по книге Мэтиза
Супер, используй теперь. Тебе на самом деле пригодится максимум треть от того, что ты прочитал. Думаю, даже меньше. Одна десятая.
> > и разобрался с ООП по статьям из сети.
Да там ничего сложного и нет. В принципе, если бы ты писал без ООП, ты все равно к нему бы пришел рано или поздно. Т.к. тебе бы чего-то не хватало. Самой абстракции.
Когда-нибудь бы ты рано или поздно пришел бы к наследованию и всему такому. Совет, не гони телегу впереди лошади.
> > Недавно начал читать книгу по алгоритмам
Зачем она тебе, скажи. Все базовые алгоритмы уже давно реализованы в стандартных библиотеках. Бери и используй собственно.
> > параллельно почитывать "C++. Базовый курс
Блин, ну ты же не скорочтение тренируешь. Вообще, чем тебя питон не устраивает?
Да и вообще. Если хочешь делать игры, возьми уже готовый движок, например, юнити, и делай игру там. В чем проблемы.
> > Так же пытаюсь разобраться с Lua и фреймворком LÖVE2D, получается пока что не очень, скорее всего придётся читать книгу по Lua, чтобы лучше вникнуть.
Зачем тебе еще lua, и еще какой-то фреймворк. Таким темпом ты только преподавать сможешь, серьезно.
> > Продолжать читать книги по языкам, алгоритмам и CS или же идти что-то писать? Помогите, аноны.
Можешь читать, если тебе это понравилось. Почему бы и нет. Рекомендую Стивена Кинга.
>> No.48828 Ответ
Файл: 1508329114143025116.jpg
Jpg, 191.71 KB, 700×924 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1508329114143025116.jpg
Пацантрэ, а есть вообще идеальные языки с идеальными либами\платформами?
На что не глянешь
то либа - нестандартизированное или неполноценное говно
то костыли вроде кортежей которые на самом деле Pair<T1, T2>, или невозможности писать try catch finally как один блок
то дженерики примитивные донельзя
то язык интерпретируемый и медленнее чем пыха
то IDE нормальных нет и на языке возможно писать если ты адепт vim
то язык перегружен донельзя. Не функционалом, а синтаксисом с миллионами скобок, отступов, необходимой явностью где надо и не надо и пр
Что делать? Смотрю на язык, вроде нравится, а через пару дней написания тестовых программ видишь в нём есть косяки и отбивается желание писать на этом говне.
inb4 пили свой язык
>> No.48857 Ответ
>>48828
> а есть вообще идеальные языки с идеальными либами\платформами?
Нет. Есть только большее говно и меньшее говно. И то не в объективном смысле, а в зависимости от вкуса принюхивающегося.
> inb4 пили свой язык
Не надо. Так ты только увеличишь количество говна.
>> No.48858 Ответ
>>48815
Прошло достаточно дохуя времени, но ОП снова здесь. Я знаю, что всем похуй, но я всё равно буду сюда писать. Что я сделал за эти дни? Во-первых, выпустил дополнение к своему первому проекту — блэкджек. Это что-то вроде DLC, но по факту является отдельной игрой. Я бы их связал и даже связывал, но тонна кода дала мне понять минусы своей архитектуры, так что пока так всё и будет. Кроме того, поправил некоторые ошибки, улучшил ИИ дилера и ещё всякие плюшки. Во-вторых, в крестиках-ноликах пофиксил некоторое говно и визуал подправил. В-третьих, пересоздал все свои репозитории и теперь все коммиты делаю через консоль, так удобнее и пизже. В-четвёртых, написал свой калькулятор на Kivy. Вот только вот в чём говно, гуй мой, часть логики моя, но по факту всё за меня сделал гугл, туториалы и функция eval(), ебать меня в рот. Что есть по итогу сейчас? Кое-какие знания скриптовых языков, ну и там по мелочи дальше. Решил теперь идти в то, что и хотел с самого начала — Unreal Engine 4 + C++. Нашёл ахуенный канал на ютубе с примерами и уроками, буду разбираться с этим говном 2 месяца фул тайм. Ну а пока что готовлюсь к сессии, возможно даже(если будут свободные места) переберусь на адекватную специальность в своей шараге(коллЭдж), на инженера ПО, а если нет, то так и буду дальше пинать хуи на своём телекоме, ненавижу его.
>> No.48859 Ответ
Файл: 13785791129708.jpeg
Jpeg, 24.50 KB, 450×292 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
13785791129708.jpeg
>>48858
> по факту всё за меня сделал гугл, туториалы и функция eval()


No.33881 Ответ [Открыть тред]
Файл: vim-shortcuts-dar...
Png, 116.56 KB, 2560×1600
edit Find source with google Find source with iqdb
vim-shortcuts-dark_2560x1600.png
Файл: vim_cheat_sheet_f...
Png, 1791.61 KB, 3301×2550
edit Find source with google Find source with iqdb
vim_cheat_sheet_for_programmers_print.png

Обещал про Vim написать. Ну вот собсна и написал.

Итак. Для начала поговорим о том, кому он не нужен. Ненужен он в самую первую очередь тем, кто не умеет в слепую десятипальцевую печать. Для таких людей vim буде каторгой. Посему данной категории людей советую либо забить на это дело, либо начать развивать слепую печать. Благо навык полезный. Можно гуглить например очевидную stamina и т.д. Вторая категория людей, которым не нужен сабж, это фанаты emacs по очевидным причинам. Кроме того не очень желательно изучать для виндопользователей. Ибо может быть черевато переходом на linux в конечном итоге, лол.

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

Ок. Где взять? Для линупсов достаточно установить из пакетного менеджера очевидный пакет под именем vim sudo apt-install vim для бубунты, а остальные и сами разберутся. Для винды можно пользовать ссылочку ftp://ftp.vim.org/pub/vim/pc/gvim74.exe

Скачали, запустили. Ну и? Где вся няшнота то?
Объясняю только самые основы:
  • выход без сохранения точнее закрытие файла при помощи :q!
  • есть несколько режимов работы. Основные: "нормальный", редактирование, командный, выделение.
  • передвижение по файлу при помощи клавиш h j k l это соответственно влево, вниз, вверх, вправо.
  • для собсна редактирования можно нажать например i
Далее находим vimtutor и проходим его. Он ответит на остальные вопросы. Для линупсов vimtutor ru в консольке. Для винды должно быть гхдетоу в районе меню пуск. Хотя шут его знает. Потом изучаем и печатаем на бумажку или ставим в качестве обойки воон те картинки, что в комплекте с постом идут.
Обещал про Vim написать. Ну вот собсна и написал.

Итак. Для начала поговорим о том, кому он не нужен. Ненужен он в самую первую очередь тем, кто не умеет в слепую десятипальцевую печать. Для таких людей vim буде каторгой. Посему данной категории людей советую либо забить на это дело, либо начать развивать слепую печать. Благо навык полезный. Можно гуглить например очевидную stamina и т.д. Вторая категория людей, которым не нужен сабж, это фанаты emacs по очевидным причинам. Кроме того не очень желательно изучать для виндопользователей. Ибо может быть черевато переходом на linux в конечном итоге, лол.

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

Ок. Где взять? Для линупсов достаточно установить из пакетного менеджера очевидный пакет под именем vim sudo apt-install vim для бубунты, а остальные и сами разберутся. Для винды можно пользовать ссылочку ftp://ftp.vim.org/pub/vim/pc/gvim74.exe

Скачали, запустили. Ну и? Где вся няшнота то?
Объясняю только самые основы:
  • выход без сохранения точнее закрытие файла при помощи :q!
  • есть несколько режимов работы. Основные: "нормальный", редактирование, командный, выделение.
  • передвижение по файлу при помощи клавиш h j k l это соответственно влево, вниз, вверх, вправо.
  • для собсна редактирования можно нажать например i
Далее находим vimtutor и проходим его. Он ответит на остальные вопросы. Для линупсов vimtutor ru в консольке. Для винды должно быть гхдетоу в районе меню пуск. Хотя шут его знает. Потом изучаем и печатаем на бумажку или ставим в качестве обойки воон те картинки, что в комплекте с постом идут.

Это было сверхкраткое введение. А теперь мы будем обмазыватся плугинками и всячески допиливать редактор до удобоваримого состояния. Для начала открываем .vimrc или _vimrc (для венды). Это конфигурационный файлег. Да, да, господа виндузятники. Ни каких окошечек с настроечками. Только хардкор.
По поводу настроечек рекомендую загуглить самомуа лучше почитать маны. Примеры: http://dimio.org/cgi-bin/bps/hlghtsrc/sourcehl.cgi?d=conf&s=vimrc&l=vim http://pastebin.com/jy4a3pE5 http://pastebin.com/paPWQ5fE http://pastebin.com/V3GdD38s Тысячи их.

Однако мы переходим к самому интересному. Доведём до ума сабж при помощи плугинок. Ибо без них vim уныл. Для начала нужно установить пакетный менеджер. Рекомендую либо Vundle либо NeoBundle. Думаю сами сможете загуглить их. К ним идут инструкции. Тож сами читнёте.

Самые полезниньки плагины можно найти там http://vim.wikia.com/wiki/Use_Vim_like_an_IDE

Отдельно упомяну следующие:
NERDTree добавляет древо файлов.
bufexplorer даёт удобную навигацию по буферам.
Вот кстати о буферах, окнах и табах в виме. Вот открыли вы один файлег, а потом, не закрывая первый, открыли второй. Можно потом переключаться между этими файлами. А можно их в одном окне одновременно открыть. Подробнее об том читнуть в справке или например в http://habrahabr.ru/post/28572/ http://habrahabr.ru/post/102373/
Vim Powerline раскрашивает статусную строку.
ColorSamplerPack набор тем оформления.

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

Можно ещё читнуть напоследок http://habrahabr.ru/post/176187/

Ну пока всё. Спрашивайте свои ответы. Ато может я чего забыл ненароком.
Сообщение слишком длинное. Полная версия. 203 posts are omitted, из них 39 с файлами. Развернуть тред.
>> No.48671 Ответ
А есть ли гайд для мягкого введения вим в обычного казуальшика?
>> No.48676 Ответ
>>48671
vimtutor
А потом чтение документации и статей в инете
>> No.48702 Ответ
Файл: cover.jpg
Jpg, 16.33 KB, 330×483 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
cover.jpg
>>48671
Этот гайд хорошо зашёл
>> No.48703 Ответ
>>48613
> и то что два редактора ничем не отличаются
Они настолько отличаются, что это утверждение (маркированное "как говорят), говорит об абсолютном дилетантстве и некомпетентности этих говорящих. И даже Evil mode не делает GNU Emacs чем-то похожим на Vim, кроме как сочетаниями клавиш.
>> No.48793 Ответ
>>48703
> И даже Evil mode не делает GNU Emacs чем-то похожим на Vim, кроме как сочетаниями клавиш.
Почему нет?
>> No.48799 Ответ
>>48793
Потому что evil mode ничего, кроме vi-подобных сочетаний клавиш, к емаксу не добавляет. Очевидно же.

Emacs и vi, вообще, мне кажется некорректным сравнивать. Vi -- текстовый редактор (и даже vim -- всего лишь улучшенный vi). Emacs же -- платформа для создания текстоориентированных приложений. В комплекте с которой уже идёт небольшая кучка этих приложений, среди которых и текстовый редактор.
>> No.48845 Ответ
Файл: proxy.duckduckgo.com.jpeg
Jpeg, 92.20 KB, 1200×644 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
proxy.duckduckgo.com.jpeg
Использовать стрелочки для навигации в режиме вставки/замены? Если нет, то как быть? Выходить в нормальный режим, перемещать курсор и входить обратно в нужный?
>> No.48846 Ответ
>>48845
Второе. У вима мильйон комбинаций для всяких перемещений, так что выйдет быстрее, чем дрочить стрелочки.
Но сразу не получится, конечно.
>> No.48848 Ответ
>>48846
Понял. Стрелочки отключил.
>> No.48854 Ответ
>>48848
Я, когда вимом пользовался, вообще выработал у себя привычку любой законченный кусок ввода на автомате завершать нажатием на Esc (конечно, Esc надо перебиндить поближе для этого).

> Стрелочки отключил.
А это зря, наверное. Как будешь перемещаться по командной строке вима (которая по ':') и по её истории? Вим в этом смысле неконсистентен -- перемещаться в командной строке теми же командами, что и в основном окне редактора, невозможно, это тебе не емакс. Придётся либо к стрелочкам тянуться, либо искать специальные комбинации в help'е.


No.27510 Ответ [Открыть тред]
Файл: 200px-NET_h_rgb_2...
Png, 17.12 KB, 200×49
edit Find source with google Find source with iqdb
200px-NET_h_rgb_2.png
Файл: 371px-C_sharp.svg...
Png, 6.26 KB, 371×254
edit Find source with google Find source with iqdb
371px-C_sharp.svg.png

Здесь будет ветка обсуждения .net и C#.
И сразу вопрос: какой встроенный класс в C# реализует массив с обращением по индексу за О(1), в котором при этом можно было бы добовлять в конец элементы(аналог vector из С++), и какой соответственно реализует связный список с вставкой элемента в середину и начало и удалением элемента за О(1)(аналог list в С++).
462 posts are omitted, из них 70 с файлами. Развернуть тред.
>> No.48513 Ответ
>>48512
> Кеш файловой системы
А что для этого используется? System.Runtime.Caching?
>> No.48514 Ответ
>>48513
ЛОЛШТО.
Кеш — часть операцiонной системы.
>> No.48516 Ответ
>>48514
Ок, разберусь.
Спасибо.
>> No.48581 Ответ
Как в Asp.Net MVC добавить генерацию ID в HTML?
Например, у меня в базе данных есть книги с ID, мне бы хотелось, чтобы при генерации HTML у div'а, который служит для представления информации о книге, в id было что-то типа "Book"+ID, где это ID берется из БД.
Например:
<div id="Book1"></div>
<div id="Book2"></div>
...
<div id="Book999"></div>
>> No.48598 Ответ
Файл: 1471815666195025723.jpg
Jpg, 47.98 KB, 517×517 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1471815666195025723.jpg
>> No.48745 Ответ
Файл: 785px-Inheritance.svg.png
Png, 10.33 KB, 785×487 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
785px-Inheritance.svg.png
Имеется абстрактный класс и 4 производных от него.
Всё вместе представляет собой 60 строчек кода.
По-моему, вся эта кучка классов удобнее для восприятия в виде одного файла.
Стоит ли выносить каждый производный класс в отдельный файл?
Даже не представляю, как гуглить подобные стандарты.
>> No.48746 Ответ
>>48745
Стоит.
Классы имеют привычку разрастаться.
>> No.48748 Ответ
>>48746
Спасибо.
Учту.
>> No.48816 Ответ
Що про эф сярп сказать можете, комрады?
>> No.48820 Ответ
Файл: shirai-kuroko.jpg
Jpg, 204.48 KB, 1050×1400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
shirai-kuroko.jpg
>>48816
Вакансий море, в отрасли — жуткий кадровый голод, выбирайте эф сярп, комрады.


No.31137 Ответ [Открыть тред]
Файл: 07_009.jpg
Jpg, 62.06 KB, 1024×573 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
07_009.jpg
В рамках треда предлагаю обсуждать веб как он есть, задавать ответы по темам верстки и серверново программирования, да и просто обсуждать всякие рющечки веба и пить чаек с печеньками.

>>u/62144 Собсно кафедра в университете. Полезные ссылочки >>u/91168 >>u/91394

Алсо PHP-тред >>23225 SQL-тред >>29820 Python-тред >>28158

Тред создан во имя поисковой оптимизации.
280 posts are omitted, из них 48 с файлами. Развернуть тред.
>> No.48505 Ответ
>>48504
Это техническая литература, а не художественная, она намного проще.
>> No.48506 Ответ
Файл: 1420693858-79f71fb0c0155621db3674c0338b08e1.jpg
Jpg, 161.77 KB, 850×637 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1420693858-79f71fb0c0155621db3674c0338b08e1.jpg
>>48505
Я, конечно, попробую, но реквест русскоязычных источников оставлю в силе.
>> No.48526 Ответ
>>48501
А насколько он вообще нужен и распространён?
>> No.48527 Ответ
>>48526
Весьма удобен, когда надо накидать аккуратную вебморду, а ты не понимаешь в этих всех цссах и верстках.
>> No.48528 Ответ
>>48527
А как мне самому прикинуть уровень своих знаний и умений? И заодно узнать как выглядит вёрстка со стороны разработчика.
>> No.48560 Ответ
Насколько я понял, есть два пути: путь ложной простотыphp+sql и путь явной сложностиhtml+css+javascript +php+sql || +python+sql. Ох уж эта веб-разработка, я-то думал, что за год на базовом уровне всё освою.
>> No.48564 Ответ
>>48560
Всегда начинали изучение с простого. Возьми книгу «JavaScript for Kids», потом «Understanding ECMAScript 6» и с них начинай.
>> No.48568 Ответ
>>48564
> «JavaScript for Kids»
Слишком сложно, пробую пока http://jsforcats.com/
>> No.48682 Ответ
Анон, выручай.
Сбацал, значится, на коленке сайт, чтобы текст выводить, поднял на Апаче, да столкнулся с проблемой - жабаскрипт не работает!
Конкретно: через PHP реализована "сборка" веб-страницы (из шаблонов, плюс параметры), с помощью которой я добавил тэг <script> и вызвал функцию из файла. Сам файл лежит в папке scripts, которая в корне.
В консоль выводит следующее:
`Uncaught SyntaxError: Unexpected token <`
Причём эта ошибка перенаправляет почему-то на вообще левый файл.
А вот это:
`Uncaught ReferenceError: getWork is not defined`
говорит о том, что функцию оно почему-то вообще не воспринимает как уже объявленную.
ЧЯДНТ? И как вообще правильно встраивать через пыху жабаскрипт?
>> No.48811 Ответ
Файл: 79-Slowpoke.png
Png, 95.98 KB, 800×647 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
79-Slowpoke.png
>>48682
Просто руками перепиши места, на которые ругается консоль. Мне обычно помогает, если я сразу не вижу ошибку.


[0] [1] [2] [3] [4] [5] ... [50] [51] [52]
Пароль:

[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]