LINUX.ORG.RU

А куда, если не в веб?

 , ,


3

4

Хай, Лор. Давно сюда не писал, многое поменялось, многое перепробовал.

Но вот незадача - присутствует чувство, что всё идёт сейчас в веб. Я уже было смирился с этой мыслью, но тут начинается…Чертов фронтенд. Вот не нравится мне размечать документы и объяснять машине по полчаса, почему и какая кнопка, где должна находиться.

Хотелось бы такую отрасль, в которой я бы смог набивать руку на фрилансе, но чтобы это не было связано с этим визуальным рукоблудием.

Подскажите, есть ли истории успеха? Что-то алгоритмическое/техническое? Буду рад всем отписавшимся по вопросу.

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

Так, хорошо, у нас есть read-only MM IO. Как ты собираешь его оптимизировать?

ты не догоняешь для чего нужен volatile - он нужен чтобы указать компилятору не оптимизировать

#define readl(a)   (*(unsigned int *)(a))
#define vreadl(a)  (*(volatile unsigned int *)(a))

#define IRQ_STATUS 0x4000

int irq_poll(void)
{
	unsigned int i;

	for (i = 0; i < 1000; i++) {
		if (readl(IRQ_STATUS))
			return 1;
	}
	return 0;
}

int virq_poll(void)
{
	unsigned int i;

	for (i = 0; i < 1000; i++) {
		if (vreadl(IRQ_STATUS))
			return 1;
	}
	return 0;
}

gcc -O3 -S 1.c

без указания компилятору что переменная по адресу 0x4000 может измениться он просто выкинул цикл ожидания

irq_poll:
.LFB0:
        .cfi_startproc
        movl    16384, %edx
        xorl    %eax, %eax
        testl   %edx, %edx
        setne   %al
        ret
        .cfi_endproc
...

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

virq_poll:
.LFB1:
        .cfi_startproc
        movl    $1000, %eax
        jmp     .L5
        .p2align 4,,10
        .p2align 3
.L9:
        subl    $1, %eax
        je      .L8
.L5:
        movl    16384, %edx
        testl   %edx, %edx
        je      .L9
        movl    $1, %eax
        ret
        .p2align 4,,10
        .p2align 3
.L8:
        xorl    %eax, %eax
        ret
        .cfi_endproc
anonymous
()
Ответ на: комментарий от alysnix

я даже 5 доп методов оптимизации(кроме вашего) этого кода насчитал… а вот какие они - попробуйте ответить сами

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

byko3y ★★★★
()

А куда, если не в веб?

На завод.

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

ты не догоняешь для чего нужен volatile - он нужен чтобы указать компилятору не оптимизировать

Ну здрасти, очередной вернулся с википедии, и рассказывает мне, для чего НА САМОМ ДЕЛЕ нужен volatile.

без указания компилятору что переменная по адресу 0x4000 может измениться он просто выкинул цикл ожидания

Это некорректная оптимизация. Как я отвечал в прошлом треде: давайте просто выкидывать случайные инструкции из программы, ведь меньше инструкций — быстрее выполнение. Всё гениальное — просто.

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

Здесь основная оптимизация - инлайн,

ответ неверный, инлайн тут не рассматривается, поскольку сложность функции неясна.

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

Господа, тут тред про веб. Ваши дискуссии про оптимизацию тут не к месту

Здесь тред про «не веб» — читай ОП-пост.

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

Это некорректная оптимизация

так все новички и говорят

я отвечал в прошлом треде

я не слежу за твоим пургеном, извини :)

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

в паскале и без volatile компилятор не выкинул ожидание

он просто тупой и оптимизировать не может

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

таки давайте заведем новый тред по названием - «вокруг да около оптимизации кода»

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

Это некорректная оптимизация

так все новички и говорят

И что? А старики научились некорректные оптимизации обходить?

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

Без RAII то куда уж проще, ага

Установил себе nighty pascal отсюда: https://sourceforge.net/projects/lazarus-snapshots/files/

Теперь у меня в pascal есть RAII:

program Test;

{$mode delphi}

type
  TMyRAII = record
    i: int32;
    class operator finalize(var o: TMyRAII);
  end;

  class operator TMyRAII.finalize(var o: TMyRAII);
  begin
    writeln('Destructor for TMyRAII: ', o.i);
  end;

var
  res: TMyRAII;

begin
  res.i := 42;
  writeln('Working...');
end.   

https://i.imgur.com/wJTBcSY.png

https://wiki.freepascal.org/management_operators

C++ деструктор

Finalize

Finalize is called when a record goes out of scope.

It is useful for automatic custom finalization code.

C++ конструктор по-умолчанию.

Initialize

The initialize operator is called directly after stack (or heap) memory allocation for a record happens.

It allows for custom automatic initialization code.

fsb4000 ★★★★★
()

Есть большие заказы, где разделение, можно писать чисто бэкенд. Есть спрос на боты и парсеры. Иногда попадаются задачи по ИИ, но очень редко. Бэкенд под мобильные приложения - чаще. На темах, связанных с криптой, тоже почти никакого фронтенда. Всякие там торговые боты и прочее. Плагины под CMS, разные допиливания, дебаггинг - тоже почти никакого фронта.

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

>python requests Выбрось каку, оно течёт, мало умеет и неконсистентно. Лбой pycurl лучше в разы.

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

Его же на Денди не запустишь :) И скорость вызывает сомнения. Есть определённые компиляторы языков высокого уровня для старых приставок, но они зачастую больше на RPG Maker похоже.

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

Перлы обычно читают и сразу забывают, но чтобы учить их…

Я учу перл 6 - раку. Давай учить с тобой вместе, ты вроде умный мальчонка. У меня книжка есть, будем читать и проверять друг за другом.

anonymous
()

Просто тут спрошу...

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

vamo956
()

вот реально хотел почитать тред, но невозможно ничего понять. На хабре каменты читать легко, например. Когда новый дизайн завезуд?

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