Простите, а можно где-нибудь прочитать сишный код, который "оформлен как поток сознания"?
Ну, я уже упоминал файл «ffplay.c» из упаковки «ffmpeg» (ищите на Гитхабе) в каталоге «fftools». Кроме этого, там много других аналогичных c- и h-файлов, которые нужно использовать для компиляции консольного видеопроигрывателя. В бинарной упаковке FFMpeg есть уже скомпилированный файл «ffplay.exe». Можете посмотреть, как он работает.
Можете также посмотреть файл «sqlite3.c», размером, более восьми мегабайт, на Гитхабе. Что это, как не «поток сознания»? Хотя, кто-то может возразить. Мол, файл «sqlite3.c» это просто сборка массы отдельных с-файлов, которые делали десятки энтузиастов. Согласен, но мне от этого не легче. Менять что-то там резона особого нет, ибо чревато, хотя, для адаптации консольного видеопроигрывателя, в оконной программе, менять пришлось много чего. Но, по сравнению с SQLite, он, все же, проще.
Это модель, которая, возможно, сможет дать новые инструменты
Вот и славно!
Мне не хочется вникать в формальную сторону ваших рассуждений, поскольку, ваша концепция меня не «зацепила». Вот, я где-то услышал про «концептуальную логику неопределенностей», и только эти слова – меня «зацепили». По ней я хотел бы узнать больше, но, пока эта логика также неопределенная, как и ее название.
Скажем, вы утверждаете, что возможна реализация «Машины Времени», которая не будет противоречить принципу причинности. Я ничего подобного не утверждаю.
Естественно, это я утверждаю! Здесь это просто демонстрация рассуждения, которое может «зацепить» одной своей формулировкой. Особенно тех, кто начитался в детстве фантастики. И уже любой формализм по ее обоснованию не будет вызывать отторжения, только неподдельный интерес.
Иначе говоря, новая концепция должна быть простой и «самовнедряющейся».
Но, в целом, все же где противоречивость вы узрели?
Противоречие – определение неопределяемого понятия («Атом Смысла») через другие неопределяемые понятия: «элементарная нередуцируемая единица» в «пространстве смыслов», «кванта смысловой онтологии». А если это перевести на «рабочее-крестьянский», то, как оно будет звучать?
Думаю, «концептуальной логике неопределенностей» не понравилось бы такое насилие над здравым смыслом.
Не можете внятно определить – фиксируйте как неопределяемые понятия. И, кстати, где список используемых вами недоказуемых аксиом / принципов / постулатов?
Какую «выгоду» мы получим, в идеальном случае, когда, и если, ваша теория окажется верна на 100%? Хотя бы одно уравнение состояния вы нам дадите? До численных методов дело дойдет? Какие эксперименты нужно провести, чтобы доказать либо опровергнуть ваши утверждения?
Какую логическую проблему вы решаете, хотя бы на философском уровне? Например, в рамках «Научной Религии» можно сформулировать постулаты, которые вполне опровергнут тезис: «Там где начинается религия, там заканчивается логика». Об этом я много говорил в своих комментариях к моей статье: «Нужна ли философия и этика для жизни и творчества?» : https://habr.com/ru/articles/939970/ .
Звучит как приговор. Интересно, а можно взять какой-то открытый компилятор (gcc?) и выкладывать код для данного компилятора? Правда, сегодня, компилятор можно встроить прямо в сайт.
Любые утверждения надо воспринимать критически. И мои тоже. Я, ведь, забыл сказать, что использую для компиляции только компилятор VS C++ «средних версий». И, даже там, если версия «высокая», то сразу возникает несовместимость. Иногда ее удается легко преодолеть, иногда, нет.
Соответственно, другие компиляторы, вроде, gcc, тоже не использую. Поэтому, если все компилировать в их родных компиляторах, то статистика может стать с точностью до наоборот. Т.е., 10%, с разбегу не компилируются, а остальные – вполне. Но, если бы все авторы прикладывали бы к своим творениям хотя бы скриншоты, то проблемы бы здесь для меня вообще бы не было. Вот, когда понравились скриншоты китайской библиотеки интерфейса «DuiLib» и ее собственного редактора «DuiLib Editor», для внешней правки xml-файлов пользовательского интерфейса, то скомпилировал их, хотя, пришлось, конечно, повозиться. Потом, я, правда, от нее все равно отказался в пользу WTL, но полученный опыт остался.
Кстати, а ИИ позволяет исправлять плохой стиль программного кода?
Я пользуюсь только бесплатными версиями ИИ-сервисов. А как они могут выдавать красивый, в моем понимании, код, если его не существует в природе? Стиль такой же, как и на Гитхабе, один в один.
С разбегу не назову идеальный, на мой взгляд, проект, в части стиля. Да, я уже и отвык от мысли, найти подобный. Достаточно, что код делает то, что мне нужно, а сделать его «стилевой рефакторинг», для меня, не проблема, тем более, что это полезно, так как помогает лучше «почувствовать» код.
Но это же не значит, что на C/C++ нельзя писать так, чтобы было красиво. Наверное.
Да, для себя я стараюсь писать красиво. По стилю, это меня устраивает, но, по структуре, часто сомневаюсь, а, правильно ли я тут все структурирую?
А я думал, что в C наблюдается разнобой в типе возвращаемых значений, встречаются макросы, а ещё надо тщательно следить за звёздочками, а то можно сильно промахнуться с памятью или с типом переменной.
Код консольного видеопроигрывателя FFPlay.c, который я переделывал в классы С++, достаточно хорош, как по содержанию, так и по си-шному стандарту оформления, наверное, тоже. Только мне нужны были классы, оформленные в привычном, для меня, стиле. Только и всего.
А можно ли представить C-образный язык, который будет уже совсем хорош в плане внешнего вида и семантики? Go? Rust?
Меня С++ // WTL устраивают более, чем. Другие Си-подобные языки я вообще не вижу резона изучать.
Сегодня языки как-то в общем сближаются между собою. Специализация утрачивается. Многое упирается в традицию, в наличие библиотек/сред разработки. Синтаксис важен. но второстепенен.
Может быть. Я ведь говорю только о себе, даже если высказываю свое мнение о других. А кто я такой, чтобы судить о других? Мне очень нравится легкий WTL, а его масса более тяжеловесных аналогов – нет. Но, раз их создают, значит, их кому-то нужны? А лично для меня: «В этом Мире есть много вещей, которые мне… не нужны!».
Должна быть привычная или хотя бы логичная система как найти сахар.
Ты говоришь о привычных, повторяющихся действиях. Но, там все просто. Ошибся раз, во второй уже будешь чуть умнее. Т.е., метод «научного втыка» – рулит.
бесполезно делать документацию, нужно делать предсказуемую логику
Ну, да! Как в анекдоте: «–Ёжики станьте птицами! – Ура! А как? – Отстаньте, глупые! Я не тактик, я стратег!»
Я бы сам не полез крутить свой движок формул и кишки XML внутри Excel.
У китайцев есть опенсорсный проект «MyCell», аналог Эксела, поддерживающий работу xml-файлов. Я даже пытался приспособить его для автоматизации процессов для табельной, занимающейся учетом рабочего времени, с использованием моей системы учета (программно – аппаратной). Жаль, фирму ликвидировали, а так могло что-то получиться.
Противоречивость в данном случае может быть пока только логическая, ибо формализм тут очень поверхностный, что я несколько раз жирным и подчеркнул.
Формализм, в данном случае, для меня, значения не имеет, до тех пор, пока всё не станет понятно с концепцией или, если угодно, аксиомами, используемыми, без доказательства, в вашей теории. Я вам не «льстю», поскольку, есть масса рассуждений, претендующих на научность, куда менее формализованных, чем у вас.
А можно конкретный пример противоречивости в самой концепции?
Во-первых, в любой, уважающей себя научной теории, должны выполняются следующие условия:
Фиксируются неопределяемые понятия, вроде: точка, элемент, множество и т.п.
Определяются явно не доказываемые аксиомы, принципы, постулаты.
Указывается тип логики, которая используется (диалектическая (философская), математическая, женская (Пример: «Если из А следует Б и А – приятно, то Б – верно!», мужская (Пример: «– Вот памятник Достоевскому! – Это тот, что «Муму» написал? – Нет, что вы! «Муму» написал Тургенев. – Странно, написал Тургенев, а памятник Достоевскому!»). Можно еще говорить о концептуальной логике. Но вам её толком не объяснят, ни на мехмате, ни на филфаке МГУ. Хотя, она есть, как тот «суслик, которого не видно» :) . Я бы назвал ее логикой неопределенностей.
Явно формулируются доказываемые утверждения либо обосновываются, с произвольной точностью, гипотезы. Главное, чтобы обосновываемые / доказываемые утверждения были на одной стороне, а принимаемые на веру – с другой.
Во-вторых, указывается потенциальная проверяемость и перспективность данной теории. Скажем, вы утверждаете, что возможна реализация «Машины Времени», которая не будет противоречить принципу причинности. Для этого вводите понятие четырехмерной «СуперВселеной», в которой «обычные» трехмерные вселенные расположены на расстоянии кванта пространства, в четвертом пространственном измерении, с различным собственным временем, отличающемся, тоже, на квант времени. При этом, эти вселенные независимы, но похожи. И если вы, допустим, выйдете в четвертое пространственное измерение, то, тогда сможете перемещаться по этим вселенным, хоть в «будущее», хоть в «прошлое». Допустим, в «прошлом» нашли «себя» и каким-либо образом повлияли на него. Повлияет ли это на вас? Нет! Просто, когда «та» вселенная, по шкале времени доберется до текущего времени вашей вселенной, то там «вы» будете уже другим, т.е., не таким, как сейчас. Точнее, не вы, а ваш, очень похожий клон.
Противоречит эта «теория» «Машины Времени» «принципу причинности»? – Нет! Но, вас обязательно спросят: «Если это верно, то, как этого достичь?» Допустим, вы вывели новые уравнения Эйнштейна, имени вашего имени, которые показывают, что выход в четвертое пространственное измерение возможен с помощью отрицательной либо мнимой массы и даже предлагаете (дорогостоящую) технологию ее создания (по аналогии с созданием атома антиводорода, как антиматерии). Задача физиков экспериментаторов будет доказать, экспериментально, выводы вашей теории, либо опровергнуть их. Более того, в их среде, в ходу поговорка: «Всякая теория верна до тех пор, пока не будет опровергнута!». Просто оформите ваши утверждения в соответствующую упаковку и представьте, скажем, на форуме dxdy.ru. Если не получите поддержку, то хотя бы конструктивную критику.
Например, я доказал теорему Коши, «имени своего имени», для кватернионов ( https://scholium.narod.ru/Math/Scholium001-IntegralFormulaOfCauchyForQuaternions.pdf ). Пока, мне не написал польский математик, с критикой, что там есть неточность в доказательстве, в одном используемом факте, верным не всегда. Однако, если, для простоты, этот факт вынести в утверждение теоремы, то, тогда, «всё сходится» :) .
Может быть и у вас, после конструктивной критики научного сообщества, тоже все сойдется. Но, пока, мне ваша позиция не кажется сильной. Впрочем, на моё мнение можете не обращать внимание :) .
Код в гите Картинка в начале статьи, ссылкой на plantuml
В данном случае, с концепцией вашей статьи:
Парадокс сложности: почему сложное, но формализованное стало дешевле простого, но контекстно зависимого
я, совершенно, согласен. Настолько, что мне не требуются ни код, ни картинки для ее обоснования. Я бы и сам мог, вместо вас, порассуждать на эту тему. Например:
Сложность ведь разная бывает. Есть сложность элементная, а есть структурная. Элементов, всяких разных может быть много, но структура их взаимоотношений, может быть, простой, или, по крайней мере, понятной и обозримой. Это ваш первый случай. Во втором случае, элементов меньше, но расположены они в беспорядке, хаотично.
Примерно, как жена говорит мужу: «У тебя беспорядок на компьютерном столе. Дай, я наведу там порядок!». На что муж отвечает: «Ничего не трогай! Это не «беспорядок», это «творческий беспорядок»!» И, добавляет: «Беспорядок – это у тебя. На мой вопрос: «Где у нас сахар?», ты ответила: «В банке из под чая, на которой написано «соль»!».
Интересней было бы поговорить о сложности программных проектов. Как сделать, чтобы легко было понять собственный код, написанный несколько месяцев назад? Как правильно структурировать сам проект и код в нём? И как, вообще, «правильно» реализовывать программные модели? Желательно, на конкретных примерах.
Эта идея и есть минимальный «Атом Смысла» — элементарная нередуцируемая единица в пространстве смыслов, кванта смысловой онтологии.
«Профессор, не спешите, я записываю!». А что такое:
«пространстве смыслов», «квант смысловой онтологии» и «элементарная нередуцируемая единица»?
Другими словами: «Атом Смысла» это элемент множества «Пространство Смыслов». Вы, что-нибудь, поняли? Я – нет!
Чем это лучше: «В начале было Слово!» («И это Слово было – русское» (с) А. Драгункин).
Думаю, что ваша теория не «взлетит». Ибо, противоречива в своей концепции определений.
Перефразируя «теорему Гёделя», можно сказать, то, что определено, как первооснова, – противоречиво, а то, что непротиворечиво – не определено.
Вот и выбирайте, на свой вкус: противоречивую определенность первоосновы либо ее непротиворечивую неопределенность. И вы никогда не разрешите эту дилемму. В этом случае, я бы выбрал второй вариант, что, кстати, все и делают.
Я перелопатил «туеву хучу» опенсорсного кода на С++ и не разу он мне не понравился с точки зрения оформления и структуры.
Такое впечатление, что абсолютно все «приплюснутые» программисты, включая и наших и зарубежных, учились по одним и тем же сомнительным источникам, в части советов по стилю программирования.
В Си не нравится «монолитность» кода, точнее код там, обычно, оформлен как поток сознания их авторов, ничем не ограниченным «снаружи».
С++ – потенциально явно лучше. Он позволяет хорошо структурировать код на классы, неймспэйсы, файлы и каталоги, проекты и решения. Это, для меня, просто супер!
Но, вот стиль программирования, как правило, у всех ужасен. Главные претензии:
Когда нужно ставить разделители (пробелы и новые строки), – их не ставят, если это позволяет делать компилятор.
Когда не нужно делать лишние разделители – их, наоборот, делают.
Комментирование кода, обычно, небрежное.
Заголовки, сверху и снизу (в виде комментариев) для многострочных конструкций языка – не делаются либо делаются по принципу: «Нате вам и отстаньте!».
Не разделенная, мною, любовь всех злоупотреблять нижним регистром символов и излишне частым использованием символом «нижнее подчеркивание».
Часто, в одном файле, – слишком много классов.
Также не нравится, в пользовательских проектах, делать реализацию функций в h-файлах. Для библиотечных исходников, вроде, WTL – это нормально, поскольку их код я редактировать не намерен.
Ну, и так далее, по мелочам. Поэтому, Си-шный опенсорс я переделываю в С++-классы, вроде, консольного видеопроигрывателя FFPlay.c (скриншот подобной реализации для моей оконной программы можно посмотреть в http://scholium.webservis.ru/Pics/MediaText.png ).
А весь доступный «приплюснутый» код, я подвергаю, перед использованием, стилевому рефакторингу, под свой вкус, иначе, я не могу с ним работать. Хорошо, что, как программист, я всегда работал один. В команде я бы не ужился, разве что, только, в должности начальника «1С», по принципу: «Я начальник – ты дурак!» :) .
Какие проектные решения вам действительно импонируют, а какие просто устраивают?
Для чужих проектов – те, которые компилируются без проблем. Если взять произвольный проект на С++, не говоря уже о Си, на Гитхабе и попробовать его скомпилировать из «коробки», то, с вероятностью 90% – не получится. Нужно, предварительно, долго плясать с бубном, чтобы данный проект просто скомпилировался. Не нравится, что авторы редко прикладывают к своим «шедеврам» скриншоты, не говоря уже о готовых бинарниках.
Поэтому, если чужой проект легко скомпилировался, то, тогда, даже его ужасный стиль не так раздражает. Ибо к стилевому рефакторингу мне не привыкать, тем более, что, при этом, лучше вникаешь в, собственно, код.
Какие программные задачи интересны для вас настолько, что не выходят из головы даже после работы? А каких задач вы стараетесь избегать?
Интересны проблемы пользовательского интерфейса на C++ / WTL. Вот, неожиданно, для себя, столкнулся с вопросами рисования кнопок. Для кастомизации кнопок существует несколько методов. Наиболее типичные, это полностью собственные классы, наследование классов стандартных контролов, с внутренним сабклассингом либо без, и внешним сабклассингом стандартных элементов управления.
Мне нужна эмуляция кнопок, исключительно средствами пользовательского рисования. Другие методы работают, и даже этот метод работает, но «безоконное» рисование дочернего компонента (точнее, непосредственное рисование в главном окне приложения) приводит к «перемигиванию» других контролов, хотя, двойную буферизацию и обновление только субобластей, я использую часто, но, в данном случае, в буферизации не вижу смысла, а частичное обновление, почему-то, не работает.
Эти кнопки должны завершить мой очередной пет-проект, который может работать и без них (за счет клавиатурных команд, вроде, «энтера»). Однако хочется добавить их для «красоты», так, чтобы они не мешали работе других контролов. А почему мешают? – Пытаюсь разобраться.
Однако, поскольку я программирую как «свободный художник», то неинтересными задачами я просто не занимаюсь. Зачем? Когда и интересных хватает.
Еще, как бонус, говорят что это и для памяти и для здоровья ума полезно, так как изучение языков развивает и поддерживает когнитивную функцию. (Это уже не для начинающих, а для продолжающих скорее лайфхак 😁 )
Я бы сказал больше, изучение иностранного языка либо активное творчество, вообще, сильно способствуют уменьшению разного рода болячек организма (даже переутомление зрения и малоподвижность, не так сильно действуют, как без серьезной работы ума) и, что особенно важно, увеличивают продолжительность жизни.
Короче говоря, в перефразе: «Здоровое тело любит активные мозги».
Для того чтобы прокачаться в инглише много не надо. Банально можно поставить себе Duolingo и играться с ним по 10-15 минут каждый день. И этот простой шаг поможет не только изучению английского, но и программированию.
Я, лично, предпочитают более интересный для себя вариант. Сначала, написал обучающую программу «L'école», для изучения иностранных языков, по методу: «Запоминание руками + интерактивный звук», затем подготовил демо-данные по нескольким языкам, включая английский. И, после получения достаточного количества данных по французскому языку, набираю их руками, по сто фраз в день, с прослушиванием и проговариванием. И это гораздо менее скучно, чем обычная зубрёжка. Думаю, что, постепенно, «количество переходит в качество».
Последнюю версии программы и данных, можно посмотреть в моей статье: «Роль данных при изучении иностранного языка» : https://habr.com/ru/articles/930868/ .
Моя идея была простой: расширение, которое скачивает все картинки с сайта в один клик.
Ну, подобные расширения найти на Гитхабе не сложно. Я оттуда много примеров скачал и подобный вашему там тоже есть, но смысла в нем не много.
Более интересной задачей была – скачать онлайн-словарь с озвучкой, для целей самообразования. Только сделать это, с пол пинка, оказалось сложнее.
Для одного из них хватило простого Питона (без сложных библиотек), а для остальных – старой версии Хром (версия 109), для того, чтобы сохранить возможность работы со второй версией манифеста. Поскольку, в последних выпусках Хрома доступен только третий манифест (насколько я знаю), а он уже имеет ограничения в работе, которых не было во втором манифесте. Это касается и блокировщика рекламы сайтов и работы с файлами. А Хром нужен для (ручного) обхода капчи – «дешево и сердито».
Другим словами, нужно было «ехать», а не «шашечки». И если эту задачу решает «велосипед», то зачем тогда нужен «мерседес?
Теперь, тоже самое, но чуть подробнее.
Я, без особых проблем, скачивал онлайн-словари и mp3-файлы к ним на десятки тысяч слов, используя собственное расширение Хром. Правда, приходилось выставлять паузу – пять секунд, между запросами, зато, вэпээн-ом пользовался редко. Полученные html-страницы, естественно, пришлось конвертировать в более удобоваримый вид (в конечном счете – текстовый), но, в итоге, нужные мне данные я получил.
Если говорить не «вообще», а «конкретно», то вполне можно использовать веб-скрапинг с помощью расширений на старых версиях Хрома, все еще поддерживающих вторую версию манифеста.
При этом, начальную капчу можно проходить вручную, потом это дает нам какое-то количество времени (обычно, минут 5 – 30) до появления следующей капчи. Во время этого интервала мы запускаем свой небольшой скрипт расширения, который с небольшой задержкой, скажем, секунд пять, делает запросы на загрузку необходимых html-страниц, которые мы просто тупо сохраняем в своем каталоге. Их обработкой мы можем заняться потом, когда уже всё скачаем, Это может быть и сотня тысяч страниц.
При этом, в процессе скачивания страниц мы можем отследить начало сбоя. В Хроме это хорошо видно. Останавливаем скрипт, переинициализируем его, при необходимости, снова вручную набираем соответствующий url в Хроме, опять проходим капчу (при подозрении сервера, он может запрашивать ее несколько раз). Для профилактики подозрений, периодически меняем ай-пи, например, посредством вэпээна.
Скриптом расширения, хотя там всего пара десятков строчек, делиться не буду, чтобы не палиться. Раньше я использовал скрипты Питона для аналогичных целей, пока не столкнулся с капчей. С ней возникли проблемы, пока не нашел в Интернете подходящий прототип расширения на базе второй версии манифеста (как я уже говорил, современный Хром поддерживает только третью, значительно урезанную в своих возможностях). Слегка доделал его «напильником» и вуаля…
В итоге, загрузил два разных сайта, порядка ста тысяч страниц. На каждый ушло по месяцу, примерно. Сайты крутили время доступа, между капчами, от 5 до 30 минут, потом обратно. Это несколько напрягало, но, параллельно, занимался другой работой, да и спешить мне было особо некуда.
Сначала увлекался, задержки между запросами были нулевые и сайты мои вэпээны быстро банили. Но всегда их «хавали» при ротации. Допускаю, что, сервера слишком надеялись на свои капчи и другие способы защиты особо не использовали, хотя, я постоянно ждал подвоха с их стороны.
Как бы там ни было, все сработало, результат я свой получил. Были еще проблемы, связанные с необходимостью рендеринга страниц, но уже для других сайтов. Для этого тоже нашел подходящие прототипы для Хрома. Начальные эксперименты были удачны, но потом, просто, по разным причинам, интерес, к этим серверным данным, пропал, и этот проект я забросил до тех пор, пока не возникнет аналогичная потребность снова.
Таким образом, на универсальность не претендую, но свои личные проблемы решил. Более того, все данные корректны, я их полностью обработал и проверил. А вот, когда работал с подобными скриптами на Питоне, без капч, то, да, за ними нужен был глаз да глаз. Данные отгружали всегда, но после небольшого объема корректных данных начинали поступать некорректные. Да и задержку между запросами там нужно было выставлять секунд пятнадцать, не меньше, ибо очень подозрительные сервера были. Зато особо не придирались к ай-пи, можно было работать без вэпээна. Короче говоря, везде использовал специфику частных случаев…
Целая бригада специалистов, из фирмы «1С», внедрила «1С:MES» на заводе «Камаз». На их блог подписываться не надо? Тем более, что конкретики там было на порядок больше, причем, самой интересной, со стороны разработчиков, а не тестеров.
«подсознание» — это просто не что-то единое, а просто часть нашего разума (и даже не только разума), которая находится вне поля зрения нашего сознания
А наш разум – часть нашего тела. А наше тело – часть нашего Мира и так далее, пока не закончатся все субстанции.
На самом деле, это разговор ни о чём. Вы говорите так, я говорю иначе. Кто прав?
Смотрите, подсознание работает задолго до того, как появляется сознание. Думаю, практически, с момента зачатия. При этом, развитие материальной оболочки сознания – тела плода – поддерживается извне, пока не появится новорожденный. Да и внешнее кормление его потом происходит еще долго. Подсознание обеспечивает жизнедеятельность рожденного и его развитие.
Сознание «включается» позже. А кто его «включает»? Естественно, наша операционная система – подсознание. У меня оно включилось мгновенно, в два года, на пару минут. Но я сразу полностью осознал реальность, себя, сохранил память об этом событии и т.д. Вот и спрашивается, кто и что, при этом, часть чего?
Подсознание может управлять сознанием, например, перевести вас в состояние сна либо «потери сознания». Скажем, шел человек по коридору – потерял сознание, упал, через пару секунд – оклемался, встал и пошел дальше. Или, выхлопные газы, в автобусе, попали в салон. Слабый, мгновенно потерял сознание, очнулся, лежит на траве, вокруг суетятся пассажиры. Этим что, управляет сознание?
Сознанию нужен сон, для нормального функционирования, а подсознанию не нужен, оно работает постоянно, как сердце. Да, вы можете, в какой-то мере, влиять на свое подсознание, посредством медитации, аутотренинга и самогипноза. Но, это все похоже на «костыли», а не на реальную, естественную, технологию.
А у человека есть еще надсознание, которое живет и развивается во сне и им тоже управляет подсознание. Вот вам и вопрос, «на засыпку»: «Какое из ваших трех «Я» самое истинное? «Я»-подсознание, «Я»-сознание либо «Я»-надсознание?
Естественно, противоположной аргументации я не ожидаю услышать Джентельменам, ведь, принято верить на слово?
люди, которые все банально свели к "дилеме заключеного".
Специально, ради вас, посмотрел вики, на эту тему. И что я вижу:
В дилемме заключённого предательство строго доминирует над сотрудничеством, поэтому единственное возможное равновесие — предательство обоих участников. Проще говоря, каким бы ни было поведение другого игрока, каждый выиграет больше, если предаст. Поскольку в любой ситуации предать выгоднее, чем сотрудничать, все рациональные игроки выберут предательство.
И какое это имеет отношение к морали? Назовите это поведение аморальным – правдивее будет.
Если вы спросите гугл или чат гпт, что получите определение близкое к этому: «Мораль — это система норм, правил и представлений о «правильном» и «неправильном» поведении, которые существуют в обществе и регулируют поступки людей.» А это, знаете ли отличается.
Для этого не нужно употреблять слово мораль. Говорите прямо: «Уголовный Кодекс», «Законы государства», «Налоговый Кодекс», «Гражданский Кодекс» или, если хотите, «Международное Право», «Морское Право» либо даже «Порядок, основанный на правилах». Подобных сводов – масса, но это не мораль, это юридически обязывающие, либо не очень, требования к выполнению со стороны властей либо сильных Мира сего.
Есть еще разные религии с их требованиями соблюдать определенные ритуалы и много чего подобного. Но, это все не мораль, а прямые указания сильных – слабым.
Мораль, это когда вас не заставляют что-то делать, но вы считаете что делать так надо, либо, наоборот, не надо, в соответствии со своей совестью и внутренним мировоззрением.
Даже «Моральный Кодекс строителя Коммунизма» это не вполне мораль, а общественные требования общества к своим сторонникам.
Мораль это ближе к совести, которой у англосаксов нет. Ну, а если не бывает угрызений совести, то о чём, вообще говорить? Тогда, честнее будет сказать, что жалость и сострадание – это удел слабых, что учет чужих интересов мешает зарабатывать деньги, что доброта – не выгодна, хотя, англосаксы, считают, что, иногда, всё же – выгодна! Другими словами, придерживаться культа аморальности, т.е., полного отсутствия даже намёков на моральность собственных поступков. А вы говорите, что нет «моральных полюсов». Моральность и аморальность – вот эти полюса!
И альтруистическая мораль будет уповать за то, чтобы вы жертвовали своими интересами во благо других.
Речь не об этом. Можно не делать добро, но, главное, не делать зла, без достаточной на то причины, например, при отражении агрессии.
Странно, что вы вообще эту тему затрагиваете, хотя вы ее совершенно не чувствуете и пытаетесь всё свести рациональным поступкам…
И да, кривые процессы вскрываются на этапе предпроектного исследования, в крайнем случае — составления ТЗ. Если заказчик настаивает на своих обходах и петлях — Нуралиев ему судья )
У меня было проще. Меня пригласили на фирму и уже там я начал свои эксперименты, от попытки внедрения всех, потенциально подходящих, программ, которые были на рынке, до понимания того, что стратегически верно – создать собственную программу учета, и это оказалось правильным решением.
До этого я работал там по договору, по которому создавал, на «семерке», новые версии использовавшихся там, небольших программ, написанных другими программистами. Причем, техзадания писал для самого себя, которые сам и реализовывал. Руководству было всё равно, главное для них был результат. Его я и обеспечивал.
Всё же свой 1С-программист — человек дорогой, тем более на фуллтайм ) Это по карману большим предприятиям.
У нас был – недорогой. Обычная должность «ведущего программиста», в штатном расписании. Зарплата, чуть выше средней, по предприятию. И, вообще, большими российскими зарплатами мы не были избалованы, поскольку вошли в РФ совсем недавно. Несколько месяцев среднего, по Ростовской области, дохода, это был мой предел.
всё более или менее стандартизовали хотя бы в пределах одного ведомства
Тем не менее, после прихода нового российского собственника на наше предприятие, он начал перевод нашей системы учета на свою собственную. Тоже, кстати, самописную, только, основанную на веб-технологиях, которая у них уже работала много лет. Потом, незадолго до ликвидации нашего предприятия, он начал делать переход, в части «зарплаты», на ЗУП, причем на всех фирмах, которыми владел. В нашем случае, перейти не успел, в силу ликвидации предприятия, а как на других, не знаю.
Вы знаете, у нас есть и успешный опыт внедрения совершенно стандартных конфигураций "из коробки". Почему-то оказывалось, что это не конфа кривая, а процессы построены как в фильме "Айболит-66" -- когда нормальные герои всегда идут в обход )
Возможно, для малых предприятий проще использовать типовую, чем для крупных. Да и не нравится мне сам подход, когда пользователь звонит в техподдержку и говорит, что у него что-то не делается либо делается, но не так как надо. А ему отвечают: «Меняйте свои бизнес-процессы, мы, ради вас, менять конфигурацию не будем!».
Скажем, я пробовал делать расчеты в ЗУПе, для наших самых «сложных» сотрудников. Но, если в моей программе это выполнялось на «раз-два», то в ЗУПе надо было очень долго «плясать с бубном». Да, в итоге, я получил нужный мне результат, но мне такая работа совершенно не понравилась. У меня всегда было чувство, что разработчики типовых делали их по принципу: «Нам с ними не работать!».
Однако, поскольку в РФ появилось много новой отчетности, которую мне влом было реализовывать в своей программе, то я начал делать просто конвертацию своих, уже рассчитанных данных, в типовую «зарплату». Подобный метод меня часто выручал, поскольку в России есть масса независимых программ («электронные больничные», «электронная трудовая книжка», «налогоплательщик», веб-сервисы госотчетности и т.п.), с которыми работать тяжело, а иногда даже и экспортировать туда свои данные, тоже – абсолютно нетривиально. Однако, после переноса данных, «не мытьем, так катанием», работать с ними было уже гораздо проще, включая проверку и шифрование данных, электронные подписи, передачу в госорганы и т.п.).
Так что связка: основной расчет «у себя», а внешняя отчетность в «официальной» программе, после переноса туда своих данных – работает очень эффективно. И я один делал то, что на других фирмах выполняли несколько человек.
Тем не менее, есть такая конфа: «Магазька», для малого и частного торгового бизнеса, которую делает один независимый программист. Сама программа не дорогая, но её автор, на своем сайте, хвастался, что, благодаря ей, купил себе квартиру в Москве и иномарку. И это ведь притом, что есть более дешевые альтернативы, в виде типовых торговых конфигураций, для небольшого бизнеса. Просто: «Лучгее – враг хорошего!».
Какую 1С-ку мы выбрали и почему всему малому бизнесу рекомендуем это же решение.
Мне эта тема близка, только я работал в «среднем» бизнесе, точнее, производственном предприятии. Там мне пришлось написать, с нуля, учетную конфигурацию, которая кормила меня двадцать лет. И еще столько бы, если бы фирму не ликвидировали бы, по политическим мотивам. Что, в общем-то, немного, обидно, ведь мы живем на «новой территории» – Донбассе, который, ныне в составе России. Сначала, несколько месяцев, после прихода новых собственников, мы почувствовали вкус к жизни, а потом, нас, так сильно обломали.
Но, как говорится, нет худа, без добра. Появилось свободное время и можно уже заняться написанием собственных пет-проектов и публиковать их здесь.
CRM, мне, конечно, мало интересен. Моя основная специализация, как программиста, была учет заработной платы и рабочего времени, вместе с клиент-банками, плюс запустил собственный учет ресурсов, на нашем производственном предприятии, со своей спецификой. Правда, новая главбухша смогла последний перевнедрить на типовую конфигурацию «1С», Тут она – молодец, знала то, чего я не знал. Однако, повторить подобный финт с «зарплатой» она не смогла, хотя я был в этом заинтересован не меньше её.
Про «1С» я могу сказать одно. По факту, типовые конфигурации ее это, по сути, полуфабрикат. Но, большим плюсом этой платформы является то, что это система быстрой разработки. И если не пожалеть нескольких месяцев или пары лет на разработку, в одиночку, собственной конфы, для не вполне стандартных бизнес-процессов, то потом можно жить, лет двадцать, только за счет своей программы. Как я всегда любил говорить: «Сначала я работал на свою программу, потом программа работала на меня». Что легко позволило мне пережить смену трех государств и их законодательств: Украины, ЛНР и РФ. С типовыми, я бы сильно намаялся, особенно, в переходные периоды.
Проблемы, с учетом правил выше, возникают уже на этом этапе: если формула площади квадрата S=a^2, то зачем нам хранить дополнительно сторону b, которая равна стороне a?
Пользуйтесь «методом здравого смысла»! Тогда, подобных, схоластических, вопросов будет меньше.
В программировании одни и те же задачи можно решить разными способами. Иногда, даже трудно отдать предпочтение, какому-либо варианту решения, кроме как, на уровне: нравится / не нравится.
А сформулированная проблема, у вас, слишком примитивная, чтобы пытаться ее как-то «разрешить». Нужна реальная задача, в контексте, и тогда уже, на уровне здравого смысла, можно пытаться ее решать, с тем или иным уровнем оптимизации.
Я, например, когда разрабатывал свою обучающую программу «L'école» ( https://habr.com/ru/articles/930868/ ), то чуть мозги себе не сломал, выстраивая непротиворечивую иерархию собственных классов, по работе с одними и теми же данными. И все «мудрые» советы по «правильному» оформлению классов, как оказалось, «яйца выеденного не стоили». Пока, не плюнул на них и стал руководствоваться исключительно здравым смыслом.
В итоге, одних только блок-схем используемых классов, со схемами взаимодействия между ними, нарисовал, для себя, не менее двадцати, не считая несколько десятков вариантов алгоритмов и их фрагментов, написанных в текстовом виде.
Оптимальна ли полученная реализация? Не уверен, скорее нет, чем да. Но, пока, работает, и я по ней учу, в данном случае, французский язык. Но, когда созрею, напишу ее вторую версию и уже тогда, возможно, опубликую исходный код.
Поэтому, совет. Не страдайте детством. Работайте с серьёзными вещами, которые уже есть смысл обсуждать здесь.
Я и не представлял, что мой текст можно понять настолько превратно.
Ваш текст совершенно ни причем. Просто вы дали повод поговорить на эту тему, безотносительно содержания самого текста.
Думаю, что вы смотрите на проблему морали «снизу», как слепые, который щупают слона и пытаются дать его описание. Кто держится за хобот, у того появляются одни представления, кто за хвост – другие, а за ногу – третьи. И все будет верно, но только локально.
У вас тоже, всё верно, но только локально. Я попытался взглянуть «сверху» или глобально. Естественно, земля с высоты птичьего полета будет не такой, как на ее поверхности. Поэтому, вы и не готовы услышать альтернативную точку зрения. Которая, по сути, очень проста: «Мораль это желание учитывать чужие интересы». Здесь вы не спрячетесь за бытом. Вы либо уважаете интересы окружающих, либо нет, например, спокойно допускаете, ситуацию, когда решаете свои проблемы за чужой счет. Мол, я молодец, а «лох» – нет, раз позволил обвести себя вокруг пальца. «Без лоха – жизнь плоха», как говорят блатные.
И не надо путать «личный выбор» с моралью. Это разные вещи. Вы можете выбрать пойти учиться в один ВУЗ, а ваш друг – в другой. Вы можете хотеть иметь в браке – мальчика, а ваша жена – девочку и т.д. и т.п. При этом, вы все можете придерживаться как одной морали, не важно, даже, что вы под этим понимаете, так и разной. Одно с другим никак не связано.
Лучше почитайте мудрые цитаты, вроде:
«Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'a la mort pour que vous ayez le droit de le dire.» : «Я не согласен с тем, что вы говорите, но я буду сражаться прямо до смерти за то, чтобы вы имели право это говорить.»
Да, это абстрактная максима, но она рекомендует быть терпимым к чужому мнению…
Ну, я уже упоминал файл «ffplay.c» из упаковки «ffmpeg» (ищите на Гитхабе) в каталоге «fftools». Кроме этого, там много других аналогичных c- и h-файлов, которые нужно использовать для компиляции консольного видеопроигрывателя. В бинарной упаковке FFMpeg есть уже скомпилированный файл «ffplay.exe». Можете посмотреть, как он работает.
Можете также посмотреть файл «sqlite3.c», размером, более восьми мегабайт, на Гитхабе. Что это, как не «поток сознания»? Хотя, кто-то может возразить. Мол, файл «sqlite3.c» это просто сборка массы отдельных с-файлов, которые делали десятки энтузиастов. Согласен, но мне от этого не легче. Менять что-то там резона особого нет, ибо чревато, хотя, для адаптации консольного видеопроигрывателя, в оконной программе, менять пришлось много чего. Но, по сравнению с SQLite, он, все же, проще.
Вот и славно!
Мне не хочется вникать в формальную сторону ваших рассуждений, поскольку, ваша концепция меня не «зацепила». Вот, я где-то услышал про «концептуальную логику неопределенностей», и только эти слова – меня «зацепили». По ней я хотел бы узнать больше, но, пока эта логика также неопределенная, как и ее название.
Естественно, это я утверждаю! Здесь это просто демонстрация рассуждения, которое может «зацепить» одной своей формулировкой. Особенно тех, кто начитался в детстве фантастики. И уже любой формализм по ее обоснованию не будет вызывать отторжения, только неподдельный интерес.
Иначе говоря, новая концепция должна быть простой и «самовнедряющейся».
Противоречие – определение неопределяемого понятия («Атом Смысла») через другие неопределяемые понятия: «элементарная нередуцируемая единица» в «пространстве смыслов», «кванта смысловой онтологии». А если это перевести на «рабочее-крестьянский», то, как оно будет звучать?
Думаю, «концептуальной логике неопределенностей» не понравилось бы такое насилие над здравым смыслом.
Не можете внятно определить – фиксируйте как неопределяемые понятия. И, кстати, где список используемых вами недоказуемых аксиом / принципов / постулатов?
Какую «выгоду» мы получим, в идеальном случае, когда, и если, ваша теория окажется верна на 100%? Хотя бы одно уравнение состояния вы нам дадите? До численных методов дело дойдет? Какие эксперименты нужно провести, чтобы доказать либо опровергнуть ваши утверждения?
Какую логическую проблему вы решаете, хотя бы на философском уровне? Например, в рамках «Научной Религии» можно сформулировать постулаты, которые вполне опровергнут тезис: «Там где начинается религия, там заканчивается логика». Об этом я много говорил в своих комментариях к моей статье: «Нужна ли философия и этика для жизни и творчества?» : https://habr.com/ru/articles/939970/ .
Любые утверждения надо воспринимать критически. И мои тоже. Я, ведь, забыл сказать, что использую для компиляции только компилятор VS C++ «средних версий». И, даже там, если версия «высокая», то сразу возникает несовместимость. Иногда ее удается легко преодолеть, иногда, нет.
Соответственно, другие компиляторы, вроде, gcc, тоже не использую. Поэтому, если все компилировать в их родных компиляторах, то статистика может стать с точностью до наоборот. Т.е., 10%, с разбегу не компилируются, а остальные – вполне. Но, если бы все авторы прикладывали бы к своим творениям хотя бы скриншоты, то проблемы бы здесь для меня вообще бы не было. Вот, когда понравились скриншоты китайской библиотеки интерфейса «DuiLib» и ее собственного редактора «DuiLib Editor», для внешней правки xml-файлов пользовательского интерфейса, то скомпилировал их, хотя, пришлось, конечно, повозиться. Потом, я, правда, от нее все равно отказался в пользу WTL, но полученный опыт остался.
Я пользуюсь только бесплатными версиями ИИ-сервисов. А как они могут выдавать красивый, в моем понимании, код, если его не существует в природе? Стиль такой же, как и на Гитхабе, один в один.
С разбегу не назову идеальный, на мой взгляд, проект, в части стиля. Да, я уже и отвык от мысли, найти подобный. Достаточно, что код делает то, что мне нужно, а сделать его «стилевой рефакторинг», для меня, не проблема, тем более, что это полезно, так как помогает лучше «почувствовать» код.
Да, для себя я стараюсь писать красиво. По стилю, это меня устраивает, но, по структуре, часто сомневаюсь, а, правильно ли я тут все структурирую?
Код консольного видеопроигрывателя FFPlay.c, который я переделывал в классы С++, достаточно хорош, как по содержанию, так и по си-шному стандарту оформления, наверное, тоже. Только мне нужны были классы, оформленные в привычном, для меня, стиле. Только и всего.
Меня С++ // WTL устраивают более, чем. Другие Си-подобные языки я вообще не вижу резона изучать.
Может быть. Я ведь говорю только о себе, даже если высказываю свое мнение о других. А кто я такой, чтобы судить о других? Мне очень нравится легкий WTL, а его масса более тяжеловесных аналогов – нет. Но, раз их создают, значит, их кому-то нужны? А лично для меня: «В этом Мире есть много вещей, которые мне… не нужны!».
Ты говоришь о привычных, повторяющихся действиях. Но, там все просто. Ошибся раз, во второй уже будешь чуть умнее. Т.е., метод «научного втыка» – рулит.
Ну, да! Как в анекдоте: «–Ёжики станьте птицами! – Ура! А как? – Отстаньте, глупые! Я не тактик, я стратег!»
У китайцев есть опенсорсный проект «MyCell», аналог Эксела, поддерживающий работу xml-файлов. Я даже пытался приспособить его для автоматизации процессов для табельной, занимающейся учетом рабочего времени, с использованием моей системы учета (программно – аппаратной). Жаль, фирму ликвидировали, а так могло что-то получиться.
Формализм, в данном случае, для меня, значения не имеет, до тех пор, пока всё не станет понятно с концепцией или, если угодно, аксиомами, используемыми, без доказательства, в вашей теории. Я вам не «льстю», поскольку, есть масса рассуждений, претендующих на научность, куда менее формализованных, чем у вас.
Во-первых, в любой, уважающей себя научной теории, должны выполняются следующие условия:
Фиксируются неопределяемые понятия, вроде: точка, элемент, множество и т.п.
Определяются явно не доказываемые аксиомы, принципы, постулаты.
Указывается тип логики, которая используется (диалектическая (философская), математическая, женская (Пример: «Если из А следует Б и А – приятно, то Б – верно!», мужская (Пример: «– Вот памятник Достоевскому! – Это тот, что «Муму» написал? – Нет, что вы! «Муму» написал Тургенев. – Странно, написал Тургенев, а памятник Достоевскому!»). Можно еще говорить о концептуальной логике. Но вам её толком не объяснят, ни на мехмате, ни на филфаке МГУ. Хотя, она есть, как тот «суслик, которого не видно» :) . Я бы назвал ее логикой неопределенностей.
Явно формулируются доказываемые утверждения либо обосновываются, с произвольной точностью, гипотезы. Главное, чтобы обосновываемые / доказываемые утверждения были на одной стороне, а принимаемые на веру – с другой.
Во-вторых, указывается потенциальная проверяемость и перспективность данной теории. Скажем, вы утверждаете, что возможна реализация «Машины Времени», которая не будет противоречить принципу причинности. Для этого вводите понятие четырехмерной «СуперВселеной», в которой «обычные» трехмерные вселенные расположены на расстоянии кванта пространства, в четвертом пространственном измерении, с различным собственным временем, отличающемся, тоже, на квант времени. При этом, эти вселенные независимы, но похожи. И если вы, допустим, выйдете в четвертое пространственное измерение, то, тогда сможете перемещаться по этим вселенным, хоть в «будущее», хоть в «прошлое». Допустим, в «прошлом» нашли «себя» и каким-либо образом повлияли на него. Повлияет ли это на вас? Нет! Просто, когда «та» вселенная, по шкале времени доберется до текущего времени вашей вселенной, то там «вы» будете уже другим, т.е., не таким, как сейчас. Точнее, не вы, а ваш, очень похожий клон.
Противоречит эта «теория» «Машины Времени» «принципу причинности»? – Нет! Но, вас обязательно спросят: «Если это верно, то, как этого достичь?» Допустим, вы вывели новые уравнения Эйнштейна, имени вашего имени, которые показывают, что выход в четвертое пространственное измерение возможен с помощью отрицательной либо мнимой массы и даже предлагаете (дорогостоящую) технологию ее создания (по аналогии с созданием атома антиводорода, как антиматерии). Задача физиков экспериментаторов будет доказать, экспериментально, выводы вашей теории, либо опровергнуть их. Более того, в их среде, в ходу поговорка: «Всякая теория верна до тех пор, пока не будет опровергнута!». Просто оформите ваши утверждения в соответствующую упаковку и представьте, скажем, на форуме dxdy.ru. Если не получите поддержку, то хотя бы конструктивную критику.
Например, я доказал теорему Коши, «имени своего имени», для кватернионов ( https://scholium.narod.ru/Math/Scholium001-IntegralFormulaOfCauchyForQuaternions.pdf ). Пока, мне не написал польский математик, с критикой, что там есть неточность в доказательстве, в одном используемом факте, верным не всегда. Однако, если, для простоты, этот факт вынести в утверждение теоремы, то, тогда, «всё сходится» :) .
Может быть и у вас, после конструктивной критики научного сообщества, тоже все сойдется. Но, пока, мне ваша позиция не кажется сильной. Впрочем, на моё мнение можете не обращать внимание :) .
В данном случае, с концепцией вашей статьи:
я, совершенно, согласен. Настолько, что мне не требуются ни код, ни картинки для ее обоснования. Я бы и сам мог, вместо вас, порассуждать на эту тему. Например:
Сложность ведь разная бывает. Есть сложность элементная, а есть структурная. Элементов, всяких разных может быть много, но структура их взаимоотношений, может быть, простой, или, по крайней мере, понятной и обозримой. Это ваш первый случай. Во втором случае, элементов меньше, но расположены они в беспорядке, хаотично.
Примерно, как жена говорит мужу: «У тебя беспорядок на компьютерном столе. Дай, я наведу там порядок!». На что муж отвечает: «Ничего не трогай! Это не «беспорядок», это «творческий беспорядок»!» И, добавляет: «Беспорядок – это у тебя. На мой вопрос: «Где у нас сахар?», ты ответила: «В банке из под чая, на которой написано «соль»!».
Интересней было бы поговорить о сложности программных проектов. Как сделать, чтобы легко было понять собственный код, написанный несколько месяцев назад? Как правильно структурировать сам проект и код в нём? И как, вообще, «правильно» реализовывать программные модели? Желательно, на конкретных примерах.
«Профессор, не спешите, я записываю!». А что такое:
«пространстве смыслов»,
«квант смысловой онтологии» и
«элементарная нередуцируемая единица»?
Другими словами: «Атом Смысла» это элемент множества «Пространство Смыслов». Вы, что-нибудь, поняли? Я – нет!
Чем это лучше: «В начале было Слово!» («И это Слово было – русское» (с) А. Драгункин).
Думаю, что ваша теория не «взлетит». Ибо, противоречива в своей концепции определений.
Перефразируя «теорему Гёделя», можно сказать, то, что определено, как первооснова, – противоречиво, а то, что непротиворечиво – не определено.
Вот и выбирайте, на свой вкус: противоречивую определенность первоосновы либо ее непротиворечивую неопределенность. И вы никогда не разрешите эту дилемму. В этом случае, я бы выбрал второй вариант, что, кстати, все и делают.
Вам можно позавидовать! Я, программистские статьи, плохо воспринимаю без картинок. По принципу: «Лучше один раз потрогать, чем сто раз увидеть!» :) .
Я перелопатил «туеву хучу» опенсорсного кода на С++ и не разу он мне не понравился с точки зрения оформления и структуры.
Такое впечатление, что абсолютно все «приплюснутые» программисты, включая и наших и зарубежных, учились по одним и тем же сомнительным источникам, в части советов по стилю программирования.
В Си не нравится «монолитность» кода, точнее код там, обычно, оформлен как поток сознания их авторов, ничем не ограниченным «снаружи».
С++ – потенциально явно лучше. Он позволяет хорошо структурировать код на классы, неймспэйсы, файлы и каталоги, проекты и решения. Это, для меня, просто супер!
Но, вот стиль программирования, как правило, у всех ужасен. Главные претензии:
Когда нужно ставить разделители (пробелы и новые строки), – их не ставят, если это позволяет делать компилятор.
Когда не нужно делать лишние разделители – их, наоборот, делают.
Комментирование кода, обычно, небрежное.
Заголовки, сверху и снизу (в виде комментариев) для многострочных конструкций языка – не делаются либо делаются по принципу: «Нате вам и отстаньте!».
Не разделенная, мною, любовь всех злоупотреблять нижним регистром символов и излишне частым использованием символом «нижнее подчеркивание».
Часто, в одном файле, – слишком много классов.
Также не нравится, в пользовательских проектах, делать реализацию функций в h-файлах. Для библиотечных исходников, вроде, WTL – это нормально, поскольку их код я редактировать не намерен.
Ну, и так далее, по мелочам. Поэтому, Си-шный опенсорс я переделываю в С++-классы, вроде, консольного видеопроигрывателя FFPlay.c (скриншот подобной реализации для моей оконной программы можно посмотреть в http://scholium.webservis.ru/Pics/MediaText.png ).
А весь доступный «приплюснутый» код, я подвергаю, перед использованием, стилевому рефакторингу, под свой вкус, иначе, я не могу с ним работать. Хорошо, что, как программист, я всегда работал один. В команде я бы не ужился, разве что, только, в должности начальника «1С», по принципу: «Я начальник – ты дурак!» :) .
Для чужих проектов – те, которые компилируются без проблем. Если взять произвольный проект на С++, не говоря уже о Си, на Гитхабе и попробовать его скомпилировать из «коробки», то, с вероятностью 90% – не получится. Нужно, предварительно, долго плясать с бубном, чтобы данный проект просто скомпилировался. Не нравится, что авторы редко прикладывают к своим «шедеврам» скриншоты, не говоря уже о готовых бинарниках.
Поэтому, если чужой проект легко скомпилировался, то, тогда, даже его ужасный стиль не так раздражает. Ибо к стилевому рефакторингу мне не привыкать, тем более, что, при этом, лучше вникаешь в, собственно, код.
Интересны проблемы пользовательского интерфейса на C++ / WTL. Вот, неожиданно, для себя, столкнулся с вопросами рисования кнопок. Для кастомизации кнопок существует несколько методов. Наиболее типичные, это полностью собственные классы, наследование классов стандартных контролов, с внутренним сабклассингом либо без, и внешним сабклассингом стандартных элементов управления.
Мне нужна эмуляция кнопок, исключительно средствами пользовательского рисования. Другие методы работают, и даже этот метод работает, но «безоконное» рисование дочернего компонента (точнее, непосредственное рисование в главном окне приложения) приводит к «перемигиванию» других контролов, хотя, двойную буферизацию и обновление только субобластей, я использую часто, но, в данном случае, в буферизации не вижу смысла, а частичное обновление, почему-то, не работает.
Эти кнопки должны завершить мой очередной пет-проект, который может работать и без них (за счет клавиатурных команд, вроде, «энтера»). Однако хочется добавить их для «красоты», так, чтобы они не мешали работе других контролов. А почему мешают? – Пытаюсь разобраться.
Однако, поскольку я программирую как «свободный художник», то неинтересными задачами я просто не занимаюсь. Зачем? Когда и интересных хватает.
Я бы сказал больше, изучение иностранного языка либо активное творчество, вообще, сильно способствуют уменьшению разного рода болячек организма (даже переутомление зрения и малоподвижность, не так сильно действуют, как без серьезной работы ума) и, что особенно важно, увеличивают продолжительность жизни.
Короче говоря, в перефразе: «Здоровое тело любит активные мозги».
Я, лично, предпочитают более интересный для себя вариант. Сначала, написал обучающую программу «L'école», для изучения иностранных языков, по методу: «Запоминание руками + интерактивный звук», затем подготовил демо-данные по нескольким языкам, включая английский. И, после получения достаточного количества данных по французскому языку, набираю их руками, по сто фраз в день, с прослушиванием и проговариванием. И это гораздо менее скучно, чем обычная зубрёжка. Думаю, что, постепенно, «количество переходит в качество».
Последнюю версии программы и данных, можно посмотреть в моей статье: «Роль данных при изучении иностранного языка» : https://habr.com/ru/articles/930868/ .
Ну, подобные расширения найти на Гитхабе не сложно. Я оттуда много примеров скачал и подобный вашему там тоже есть, но смысла в нем не много.
Более интересной задачей была – скачать онлайн-словарь с озвучкой, для целей самообразования. Только сделать это, с пол пинка, оказалось сложнее.
Для одного из них хватило простого Питона (без сложных библиотек), а для остальных – старой версии Хром (версия 109), для того, чтобы сохранить возможность работы со второй версией манифеста. Поскольку, в последних выпусках Хрома доступен только третий манифест (насколько я знаю), а он уже имеет ограничения в работе, которых не было во втором манифесте. Это касается и блокировщика рекламы сайтов и работы с файлами. А Хром нужен для (ручного) обхода капчи – «дешево и сердито».
Другим словами, нужно было «ехать», а не «шашечки». И если эту задачу решает «велосипед», то зачем тогда нужен «мерседес?
Теперь, тоже самое, но чуть подробнее.
Я, без особых проблем, скачивал онлайн-словари и mp3-файлы к ним на десятки тысяч слов, используя собственное расширение Хром. Правда, приходилось выставлять паузу – пять секунд, между запросами, зато, вэпээн-ом пользовался редко. Полученные html-страницы, естественно, пришлось конвертировать в более удобоваримый вид (в конечном счете – текстовый), но, в итоге, нужные мне данные я получил.
Если говорить не «вообще», а «конкретно», то вполне можно использовать веб-скрапинг с помощью расширений на старых версиях Хрома, все еще поддерживающих вторую версию манифеста.
При этом, начальную капчу можно проходить вручную, потом это дает нам какое-то количество времени (обычно, минут 5 – 30) до появления следующей капчи. Во время этого интервала мы запускаем свой небольшой скрипт расширения, который с небольшой задержкой, скажем, секунд пять, делает запросы на загрузку необходимых html-страниц, которые мы просто тупо сохраняем в своем каталоге. Их обработкой мы можем заняться потом, когда уже всё скачаем, Это может быть и сотня тысяч страниц.
При этом, в процессе скачивания страниц мы можем отследить начало сбоя. В Хроме это хорошо видно. Останавливаем скрипт, переинициализируем его, при необходимости, снова вручную набираем соответствующий url в Хроме, опять проходим капчу (при подозрении сервера, он может запрашивать ее несколько раз). Для профилактики подозрений, периодически меняем ай-пи, например, посредством вэпээна.
Скриптом расширения, хотя там всего пара десятков строчек, делиться не буду, чтобы не палиться. Раньше я использовал скрипты Питона для аналогичных целей, пока не столкнулся с капчей. С ней возникли проблемы, пока не нашел в Интернете подходящий прототип расширения на базе второй версии манифеста (как я уже говорил, современный Хром поддерживает только третью, значительно урезанную в своих возможностях). Слегка доделал его «напильником» и вуаля…
В итоге, загрузил два разных сайта, порядка ста тысяч страниц. На каждый ушло по месяцу, примерно. Сайты крутили время доступа, между капчами, от 5 до 30 минут, потом обратно. Это несколько напрягало, но, параллельно, занимался другой работой, да и спешить мне было особо некуда.
Сначала увлекался, задержки между запросами были нулевые и сайты мои вэпээны быстро банили. Но всегда их «хавали» при ротации. Допускаю, что, сервера слишком надеялись на свои капчи и другие способы защиты особо не использовали, хотя, я постоянно ждал подвоха с их стороны.
Как бы там ни было, все сработало, результат я свой получил. Были еще проблемы, связанные с необходимостью рендеринга страниц, но уже для других сайтов. Для этого тоже нашел подходящие прототипы для Хрома. Начальные эксперименты были удачны, но потом, просто, по разным причинам, интерес, к этим серверным данным, пропал, и этот проект я забросил до тех пор, пока не возникнет аналогичная потребность снова.
Таким образом, на универсальность не претендую, но свои личные проблемы решил. Более того, все данные корректны, я их полностью обработал и проверил. А вот, когда работал с подобными скриптами на Питоне, без капч, то, да, за ними нужен был глаз да глаз. Данные отгружали всегда, но после небольшого объема корректных данных начинали поступать некорректные. Да и задержку между запросами там нужно было выставлять секунд пятнадцать, не меньше, ибо очень подозрительные сервера были. Зато особо не придирались к ай-пи, можно было работать без вэпээна. Короче говоря, везде использовал специфику частных случаев…
Целая бригада специалистов, из фирмы «1С», внедрила «1С:MES» на заводе «Камаз». На их блог подписываться не надо? Тем более, что конкретики там было на порядок больше, причем, самой интересной, со стороны разработчиков, а не тестеров.
А наш разум – часть нашего тела. А наше тело – часть нашего Мира и так далее, пока не закончатся все субстанции.
На самом деле, это разговор ни о чём. Вы говорите так, я говорю иначе. Кто прав?
Смотрите, подсознание работает задолго до того, как появляется сознание. Думаю, практически, с момента зачатия. При этом, развитие материальной оболочки сознания – тела плода – поддерживается извне, пока не появится новорожденный. Да и внешнее кормление его потом происходит еще долго. Подсознание обеспечивает жизнедеятельность рожденного и его развитие.
Сознание «включается» позже. А кто его «включает»? Естественно, наша операционная система – подсознание. У меня оно включилось мгновенно, в два года, на пару минут. Но я сразу полностью осознал реальность, себя, сохранил память об этом событии и т.д. Вот и спрашивается, кто и что, при этом, часть чего?
Подсознание может управлять сознанием, например, перевести вас в состояние сна либо «потери сознания». Скажем, шел человек по коридору – потерял сознание, упал, через пару секунд – оклемался, встал и пошел дальше. Или, выхлопные газы, в автобусе, попали в салон. Слабый, мгновенно потерял сознание, очнулся, лежит на траве, вокруг суетятся пассажиры. Этим что, управляет сознание?
Сознанию нужен сон, для нормального функционирования, а подсознанию не нужен, оно работает постоянно, как сердце. Да, вы можете, в какой-то мере, влиять на свое подсознание, посредством медитации, аутотренинга и самогипноза. Но, это все похоже на «костыли», а не на реальную, естественную, технологию.
А у человека есть еще надсознание, которое живет и развивается во сне и им тоже управляет подсознание. Вот вам и вопрос, «на засыпку»: «Какое из ваших трех «Я» самое истинное? «Я»-подсознание, «Я»-сознание либо «Я»-надсознание?
Естественно, противоположной аргументации я не ожидаю услышать Джентельменам, ведь, принято верить на слово?
Специально, ради вас, посмотрел вики, на эту тему. И что я вижу:
И какое это имеет отношение к морали? Назовите это поведение аморальным – правдивее будет.
Для этого не нужно употреблять слово мораль. Говорите прямо: «Уголовный Кодекс», «Законы государства», «Налоговый Кодекс», «Гражданский Кодекс» или, если хотите, «Международное Право», «Морское Право» либо даже «Порядок, основанный на правилах». Подобных сводов – масса, но это не мораль, это юридически обязывающие, либо не очень, требования к выполнению со стороны властей либо сильных Мира сего.
Есть еще разные религии с их требованиями соблюдать определенные ритуалы и много чего подобного. Но, это все не мораль, а прямые указания сильных – слабым.
Мораль, это когда вас не заставляют что-то делать, но вы считаете что делать так надо, либо, наоборот, не надо, в соответствии со своей совестью и внутренним мировоззрением.
Даже «Моральный Кодекс строителя Коммунизма» это не вполне мораль, а общественные требования общества к своим сторонникам.
Мораль это ближе к совести, которой у англосаксов нет. Ну, а если не бывает угрызений совести, то о чём, вообще говорить? Тогда, честнее будет сказать, что жалость и сострадание – это удел слабых, что учет чужих интересов мешает зарабатывать деньги, что доброта – не выгодна, хотя, англосаксы, считают, что, иногда, всё же – выгодна! Другими словами, придерживаться культа аморальности, т.е., полного отсутствия даже намёков на моральность собственных поступков. А вы говорите, что нет «моральных полюсов». Моральность и аморальность – вот эти полюса!
Речь не об этом. Можно не делать добро, но, главное, не делать зла, без достаточной на то причины, например, при отражении агрессии.
Странно, что вы вообще эту тему затрагиваете, хотя вы ее совершенно не чувствуете и пытаетесь всё свести рациональным поступкам…
У меня было проще. Меня пригласили на фирму и уже там я начал свои эксперименты, от попытки внедрения всех, потенциально подходящих, программ, которые были на рынке, до понимания того, что стратегически верно – создать собственную программу учета, и это оказалось правильным решением.
До этого я работал там по договору, по которому создавал, на «семерке», новые версии использовавшихся там, небольших программ, написанных другими программистами. Причем, техзадания писал для самого себя, которые сам и реализовывал. Руководству было всё равно, главное для них был результат. Его я и обеспечивал.
У нас был – недорогой. Обычная должность «ведущего программиста», в штатном расписании. Зарплата, чуть выше средней, по предприятию. И, вообще, большими российскими зарплатами мы не были избалованы, поскольку вошли в РФ совсем недавно. Несколько месяцев среднего, по Ростовской области, дохода, это был мой предел.
Тем не менее, после прихода нового российского собственника на наше предприятие, он начал перевод нашей системы учета на свою собственную. Тоже, кстати, самописную, только, основанную на веб-технологиях, которая у них уже работала много лет. Потом, незадолго до ликвидации нашего предприятия, он начал делать переход, в части «зарплаты», на ЗУП, причем на всех фирмах, которыми владел. В нашем случае, перейти не успел, в силу ликвидации предприятия, а как на других, не знаю.
Возможно, для малых предприятий проще использовать типовую, чем для крупных. Да и не нравится мне сам подход, когда пользователь звонит в техподдержку и говорит, что у него что-то не делается либо делается, но не так как надо. А ему отвечают: «Меняйте свои бизнес-процессы, мы, ради вас, менять конфигурацию не будем!».
Скажем, я пробовал делать расчеты в ЗУПе, для наших самых «сложных» сотрудников. Но, если в моей программе это выполнялось на «раз-два», то в ЗУПе надо было очень долго «плясать с бубном». Да, в итоге, я получил нужный мне результат, но мне такая работа совершенно не понравилась. У меня всегда было чувство, что разработчики типовых делали их по принципу: «Нам с ними не работать!».
Однако, поскольку в РФ появилось много новой отчетности, которую мне влом было реализовывать в своей программе, то я начал делать просто конвертацию своих, уже рассчитанных данных, в типовую «зарплату». Подобный метод меня часто выручал, поскольку в России есть масса независимых программ («электронные больничные», «электронная трудовая книжка», «налогоплательщик», веб-сервисы госотчетности и т.п.), с которыми работать тяжело, а иногда даже и экспортировать туда свои данные, тоже – абсолютно нетривиально. Однако, после переноса данных, «не мытьем, так катанием», работать с ними было уже гораздо проще, включая проверку и шифрование данных, электронные подписи, передачу в госорганы и т.п.).
Так что связка: основной расчет «у себя», а внешняя отчетность в «официальной» программе, после переноса туда своих данных – работает очень эффективно. И я один делал то, что на других фирмах выполняли несколько человек.
Тем не менее, есть такая конфа: «Магазька», для малого и частного торгового бизнеса, которую делает один независимый программист. Сама программа не дорогая, но её автор, на своем сайте, хвастался, что, благодаря ей, купил себе квартиру в Москве и иномарку. И это ведь притом, что есть более дешевые альтернативы, в виде типовых торговых конфигураций, для небольшого бизнеса. Просто: «Лучгее – враг хорошего!».
Мне эта тема близка, только я работал в «среднем» бизнесе, точнее, производственном предприятии. Там мне пришлось написать, с нуля, учетную конфигурацию, которая кормила меня двадцать лет. И еще столько бы, если бы фирму не ликвидировали бы, по политическим мотивам. Что, в общем-то, немного, обидно, ведь мы живем на «новой территории» – Донбассе, который, ныне в составе России. Сначала, несколько месяцев, после прихода новых собственников, мы почувствовали вкус к жизни, а потом, нас, так сильно обломали.
Но, как говорится, нет худа, без добра. Появилось свободное время и можно уже заняться написанием собственных пет-проектов и публиковать их здесь.
CRM, мне, конечно, мало интересен. Моя основная специализация, как программиста, была учет заработной платы и рабочего времени, вместе с клиент-банками, плюс запустил собственный учет ресурсов, на нашем производственном предприятии, со своей спецификой. Правда, новая главбухша смогла последний перевнедрить на типовую конфигурацию «1С», Тут она – молодец, знала то, чего я не знал. Однако, повторить подобный финт с «зарплатой» она не смогла, хотя я был в этом заинтересован не меньше её.
Про «1С» я могу сказать одно. По факту, типовые конфигурации ее это, по сути, полуфабрикат. Но, большим плюсом этой платформы является то, что это система быстрой разработки. И если не пожалеть нескольких месяцев или пары лет на разработку, в одиночку, собственной конфы, для не вполне стандартных бизнес-процессов, то потом можно жить, лет двадцать, только за счет своей программы. Как я всегда любил говорить: «Сначала я работал на свою программу, потом программа работала на меня». Что легко позволило мне пережить смену трех государств и их законодательств: Украины, ЛНР и РФ. С типовыми, я бы сильно намаялся, особенно, в переходные периоды.
Пользуйтесь «методом здравого смысла»! Тогда, подобных, схоластических, вопросов будет меньше.
В программировании одни и те же задачи можно решить разными способами. Иногда, даже трудно отдать предпочтение, какому-либо варианту решения, кроме как, на уровне: нравится / не нравится.
А сформулированная проблема, у вас, слишком примитивная, чтобы пытаться ее как-то «разрешить». Нужна реальная задача, в контексте, и тогда уже, на уровне здравого смысла, можно пытаться ее решать, с тем или иным уровнем оптимизации.
Я, например, когда разрабатывал свою обучающую программу «L'école» ( https://habr.com/ru/articles/930868/ ), то чуть мозги себе не сломал, выстраивая непротиворечивую иерархию собственных классов, по работе с одними и теми же данными. И все «мудрые» советы по «правильному» оформлению классов, как оказалось, «яйца выеденного не стоили». Пока, не плюнул на них и стал руководствоваться исключительно здравым смыслом.
В итоге, одних только блок-схем используемых классов, со схемами взаимодействия между ними, нарисовал, для себя, не менее двадцати, не считая несколько десятков вариантов алгоритмов и их фрагментов, написанных в текстовом виде.
Оптимальна ли полученная реализация? Не уверен, скорее нет, чем да. Но, пока, работает, и я по ней учу, в данном случае, французский язык. Но, когда созрею, напишу ее вторую версию и уже тогда, возможно, опубликую исходный код.
Поэтому, совет. Не страдайте детством. Работайте с серьёзными вещами, которые уже есть смысл обсуждать здесь.
Ваш текст совершенно ни причем. Просто вы дали повод поговорить на эту тему, безотносительно содержания самого текста.
Думаю, что вы смотрите на проблему морали «снизу», как слепые, который щупают слона и пытаются дать его описание. Кто держится за хобот, у того появляются одни представления, кто за хвост – другие, а за ногу – третьи. И все будет верно, но только локально.
У вас тоже, всё верно, но только локально. Я попытался взглянуть «сверху» или глобально. Естественно, земля с высоты птичьего полета будет не такой, как на ее поверхности. Поэтому, вы и не готовы услышать альтернативную точку зрения. Которая, по сути, очень проста: «Мораль это желание учитывать чужие интересы». Здесь вы не спрячетесь за бытом. Вы либо уважаете интересы окружающих, либо нет, например, спокойно допускаете, ситуацию, когда решаете свои проблемы за чужой счет. Мол, я молодец, а «лох» – нет, раз позволил обвести себя вокруг пальца. «Без лоха – жизнь плоха», как говорят блатные.
И не надо путать «личный выбор» с моралью. Это разные вещи. Вы можете выбрать пойти учиться в один ВУЗ, а ваш друг – в другой. Вы можете хотеть иметь в браке – мальчика, а ваша жена – девочку и т.д. и т.п. При этом, вы все можете придерживаться как одной морали, не важно, даже, что вы под этим понимаете, так и разной. Одно с другим никак не связано.
Лучше почитайте мудрые цитаты, вроде:
«Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'a la mort pour que vous ayez le droit de le dire.» : «Я не согласен с тем, что вы говорите, но я буду сражаться прямо до смерти за то, чтобы вы имели право это говорить.»
Да, это абстрактная максима, но она рекомендует быть терпимым к чужому мнению…