LINUX.ORG.RU
ФорумTalks

Программистский мир окончательно скатился.


2

3

!Ъ: http://habrahabr.ru/post/172119/

Ъ:

На ранних стадиях развития интернета, разработчикам приходилось использовать бедные, убогие языки программирования. Приходилось использовать только функции и операторы. Никаких объектов, никаких интерфейсов, никакого dependency injection!

Скажем, чтобы выполнить простую операцию сложения, нашим отцам приходилось писать: 1+1. Да, серьезно.

Но теперь-то у нас есть PHP 5.3 с отличной имплементацией ООП! Представляем библиотеку SimplePHPEasyPlus! SimplePHPEasyPlus позволит вам складывать два числа современным способом, с использованием ООП. Он быстрый, простой, гибкий и оттестированный. Чтобы добавить 1 к 1, нужно всего лишь выполнить следующее:

use SimplePHPEasyPlus\Number\NumberCollection;
use SimplePHPEasyPlus\Number\SimpleNumber;
use SimplePHPEasyPlus\Number\CollectionItemNumberProxy;
use SimplePHPEasyPlus\Parser\SimpleNumberStringParser;
use SimplePHPEasyPlus\Iterator\CallbackIterator;
use SimplePHPEasyPlus\Operator\AdditionOperator;
use SimplePHPEasyPlus\Operation\ArithmeticOperation;
use SimplePHPEasyPlus\Operation\OperationStream;
use SimplePHPEasyPlus\Engine;
use SimplePHPEasyPlus\Calcul\Calcul;
use SimplePHPEasyPlus\Calcul\CalculRunner;


$numberCollection = new NumberCollection();

$numberParser = new SimpleNumberStringParser();

$firstParsedNumber = $numberParser->parse('1');
$firstNumber = new SimpleNumber($firstParsedNumber);
$firstNumberProxy = new CollectionItemNumberProxy($firstNumber);

$numberCollection->add($firstNumberProxy);

$secondParsedNumber = $numberParser->parse('1');
$secondNumber = new SimpleNumber($secondParsedNumber);
$secondNumberProxy = new CollectionItemNumberProxy($secondNumber);

$numberCollection->add($secondNumberProxy);

$addition = new AdditionOperator('SimplePHPEasyPlus\Number\SimpleNumber');

$operation = new ArithmeticOperation($addition);

$engine = new Engine($operation);

$calcul = new Calcul($engine, $numberCollection);

$runner = new CalculRunner();

$runner->run($calcul);

$result = $calcul->getResult();
$numericResult = $result->getValue(); // 2

Библиотека годится для применения с продакшене. Наслаждайтесь!

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

Я в печали.

Ответ на: комментарий от PolarFox

Смотря что надо делать. Для управления железом никаких выделенных веб-серверов поднимать не надо: слушаешь себе 80-й порт, как только придет правильный GET-запрос, отдаешь веб-страничку и работаешь через вебсокет на порту X, который определяется в рантайме или фиксирован.

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

УМВР, пользую libjson.

То, что её до сих пор нет во всех stdlib-ах - принципиальный промах. JSON проще и актуальнее всяких XML.

А вы там жрите свои сраные jquery, да пыхпыхи.

Да у тебя БОРДЕРРАЙТ. Я как раз против сраных jquery с пыхпыхами и за современные, удобные и стандартные инструменты.

border-radius
()
Ответ на: комментарий от Eddy_Em

А то не так!

тяжелей чем в Си баги ищутся только в Ассемблере. Да и то, не факт. указатели там - это мрак полный. Плюс ко всему этому нет проверки выхода за границы массива, со всеми вытекающими.

И если кто-то мне после этого скажет, что баги там ловить легко, рассмеюсь в лицо. Мне довелось немало писать на Сях, и нигде кроме как в Сях я не тратил столько времени на отладку и поиск багов.

dikiy ★★☆☆☆
()
Ответ на: комментарий от border-radius

То, что её до сих пор нет во всех stdlib-ах - принципиальный промах

Ничуть. Ты еще скажи, что отсутствие mesa в stdlib — принципиальный промах! Это же unixway! На кой черт тащить все говно в одном лукошке?

JSON проще и актуальнее всяких XML.

Согласен. И с JSON вручную можно работать, в отличие от всяких хмл.

за современные, удобные и стандартные инструменты

Лишь бы не пользовались жирными библиотеками.

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

Серверная часть на сях — это удобно, надежно и быстро.

Разве что быстро.

И вообще, интерпретируемые языки в высокой нагрузке — «треш и содомия».

У тебя понятие интерпретируемых языков, наверное, застряло на уровне спектрумовского бейсика. Я вам не скажу за всю Одессу ©, но Питон с JS давно уже JIT-компилируются.

border-radius
()
Ответ на: комментарий от border-radius

Питон с JS давно уже JIT-компилируются

Питон сам по себе отстойный. А использовать JS на стороне сервера — бред еще тот. Почти такой же бред, как java использовать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от J

Так на латиницу же переходить надо.

не надо.

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

У русских 33 буквы в алфавите — второй половины ASCII за глаза хватает.

а если русский с украинским использовать надо? Или с немецким?

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

а если русский с украинским использовать надо?

Меняй КОИ8-Р на КОИ8-У.

Или с немецким?

Добавь еще немецкую раскладку.

// а где может понадобиться такой изврат?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от PolarFox

Эти значки не нужны в общем-то. Их можно и картинками забабахать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от border-radius

Тебе, может, еще и анимированные смайлики в шрифт зафигачить?

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

Юникод, тащемта, для того и придумали, чтоб не париться с зоопарком и не делать лишних телодвижений.

border-radius
()
Ответ на: комментарий от Eddy_Em

Хм, у ЛОРа кривоватая подсветка Go.

libjson

package main

import ("fmt"
	"encoding/json")

type Point struct {
	X float32 `json:"x"`
	Y float32 `json:"y"`
}

type Rectangle struct {
	A Point `json:"a"`
	B Point `json:"b"`
}

func main() {
	r := Rectangle{Point{1.0, 2.0}, Point{3.0, 4.5}}
	out, err := json.Marshal(r)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(out))
}
{"a":{"x":1,"y":2},"b":{"x":3,"y":4.5}

На си подобное будет выглядеть в два раза страшнее.

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

а если русский с украинским использовать надо?

Меняй КОИ8-Р на КОИ8-У.

Или с немецким?

Добавь еще немецкую раскладку.

и что, перманентно менять? А если в документе одновременно используются языки?

// а где может понадобиться такой изврат?

за пределами России/Украины :)

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

Меняй КОИ8-Р на КОИ8-У.

Тумблером на знакогенераторе, ога.

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

Питон сам по себе отстойный

- минусую

А использовать JS на стороне сервера — бред еще тот

- плюсую, ибо согласен

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Питон сам по себе отстойный.

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

А использовать JS на стороне сервера — бред еще тот.

Ты недооцениваешь мощь Тёмной стороны © Нода сейчас довольно шустра, а SoupServer и в Африке SoupServer, откуда его ни вызывай. Зато вся эта сериализация/десериализация и роутинг запросов находятся прямо в ядре серверной части, что избавляет от велосипедирования. Да и вебсокеты под ноду уже написаны, если нужно.

border-radius
()
Ответ на: комментарий от Eddy_Em

Не холивара ради, почему использовать server-side JS — бред? Язык странноватый, да, но усилиями гугла и прочих Opera Software ASA там быстрый JIT, оно уже долго работает, неплохих JS-программистов как грязи, почему бы и нет?

Arrest
()
Ответ на: комментарий от border-radius

Нода уже научилась нормальной многопоточности, или всё ещё надо стрёмное говно на коллбаках лепить?

PolarFox ★★★★★
()
Ответ на: комментарий от border-radius

а так в ноде всё на коллбэках, и это нормально

На коллбаках большое и сложное приложение не напишешь.

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

А кто ты такой, что Ваше мнение важно для меня?

iZEN ★★★★★
()
Ответ на: комментарий от border-radius

тебе было просто лень осилить язык с синтаксисом, отличающимся от сишного

Мне он просто не нужен, т.к. С хватает на все случаи жизни.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Arrest

почему использовать server-side JS — бред?

Тормоза и ненадежность. Да и вообще — смысл?

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

А если в документе одновременно используются языки?

Тогда делай \include'ы

ясно. и по-твоему это эффективней, чем юникод?

dikiy ★★☆☆☆
()

Знатный срач получился, жаль, что еще не вечер...

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

Ну и ужас!

Зато не надо писать свой сериализатор и десериализатор для каждой структуры, как в си. Кстати, в обратную сторону:

package main

import (
	"encoding/json"
	"fmt"
)

type Point struct {
	X float32 `json:"x"`
	Y float32 `json:"y"`
}

type Rectangle struct {
	A Point `json:"a"`
	B Point `json:"b"`
}

func main() {
	test_strings := []string{`{"a":{"x":2.3,"y":1},"b":{"x":5,"y":6.5}}`, //валидный ввод
		`{"a":{"x":1,"y":2,"z":18},"b":{"x":3}}`, //пропущенные и лишние поля игнорируются
		`{"a":"x":1,"y":2},"b":{"x":3,"y":4.5}}`} //невалидный ввод
	var r Rectangle
	for _, s := range test_strings {
		err := json.Unmarshal([]byte(s), &r)
		if err != nil {
			fmt.Println("Ошибка: " + err.Error())
		} else {
			fmt.Println(r)
		}
	}
}
{{2.3 1} {5 6.5}}
{{1 2} {3 6.5}}
Ошибка: invalid character ':' after object key:value pair
PolarFox ★★★★★
()
Ответ на: комментарий от Eddy_Em

Это проще + места меньше занимает + обрабатывать элементарно.

чем проще? Тем что заставляет писать лишние слова \include? Проще тем, что заставляет пользователя наблюдать кракозябры и гадать, какую-же локаль он не доставил? (тем более на настоящий момент не существует механизма переключения локали из программы извне. И уже не будет существовать).

места занимает меньше, да. обрабатывать элементарно? Разве что с точки зрения библиотек, но не для пользователя-программиста.

dikiy ★★☆☆☆
()
Последнее исправление: dikiy (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Это проще + места меньше занимает + обрабатывать элементарно.

Это аргументы против си, а не против юникода.

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

А ты прикинь, сколько тебе в твоем Go надо накатать для реализации того же!"

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

Каждый раз, когда я вижу áóé в программе, я искренне желаю, чтобы автор этой программы обосрался, подскользнулся на собственном дерьме, упал в него и сломал себе обе руки, чтобы он хотя бы временно не мог ничего писать, и пока он не может ничего писать, чтоб прочёл таки ман к libicu.

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

У меня такое же желание, когда вижу быдлоюникод.

// а вообще, я уже давно перестал комментарии на русском писать — только для gettext'а.

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

У меня такое же желание, когда вижу быдлоюникод.

Если использовать стандартную кодировку (UTF-8), у пользователя проблем никогда не будет. А то что в си нет строк — проблемы исключительно быдлокодеров на си.

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