Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Языки программирования

Автор Devorator linguarum, октября 31, 2018, 18:59

0 Пользователи и 1 гость просматривают эту тему.

Bhudh

Цитата: From_Odessa от ноября  2, 2018, 11:59Юкозовский шаблонизатор в рамках ХТМЛ (в смеси с ХТМЛ)? Или нет?
Именно так.
Обрабатывается это не HTML-парсером браузера, а PHP-парсером Юкоза.
То, что между <? и ?> это вообще чистый PHP (это его скобки).
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: Bhudh от ноября  2, 2018, 13:38
Цитата: From_Odessa от ноября  2, 2018, 11:59Юкозовский шаблонизатор в рамках ХТМЛ (в смеси с ХТМЛ)? Или нет?
Именно так.
Обрабатывается это не HTML-парсером браузера, а PHP-парсером Юкоза.
То, что между <? и ?> это вообще чистый PHP (это его скобки).
Скобки такие же, а вот их содержимое — не php. Напр., обратите внимание на $, обрамляющие переменные с обеих сторон (в php $ только слева), или на if/else/endif, отличающийся от обоих вариантов синтаксиса, принятого в php — нужно либо двоеточия добавить, либо убрать endif и добавить фигурные скобки.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Python

Цитата: Bhudh от ноября  2, 2018, 15:53
Цитата: Python от ноября  2, 2018, 14:54обратите внимание на $, обрамляющие переменные с обеих сторон
Так это переменные шаблонизатора, те же, что и в HTML-части кода.
Шаблонизатор их переводит в их значение, а потом уже подаёт на вход PHP-интерпретатору.

Цитата: Python от ноября  2, 2018, 14:54на if/else/endif, отличающийся от обоих вариантов синтаксиса, принятого в php
:??? Фигурные скобки в PHP, как и в JS, для единственного оператора не обязательны.
И двоеточия зачем? Там же не тернарный оператор.
В php есть два варианта if:
1) аналогичный используемому в C/Java/JS — ключевое слово endif не используется, два и более оператора требуют фигурных скобок. (Фрагмент внешнего html-текста — это точно один оператор? Как ведется подсчет — где кончается else?.. В общем, без {} пропадает ясность и возникает риск создать нечто глючное.)
2) позже добавленный вариант с endif и elseif — с двоеточиями вконце заголовков секций и возможностью нескольких операторов в каждой секции условной конструкции:
if ($a == 5):
    echo "a равно 5";
    echo "...";
elseif ($a == 6):
    echo "a равно 6";
    echo "!!!";
else:
    echo "a не равно ни 5 ни 6";
endif;


Да, еще обратите внимание в юкозовском примере на = там, где по логике php должно быть ==
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Уже посмотрел, что напрочь забыл Pythonʼоподобный вариант ветвления.
Значит, это всё PHP-подобный шаблонизатор.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

From_Odessa

Цитата: Python от ноября  1, 2018, 23:39
Тут я несовсем согласен с мыслью, что язык второстепенен по сравнению с алгоритмом
Если Вы отвечали (хотя бы частично) на мои слова, то тут надо учесть, что я - дилетант ) С программированием знаком слабо, а с языками - совсем слабо, с тем же С++ поверхностно (да и пользовался им последний раз, кажется, 15 лет назад), с другими - почти никак (если не считать вот тот самый шаблонизатор Юкоза). Так что, конечно, я могу нести полную или частичную ерунду. И не с Вами мне об этом спорить ) Правда, такое же мнение высказывал мой преподаватель информатики в университете (что главное - алгоритм), который к тому времени, если не ошибаюсь, был практикующим программистом где-то с 30-летним стажем. Но это мнение лишь одного специалиста. К тому же, возможно, он как раз всю или почти всю карьеру пользовался языками, где все делается сходным образом.

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

Python, Вы не могли (или кто-то другой) на пальцах и простым языком объяснить мне, чем отличаются языки с ООП (для ООП) от других? Лучше всего на примере сходных языков, один из которых ООП, а второй - нет.

Bhudh

Цитата: From_Odessa от ноября  2, 2018, 16:35чем отличаются языки с ООП (для ООП) от других?
Наличием ООП ;D.
Ну, вернее, наличием специальных средств для объединения разнородных данных в одну сущность, причём с наличием в этой же сущности (или в более высокой, но это относится уже конкретно к наследованию) средств обработки этих данных.
Сущность, объединяющая данные, зовётся объект, а конкретная функция, находящаяся в объекте и имеющая доступ к его данным, обычно называется метод.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

_Swetlana

ООП отлаживать/радактировать хорошо. Изменил в одном месте - и всё. А при традиционном структурном программировании лазишь по всей программе и переделываешь, переделываешь.
Поздно я это поняла, когда делали последний хоздоговор.
🐇

From_Odessa

Цитата: Bhudh от ноября  2, 2018, 16:55
Наличием ООП ;D.
Ну, вернее, наличием специальных средств для объединения разнородных данных в одну сущность, причём с наличием в этой же сущности (или в более высокой, но это относится уже конкретно к наследованию) средств обработки этих данных.
Сущность, объединяющая данные, зовётся объект, а конкретная функция, находящаяся в объекте и имеющая доступ к его данным, обычно называется метод.
Спасибо. Попробую уточнить. Вот тот же С++. Он - язык ООП. Что в нем есть, чего нет в языках не ООП? В С++ есть классы. Это и делает его языком ООП?

Цитата: _Swetlana от ноября  2, 2018, 17:13
ООП отлаживать/радактировать хорошо. Изменил в одном месте - и всё. А при традиционном структурном программировании лазишь по всей программе и переделываешь, переделываешь.
Вы имеете в виду, что при ООП достаточно изменить что-то там, где объявлялся класс, изменить что-то в теле класса, и это изменит все, что в программе связо с ним?

Python

ЦитироватьТак что, конечно, я могу нести полную или частичную ерунду.
Не ерунду — мысль вполне правильная, очень многие вещи на разных языках различаются лишь внешним оформлением, либо эти различия не так уж сложно устранить/заменить близким аналогом. К тому же, активно развивающиеся языки стремятся к реализации одних и тех же возможностей, которые были реализованы раньше у других. Допустим, C, Pascal и другие типичные языки того времени используют примерно один и тот же набор типов данных, алгоритмических конструкций, базовых операций — как и любой другой процедурный язык, создвавшийся в 70-е—80-е под влиянием идей ALGOL-60, а чуть позже BASIC и FORTRAN начала 90-х тоже уже имели вполне структурированный вид. В 90-е установилась мода на объекты и классы — место процедурных языков заняли их объектно-ориентированные диалекты/потомки (C++, Delphi, VisualBasic, Java и пр.), после 2010 модной тенденцией стало функциональное программирование (в последних версиях популярных языков, как правило, есть лямбды, замыкания и пр.)... В конечном итоге, программисты на разных языках используют примерно один и тот же инструментарий.

Я говорил лишь, что несовсем согласен. Чтобы можно было ощутить влияние языков на код, их возможности должны различаться достаточно радикально. «Интересный» язык должен быть в чем-то очень оригинальным, а в чем-то, возможно, очень урезанным.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Цитата: From_Odessa от ноября  2, 2018, 17:31Вот тот же С++. Он - язык ООП. Что в нем есть, чего нет в языках не ООП? В С++ есть классы. Это и делает его языком ООП?
Если есть классы, это уже более узкий тип класс-ориентированного программирования.
Но в принципе верно. Делает его языком ООП то, что в нём есть классы и экземпляры этих классов.
Не будь экземпляров-объектов: какое тут к чертям ООП?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: From_Odessa от ноября  2, 2018, 17:31
В С++ есть классы. Это и делает его языком ООП?
Безусловно.
Хотя, с другой стороны, классы в С++ можно и не использовать, а писать программы в C-подобном процедурном стиле. А вот если взять более чистый в плане ООП язык, как Java, то там попросту нельзя написать программу, не создав хотя бы один класс, в который заворачивается функция main (впрочем, неуверен, можно ли считать классом такой класс без экземпляров и потомков, или же его правильнее было бы считать модулем).

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

С точки зрения внутренней реализации, объект (экземпляр класса) представляет собой структуру с указателями на функции-методы (размещенные непосредственно в структуре или вынесенные за ее пределы в таблицу методов). Такого рода структуру можно создать и в процедурном языке типа C, где понятие «класс» изначально отсутствует. Так что ООП-подход возможен и в языках, непосредственно под ООП не заточенных.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Цитата: Python от ноября  2, 2018, 18:09в последних версиях классы там тоже появились
Там появился лишь синтактический сахар с зарезервированным с момента создания JS словом class.
Прототипное наследование как было, так и осталось.
Даже приватных и статических свойств не ввели.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

_Swetlana

Да, изменяешь в описании класса, автоматически меняется во всех экземплярах.
До какого-то размера программы структурное программирование - милое занятие, и нечего тут огород городить. А потом вдруг раз - пушной зверь подкрался незаметно.
У меня, правда, была специфика. Эвристические алгоритмы отлаживают на реальных данных - вносят изменения, меняют настроечные константы и пр. И мне в голову приходили разные хорошие мысли,  два-три раза в день. Каждый день два раза я меняла алгоритм и вносила изменения в программу. Вот тут я поняла, что ООП - это сила, но было уже поздно.
🐇

Bhudh

Цитата: _Swetlana от ноября  2, 2018, 18:52Каждый день два раза я меня алгоритм
Offtop
Начинает что-то подозревать.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

_Swetlana

Цитата: Bhudh от ноября  2, 2018, 18:53
Цитата: _Swetlana от ноября  2, 2018, 18:52Каждый день два раза я меня алгоритм
Offtop
Начинает что-то подозревать.
А что?
Offtop
самой интересно ста
🐇

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Ömer

На работе пишу, в основном, на C# и Powershell.
Самый любимый -- язык Mathematica.

Вот, например, как задать в Mathematica функцию факториал.

f[1]:=1
f[n_]:=n*f[n-1]
ya herro, ya merro

злой

Цитата: svarog от ноября  2, 2018, 19:13
На работе пишу, в основном, на C# и Powershell.
Самый любимый -- язык Mathematica.

Вот, например, как задать в Mathematica функцию факториал.

f[1]:=1
f[n_]:=n*f[n-1]


На первый взгляд напоминает Лисп и прочую лямбду.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

_Swetlana

Цитата: svarog от ноября  2, 2018, 19:13
На работе пишу, в основном, на C# и Powershell.
Самый любимый -- язык Mathematica.

Вот, например, как задать в Mathematica функцию факториал.

f[1]:=1
f[n_]:=n*f[n-1]

Испорченный Пролог  ;D
Программа неправильная. Задайте n=0, например.

       
🐇

злой

Ещё в последнее время в моде асинхронность. Правда, у тех же Node.js и PHP она не совсем настоящая, однопоточная, но это, с одной стороны, и хорошо, с истинной параллельностью выполнения и реентерабельностью кода вообще мозги в  баранку скрутятся, как сделать так, чтобы одна функция не убегала вперёд другой. Хотя, кажется, есть истинно многопоточная реализация асинхронности для Java, и вроде как Erlang. Сам с ними не работал.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez


Upliner

Цитата: злой от ноября  2, 2018, 19:44Хотя, кажется, есть истинно многопоточная реализация асинхронности для Java
Что есть по вашему "истинно многопоточная реализация асинхронности"?
Если уж на то пошло, то любой поток работает асинхронно. Проблемы возникают если разные потоки используют одни и те же данные. Классический способ решения этих проблем -- мютексы.
Но в последнее время всё более проявляется мода на другой подход -- вообще свести к минимуму расшаренные между разными потоками данных. Насколько я слышал, например в Rust каждый объект жёстко привязан только к одному потоку и другой поток может к нему обратиться только "одолжив" его -- на время перепривязав к себе.
Аналогично в Golang -- мютексы там есть, но считаются "неизбежным злом", жёсткой привязки объектов к потокам тоже нет. Однако использование мютексов не рекомендуется, и вместо этого рекомендуется, чтобы с данными работал только один поток, а остальные потоки получали данные от этого потока по специальным каналам.
Поставити Убунту на ноут зможе навіть мій кіт
(с) одкровення медсестри з бородою

Python

Если сделать данные по умолчанию immutable, как в Clojure, то половина проблем с синхронизацией отпадает. Впрочем, изменяемые объекты в нескольких вариантах для межпоточного взаимодействия там тоже имеются.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Цитата: злой от ноября  2, 2018, 19:44Правда, у тех же Node.js и PHP она не совсем настоящая, однопоточная
В JS (Node.js — это всего лишь серверная реализация JS-движка V8, а не отдельный язык) для параллельных вычислений есть Web Workers.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

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

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр