LINUX.ORG.RU
ФорумTalks

[ну раз уж пошла такая пьянка] Скриптовые языки как религия


0

2

Почитал тут, подумал и придумал. Perl имеет много общего с иудаизмом - некое тайное знание для избранных Python напоминает христианство - создан как попсовый вариант Perl понятный и чайникам однако в нем много концептуальной каши. Perl6 это иудаизм современный для адептов не признавших Мессию. Ruby это ислам - концептуальной каши меньше чем в Python, но это компенсируется большим радикализмом и строгостью в отношении догматов и также создан под прямым впечатлением от Perl. ПРи этом очень прост и понятен простому народу. Что интересно и относительная хронология появления Perl/Python/Perl6/Ruby таки совпадает с появлением иудаизма/христианства/талмудического иудаизма/ислама

/me выдохнул

Интересно, какие языки претендуют на звание зороастризма и буддизма?

★★☆☆☆
Ответ на: комментарий от VladimirMalyk

Си - всё таки типизированный язык. Это даёт ощутимые примущества для средних и больших программ, но писать крошечные не всегда удобно.

Но почему не годится? В данном конкретном случае годится замечательно. Можно написать так:

struct { char * name; int age; } humanz[] = {
  { "вася", 16 },
  { "петя", 17 },
  { "вова", 19 },
  { "саша", 14 },
};

а в питоне такого нет, насколько я знаю. Все эти бесполезные name и age придётся повторять для каждого человека. А вот случаи, когда пары ключ-значение действительно нужны в большом количестве (например, статистика по словам) - это совсем другое, такое нужно гораздо реже, чем просто список структур.

Ваши придирки к звёздочке какие-то странные. Если не понимаете и боитесь указателей - так и скажите.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

то что я имел ввиду достаточно точно реализуется при помощи QMap<QString, int> (говорю о Qt).

что же касается struct - с точки зрения разработки это скорее класс без методов, нежели на контейнер. тот же дейтл именно так преподносит классы когда пишет о плюсах по сравнению с чистым С. точно не скажу, но звучит аля «классы есть дальнейшее развитие понятия структур».

не то чтобы я боялся указателей - они меня смущают. я пока не готов сказать чем именно, но на уровне ощущений мне не нравится что они применяются избирательно.

VladimirMalyk ★★★★★
()
Ответ на: комментарий от Zhbert

> и так С++ есть, просто не все его осиливают и плодят скриптовые язычки.

Поржал, спасибо.

oh
()
Ответ на: комментарий от cvb

> и так С++ есть, просто не все его осиливают и плодят скриптовые язычки.

Каждый еврей знает иудаизм, но не каждый еврей достоин быть равином.


Руби под впечатлением от перл??? Да ты наркоман.


Вперед, в гугл

oh
()
Ответ на: комментарий от svu

>как насчет awk?

Это культ золотого тельца. Мало кто помнит в чем он заключался однако те кто вернулся на awk с perl были подвергнуты жестокой каре в строку длиной

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от cvb

> в остальном если от перла что и позаимствовано то явно этого не видно.

Регулярные выражения цельнотянуты, строчки вида бла-бла if бло-бло Да и сам Мац пишет что основные идеи взяты из Perl

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от Yareg

> А каким языком будет атеизм?

VBScript.

Nxx ★★★★★
()
Ответ на: комментарий от VladimirMalyk

>то что я имел ввиду

Мне видится, что написали вы не то, что имели ввиду, ибо использование map<name,age> решает какую-то очень странную задачу. Между прочим, прямом аналогом питоновских словарей и пхпшных хешей является map<string, variant> (я не указываю неймспейсы, потому что map, string и variant есть и в qt и в stl+boost и наверное ещё где-нибудь).

>что же касается struct - с точки зрения разработки это скорее класс без методов, нежели на контейнер

Что-то вы сильно ограничиваете себя. Класс-некласс, контейнер-не контейнер. Данные хранить можно, в комок не слипаются, от сырости защищены - значит средство используем.

>не то чтобы я боялся указателей - они меня смущают

Не смущайтесь указателей, они клёвые. От ссылок они отличаются синтаксисом и возможностью заняться арифметикой. Арифметика в пределах массива совершенно безвредна.

Избирательно они применяются потому что использовать их везде бессмысленно, а совсем без них не обойтись.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Вот сколько строк на С++ займет реализация подобного?

while (<>) { # прочитать строку ввода
if (/\[A-z][a-z]+ [a-z]+)\]/) { #Выделить строки, содержащие параметр вида [Drosophila melanogaster]
$species{$1} = 1; #создать или перезаписать (если есть) название вида в хэш
}
}

foreach (sort(keys(%species))){ # в алфавитном порядке
print «$_\n»; # вывести значения ключей на экран
}

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

>Регулярные выражения цельнотянуты

Регэкспы из перла кто только не тянул. Те-же пыхпых с жабаскриптом. В js даже синтаксис объявления оставили.

legolegs ★★★★★
()
Ответ на: комментарий от DNA_Seq

А зачем здесь хэш юзать?
Алсо, не думаю, что на c++ это будет больше места занимать, просто будет сложночитаемо.

oh
()
Ответ на: комментарий от oh

>Алсо, не думаю, что на c++ это будет больше места занимать

Будет, будет. Во первых придется подключить библиотеку с регэкспами, во вторых вместо хешей придется применять цикл для удаления дублирующих строк

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от Shimuuar

походу, С++ уже стал скриптовым языком?

man cint

Отставить извращения

С++ само по себе извращение, так что конкретно это извращение кардинально дело не меняет.

Evgueni ★★★★★
()
Ответ на: комментарий от oh

Выхов внешней программы уже сам по себе дает немалый оверхед. Вот и выходит с такими программерами что жаба быстрее си

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

>Буддизм это что-то из функциональщины с ленивыми вычислениями - минимум лишних сущностей. Зороастризм - один из первых ООП-языков

Т.е. Common Lisp может претендовать на звание обоих религий?

Nebuchadnezzar ★★★★
()
Ответ на: комментарий от redgremlin

>>if (/\[([A-z][a-z]+ [a-z]+)\]/)

Может, все-таки так?


О, исправил! Хотя и с пропущенной [ нормально работать будет

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

Ну 20. И?

#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>
#include <boost/regex.hpp>
using namespace std;
using namespace boost; 
int main() {
   string s;
   set<string> species;
   regex expression("\\[([A-Z][a-z]+ [a-z]+)\\]"); 
   smatch what; 
   while (getline(cin,s).good()) {
      if (regex_match(s, what, expression)) {
          species.insert(what[1].str());
      }
   }
   copy(species.begin(),species.end(),ostream_iterator<string>(cout,"\n"));
}
┌[user@localhost ~/programming]
└> g++ -Wall -Wextra read_sort.cpp -o read_sort -lboost_regex
┌[user@localhost ~/programming]
└> ./read_sort
[Bla bla]
[Ass hole]
[sha la]
[Lla]
[Ass hole]^D
Ass hole
Bla bla
legolegs ★★★★★
()
Ответ на: Ну 20. И? от legolegs

20 строк против 10 (из которых половина - комментарии) и подключение 6(!) библиотек

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от Evgueni

>Комментарии выкинуть, всё ужать до двух.

А потом будут говорить, что на перле удобно елочкой листинг делать. Мне, как старому дельфисту, даже отсутствие «use strict;» и «my» глаза режет.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

Для двустрочных скриптов без разницы - главное чтобы работало :)

Если же приходится писать программу длинной более одной страницы - то тогда появляются и use strict, и комментарии, и прочие прелести.

Evgueni ★★★★★
()
Ответ на: комментарий от yoghurt

>По сути Руби это Смолток с перловым синтаксисом

Руби это довольно кособокий смолтоко-лисп с алголоподобным синтаксисом и перловой стандартной библиотекой. По крайней мере that was the idea.

в остальном если от перла что и позаимствовано то явно этого не видно.


то ли ты не видел руби, то ли ты не видел перла)

volh ★★
()
Ответ на: комментарий от amonymous

>З.ы. С++ сатанисты смотрят на ваши скриптовые религии как на сами знаете что.

ты прав.

volh ★★
()
Ответ на: комментарий от DNA_Seq

>20 строк против 10 (из которых половина - комментарии) и подключение 6(!) библиотек

1. Надо считать не строки, а кол-во символов, ибо строка «}» печатается меньше секунды.
2. Синтаксис С++ со скобками гораздо более читабельнее питона.
3. IDE для С++ позволяет не печатать эдак 70% кода вообще.

amonymous
()
Ответ на: комментарий от amonymous

>2. Синтаксис С++ со скобками гораздо более читабельнее питона.

Там Перл, если что. Где скобки ставить не возбраняется.

redgremlin ★★★★★
()
Ответ на: комментарий от volh

луа - это религия каких-нибудь латинасов с амазонки

oh
()
Ответ на: комментарий от Evgueni

> С++ само по себе извращение, так что конкретно это извращение кардинально дело не меняет.

А что оно уже научилось не глючить, выдавать нормальные сообшения об ошибках и хотя бы STL'ю?

Shimuuar
()
Ответ на: комментарий от volh

Руби это довольно кособокий смолтоко-лисп с алголоподобным синтаксисом и перловой стандартной библиотекой. По крайней мере that was the idea

ok

>в остальном если от перла что и позаимствовано то явно этого не видно.

то ли ты не видел руби, то ли ты не видел перла)

Не, я такого не писал =)

yoghurt ★★★★★
()

А язык 1C-а - это по видимому - дохристьянское язычество славян :)

А вот scheme я бы тождественно приравнял атеизму, — язык не плодит ненужных сущностей для обьяснения мироздания.

a_nan
()
Ответ на: комментарий от Shimuuar

С++ само по себе извращение, так что конкретно это извращение кардинально дело не меняет.

А что оно уже научилось не глючить, выдавать нормальные сообшения об ошибках и хотя бы STL'ю?

Понятия не имею, но раздражает (как и сам C++) безмерно.

Evgueni ★★★★★
()
Ответ на: комментарий от DNA_Seq

>20 строк против 10 (из которых половина - комментарии) и подключение 6(!) библиотек

1. Плюсовый код достаточно ясен чтобы опустить комментарии, в отличие от.

2. что поделать, если perl настолько bloated^W узконишевый, что в него встроены IO, хеши (а простого set нет), регэкспы и одна-единственная реализация строк.

3. хидеры algorithm и iterator - дело вкуса, без них можно обойтись, но мне было лень делать цикл. using namespace тоже можно выкинуть.

4. нечего и говорить, что c++ быстрее работает (:

legolegs ★★★★★
()
Ответ на: комментарий от Dorif

>Тогда зороастризм это Smalltalk

Smalltalk не знаю но педивикая утверждает что ООП и в Руби и в Питон было уперто оттуда

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от legolegs

>1. Плюсовый код достаточно ясен чтобы опустить комментарии, в отличие от.

Я бы не сказал. Ты использовал нестандартные библиотеки и не факт что даже плюсовый кодер с ними знаком

но мне было лень делать цикл


Вот это и есть дао. В итоге у тебя получился тот же перловый код но приправленный синтаксическим сахаром

4. нечего и говорить, что c++ быстрее работает (:


В данном случае скорость будет примерно одинаковой. На задачах обработки строк Перл в среднем лишь в два раза медленнее Си

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от amonymous

>1. Надо считать не строки, а кол-во символов, ибо строка «}» печатается меньше секунды.

По количеству символо больше половины - комментарии. При желании указанный код можно и в две строки уместить

2. Синтаксис С++ со скобками гораздо более читабельнее питона.


Это перл вообще-то

3. IDE для С++ позволяет не печатать эдак 70% кода вообще.


Это лишь показатель избыточности синтаксиса С++. Если код позволяет проставить и IDE То этот код может проставить и компилятор а следовательно программеру этот код не нужно видеть вообще

DNA_Seq ★★☆☆☆
() автор топика
Ответ на: комментарий от DNA_Seq

>Ты использовал нестандартные библиотеки

Из нестандартного там только regex. Из не очевидного в нём только то, что smatch надо использовать для поиска по string и cmatch для char*. В документации это, конечно, есть.

Вот это и есть дао. В итоге у тебя получился тот же перловый код

Схрена ли он перловый? std::copy(...,ostream_iterator) - это пример из книжек про stl. Такой-же традиционный, как числа Фибоначчи для лиспа.

будет примерно одинаковой

лишь в два раза медленнее

/0

Это лишь показатель избыточности синтаксиса С++.

Не синтаксиса, а названий библиотечных элементов. Избыточность полезна для ловли опечаток.

legolegs ★★★★★
()
Ответ на: комментарий от DNA_Seq

SmallTalk был первым ООП языком и был разработан в Xerox(если я правильно помню) для компов Alto, но не получил широкого распростанения, как и эти компы.

Dorif ★★★
()
Ответ на: комментарий от DNA_Seq

>Если код позволяет проставить и IDE То этот код может проставить и компилятор а следовательно программеру этот код не нужно видеть вообще

Тогда почему не изобрели языка с наиболее простым синтаксисом и возможностью компилировать байткод - что бы работал так же быстро как С++ ?

amonymous
()

лисп - это вновь оживлённая старая религия - энвиронментализм, обредшая форму борьбы с парниковыми эффектами, направление вспять - к красивому, искуственному миру ходящих босиком или в крайнем случае - идеалистичному миру летающих эльфов, не способному прокормить миллиарды населения, для прокорма которых нужно экстенсивное расширение, переход от цивилизации с коэффициентом 0.72 по Кардашевской шкале - к более эффективно «сжирающей» энергию цивилизации. Хотя отдельные идеи и полезны - для локальной экономии и поддержания экосистемы от «засирания», но фанатизм опологетов пугает и может представлять угрозу (как появление новой религии).

Попы всех религий^Wденежные мешки искусно эксплуатируют веру рядовых программистов в свои язычки для достижения своих целей (например - личного обогащения, работы). Есть среди них, наверное, и искренно заблуждающиеся (см. прозелитизм).

Прозелиты каждого из языков стараются склонить как можно больше народа к своей религии и получить подтверждения правильности своего выбора.

Атеистами в программировании являются люди, понимающие ограниченность любой из религий и использующие подходящие инструменты/языки/грамматики/символы/итд в каждом из конкретном случаев, понимая, что только практика, проверяемость (falsifiability) и непротиворечивость (в нашем случае - корректная работа и завершение программы) - может быть единственным критерием. И в случае, когда программа перестаёт удовлетворять требованиям - переписывают программу, находя более подходящую грамматику. И этот процесс бесконечен. Зато на базе работающих программ - строятся другие программы, решаются конкретные задачи (как например, прокорм тех миллиардов населения, указанных выше) итд. Именно нахождение новых грамматик, т.е. отказ от представлений и религий отцов - позволил переходить от одной формы хозяйствования к другой и постоянно повышать объём мыслящей биомассы и перейти от отдельных мозгов-нейронов - к глобальному супермозгу - интернету.
Понимая условность и ограниченность любой из грамматик для описания действительности, атеисты стараются посредством образования и университетов не допустить скатывание общества к тотальному одурманиванию, либо как минимум - к объединению государства с религией (частный пример - скатыванию фирмы или проекта к одному языку), так как в условиях религиозного общества - не только придётся использовать крайне ограниченный единственный язык/грамматику, не прошедшую проверку опытом (testability), но и вообще - изучение окружающей действительности и свободное трорчество может быть ограничено и прогресс остановлен и отброшен назад.

Типа того.

Anode
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.