LINUX.ORG.RU

Сообщения Edward_I

 

Семантически и синтаксически корректное изложение C++

Так случилось, что последние несколько дней пришлось посмотреть различные видео с лекциями по C++ (все лекторы с нехилыми регалиями и чью компетенцию не ставлю под сомнение), почитать статьи по теме. А сегодня ещё почитал треды, где обсуждается новый стандарт.

В связи с этим возник простой запрос. Хотелось бы узнать о существовании русскоязычного автора/лектора, который бы:

  • (самое главное!) осознавал и проговаривал отличие C++ от STL (и стандартов);
  • при объяснении директивы include не употреблял словосочетание "подключение библиотеки";
  • не называл операцию «=», как и арифметические операции, "операторами";

P.S.

блог/сайт (анонимный или со многими авторами) с аналогичным подходом также сойдет

UPD.

( читать дальше... )

 , ,

Edward_I
()

Сокеты, браузер, write. Что здесь происходит?! [решено]

Есть сервер. Работает на локалхосте. Он создал слушающий сокет. Получив что-то на вход, он записывает в ответ msg. Клиент msg получает и отображает. Вот код:

char *msg = "HTTP/1.1 200 OK\n\n\n<h1>This is site</h1>";
/*...*/
read(socket_accept, buf, SIZE);
/*...*/
fprintf(stdout, "This is stdout\n");
write(socket_accept, msg, strlen(msg));
fprintf(stderr, "It's stderr\n");

Всё работает.

Но стоит увеличить третий параметр в write, например так:

write(socket_accept, msg, strlen(msg)+100);

Происходит интересное. Если клиент консольный - вроде бы всё нормально. Однако, если обратиться через браузер (127.0.0.1:port), то на страницу выдачи сначала попадает содержимое msg, затем результаты двух fprintf (начиная с первого), затем N одинаковых нераспознаваемых символов (примерно 100 минус длина результатов fprintf).

Что здесь происходит и почему?

 , , ,

Edward_I
()

Есть ли жизнь без Android Studio?

Нужен простой путь быстро получить простое приложение. Он вообще существует?

Что нужно в итоге: приложение, которое a) рендерит на экран данные из sqlite или json файла, b) редактирует эти данные, с) может стучаться на сервер по http за получением каких-либо данных.

Что нужно в процессе: никакого JB-комбайна, никаких Java/Kotlin, никакого React'a, обычный редактор (максимум QtCreator) и простота конечной сборки.

Как понимаю, есть два варианта:

1) C++ / Qt / NDK
2) Приложение-браузер выполняющий JavaScript (это в сторону Electron и Cordova смотреть нужно? и простой ли это путь?)

Есть ли доступный пошаговый гайд по (быстрой) разработке/сборке/портированию без Java&Android Studio?

 , , , ,

Edward_I
()

Младший разработчик С++ Just 4 Fun

Представим ситуацию. У вас на руках два оффера.

1. Backend-разработчик. PHP/Python/JS, фреймворки, местами хайлоад (но это не точно). Rate - N у.е.
2. Младший разработчик C++. Работать с Qt или/и сетевыми приложениями. Rate - 1/3 от N (см.п.1.)

Что вы выберите и почему?

(В пользу п.2. есть такие аргументы. Expirience и может быть интересная работа. Считать это плюсом подталкивает то обстоятельство, что на C++ существует заметно меньшее число проектов, где требуются новые разработчики (и при этом не уровня senior). В web, наоборот, можно (условно) устроиться всегда и везде. Так?)

 , ,

Edward_I
()

Внутреннее устройство Qt

Где можно почитать о внутреннем устройстве Qt, кроме исходников?

В частности, интересует описание работы Qt SQL C++ классов. Что происходит «под капотом». Как устроена работа с памятью. Где и как хранятся результаты выборки, когда и как освобождается память занятая под ними и т.п.

Также прошу дать ссылки на исходники грамотных Qt C++ проектов, в которых ведется работа с БД.

 , ,

Edward_I
()

Что почитать по ООП?

1. Есть несколько книг на выбор. Нужно определить какую книгу стоит прочитать первой, а какие позже. Главные критерии для упорядочивания: «фундаментальность» касательно ООП, практичность и доступность (грамотность) в изложении материала.

Вот список:

  1. Философия Java // Б.Эккель
  2. ЯП C++ // Б.Страуструп
  3. ООП с ANSI-C // А.Шрайнер
  4. Типы в ЯП // Б.Пирс

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

 , , , ,

Edward_I
()

Катастрофа Boeing 737 MAX и обновление ПО

15.03.2019: New MCAS software should come out end of this month (FCC P12.1).

The software changes will include:

  • Limit stab trim MCAS commands
  • AOA comparison monitor (AOA>5.5deg = MCAS disabled)
  • Slower stab trim MCAS command speed
  • AOA Disagree will become standard (now is an option)

QRH for Speed Trim Fail will be revised but memory items will remain the same.

source

12.03.2019: Boeing to update 737 MAXs after delaying changes for months

Boeing plans to make major changes to the flight control systems on the 737 MAX aircraft — just months after delaying a similar software fix due to failed negotiations with the FAA, a report says.

The updates — which involve multiple sensors, or data feeds, being rolled out into the MAX’s stall-prevention system in place of its current single-sensor setup — were ordered up in the wake of the deadly Lion Air crash in Indonesia last October and were originally planned for early January.

source

30.11.2018: Boeing is reportedly planning 737 MAX software upgrade

Boeing is reportedly considering a software upgrade for its 737 MAX family following the deadly crash of Lion Air Flight JT610 last month. The move comes after a preliminary report by Indonesian investigators, released just a few days ago, put the U.S. plane maker’s new anti-stall system at the center of the search for the cause of the accident.

Reuters, citing two sources briefed on Boeing’s proposal, said the aircraft manufacturer could launch the software update over the next six to eight weeks and that it would help address a situation the flight crew on the doomed 737 MAX 8 experienced.

source

 , , ,

Edward_I
()

Кто не разрабатывал на Си, тот не разработчик?

Недавно услышал примерно такую фразу:

«Кто не разрабатывал на Си, тот не разработчик»

Вопрос: насколько глубоко нужно погрузиться в разработку на Си, чтобы стать тру-разработчиком (для сферы, не связанной с деланием ПО для железа)?

Ну не в прод же на Си писать будущему сайтостроителю гeймдеву одинэснику девелоперу?! С другой стороны, написать и забилдить пробный хелловорлд с мэллоком и указателями будет не-безполезно и для скрипто-писателя, но достаточно ли? Или стоит отталкиваться от сферы деятельности: каждому написать примерно то, что он будет в дальнейшем делать (или с чем работать) на других ЯП? Например, бэкендщику стоит написать свой веб-сервер и крад-аппу, игроделу свою 2/3d игрушку и т.д. А может нужно написать свой модуль/либу для другого ЯП (основного)?

Или же: "Си не нужен, все программирующие - разработчики" ?

Ваше предложение по достижению тру-девелопер-левела:

  • попрограммируй микроконтроллеры, запили патч ядра Linux'a, а потом лезь в калашный ряд веб-/мобайл-/иной-разработки
  • напиши что-то из своей сферы
  • реализуй модуль/либу для другого ЯП
  • Си не нужен
  • другое

 , ,

Edward_I
()

допиливание Manjaro 18

Собственно сабж. Что можно/нужно сделать на свежеустановленном дистре из коробки?

Что удалить/кому обрубить сеть? ЕМНП на Ubuntu, всё время (наверное после 8-ки ?) людям приходилось выпиливать/обрубать всякие краш-логи/просто-логи/телеметрию/около-рекламу/репорты и прочий сомнительный функционал а-ля MS. Могу ошибаться. Нужно ли что-то подобное делать в Manjaro?

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

 

Edward_I
()

hello world на PHP

Слегка расширенный (показывает cl аргумент) хелловорлд:

Раз:

class System {

	public static function out(string $string) {
		$handle = fopen('php://stdout', 'w');
		fwrite($handle, $string.PHP_EOL);
		fclose($handle);
	}

	public static function argv() {
		return @$_SERVER['argv'][1] ? : '';
	}
}

class HelloWorld {

	public static function main(){
		System::out('Hello World! Your argument: '. System::argv() );
	}
}

HelloWorld::main();

И два:

function main(){
	
	function printStdOut(string $string) {

		function stream($handle, string $text) {
			$getHandle = function() use ($handle) {
				return $handle;
			};
			fwrite($getHandle(), $text."\n");
			fclose($getHandle());
		}

		stream(fopen('php://stdout', 'w'), $string);
	}

	function getArgv() {
		return @$_SERVER['argv'][1] ? : '';	
	}
	
	printStdOut('Hello World! Your argument: ' . getArgv() );
}

main();

Может перейти в обучении (скрипто-ЯП прежде всего) на такие вот первые программы-хелловолды? Ну посудите сами: что такое echo/print/etc «Hello World»? Что это за объяснение такое - языковая конструкция, которая "выводит одну или более строк" (из оф.док.)? Или просто "выводит текст" (науч.поп.)? Куда выводит, как выводит, какую строку. Ничего не понятно, пользы мало.

А если сразу начать разбирать вышеприведенные хелловолды, то вырисовывается много (весьма важных) тем для изучения начинающему программисту.

Как вариант: можно ли рассматривать написание изоморфных (указанным выше) хелловорлдов в других ЯП, как быстрый старт, в изучении этих самых ЯП опытным программистом? Насколько это будет продуктивно?

 , , ,

Edward_I
()

Зачем Python?

Обычно, ЯП - это инструмент, заточенный для решения задач в какой-то определенной сфере. У создателей ЯП была для него ЦЕЛЬ, которая наполняла смыслом бытие ЯП. Или же ЯП оказался обладателем таких характеристик, которые позволили эффективно решать определенные задачи, даже если изначально на него были другие планы. Это также объясняет необходимость существования ЯП.

Что-то низкоуровневое - Си, Rust, Ada; сервер - PHP, Go (а где-то Java, JS); клиент - JavaScript; энтерпрайз - C#, Java; скрипты для CLI - bash, lua (хотя сойдут PHP или JS); математика - R, Fortran; мобильные приложения - Java, Kotlin, Swift; начальное обучение - Basic, Pascal (можно Lisp, но лучше не стоит). Всё ясно, понятно.

А какие специфические задачи решает Python? В чём его смысл? Вот в (https://youtu.be/KnFrdzG79ak?t=532) МФТИ на информатике говорят, что Python - это классная штука, так как на нём можно всё (и в web, и в смартфон), мол универсальный. Но, имхо, это скорее минус, чем плюс. Это как швейцарский нож - может многое, но всё не очень качественно. В (https://youtu.be/bX3jvD7XFPs) MIT'e перевели обучение с эльфийского (Scheme) на Python. Ну для педагогических целей, для первокурсников, может Python и выглядит лучше. Хотя как аргумент в его пользу - ну так себе.

Пока я вижу, что в реальном мире Python (объективно) нужен для двух задач:

1. Поддержка legacy-кода, уже написанного адептами Python'а. Например, какие-нибудь скрипты для иксов, скрипты для сис.админов и т.п.
2. ML. Просто потому, что под ML были написаны нужные библиотеки (в нужном кол-ве и кач-ве) именно на Python. По неизвестным причинам написаны.

Сфера для (эффективного) применения Python'а очень мала, или мне показалось?

При этом, повсеместно говорят о популярности Python, как это модно-молодежно, его мол и учите. Закрадываются подозрения. А не является ли широкая популярность (или слухи о ней) Python исключительно маркетинговым явлением, когда ЯП, опять же по неясным причинам, проталкивают сверху? Если это так, то для чего это делают? А если не так, и он объективно эффективно решает какие-то задачи (почему его добрые люди и советуют), то объясните какие это задачи, какова целевая сфера применения Python'а, каков его смысл, цель???

 , ,

Edward_I
()

RSS подписка на новые темы