[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.42650 Reply
File: hellodob.pas.png
Png, 17.52 KB, 646×428 - Click the image to expand
edit Find source with google Find source with iqdb
hellodob.pas.png
В этом треде мы будем помогать новичкам с решением элементарных задач.
Говорить о том, что %названиеЯзыка1% лучше %названиеЯзыка2%, мы здесь не будем, для этого есть другие треды.
Предыдущий: >>28288
>> No.42665 Reply
Как поднять карму на стековерфлоу с 1 до 1000? Есть какие советы и идеи?
>> No.42666 Reply
>>42665
Что это дает? Или просто для писькомерства?
>> No.42667 Reply
>>42665
Помогая другим, очевидно же.
>> No.42691 Reply
>>42650
Здравствуй, анон. Я пришёл к тебе за помощью. Дело в том, что я первокурсота. На специальности "Программная инженерия". То есть, будущий погромист. Или быдлокодер. Тут уж как буду учиться, так и пойдёт. Не так давно появилась тема курсовой. Хотя времени ещё полно, я в панике.
" Тема: Разработка текстового редактора.
Предусмотрены возможности сохранения и загрузки файлов.
Основные особенности:
- возможность выбора шрифта;
- возможность выравнивания текста по разным позициям;
- возможность поиска и замены текста."
Нас ещё не учили такому. Ладно консольную хреновину создать, чтобы решать СЛАУ и прочее дерьмо, типа "Автоматизированного магазина продуктов"", но это - пиздец как пугает! Графический интерфейс мы будем изучать только в конце семестра, если вообще будем, а тогда уже курсач должен быть готов.
Ах да, о чём это я? Доброанон, не мог бы ты подкинуть мне мануалов по теме? Гуглы говорят только о общих чертах. Те мануалы, что я нашёл явно предназначены для (хоть немного) более опытных кодеров. А это не может не вводить меня в уныние и дикую жажду забиться в угол.
Я буду очень тебе благодарен за оказанную помощь.
>> No.42693 Reply
>>42691
Курсовая не имеет ни намёка на создание чего-то нового, больше похоже на лабу. Это вообще ок? Алсо, научник разве не должен направлять тебя?
>> No.42695 Reply
>>42693
> Это вообще ок?
Это ок. Там все темы связаны с реализацией чего-то. Даже всяких "Flappy Bird" реализация есть задание.
>> No.42696 Reply
>>42693
> научник разве не должен направлять тебя?
Хоспаде, да всем плевать! Нам только раздали и сказали сроки. Чувствую множество бессонных ночей и трёхкилограммовые мешки под глазами.
>> No.42697 Reply
>>42691
Сложно что-то посоветовать пока ты
а) не выбрал язык, на котором будешь решать поставленные задачи
б) не выбрал среду разработки (IDE), желательно с уже имеющимися компонентами интерфейсов.
Могу как пример предложить PyQt. Питон достаточно прост в написании, а у Qt уже есть достаточно широкий набор компонентов. Но ты можешь выбрать что-нибудь, что ближе тебе.
>> No.42702 Reply
>>42697
Да. Забыл. C++. Насчёт среды разработки я всё ещё не уверен. Ориентировочно - Visual Studio. Однако я всё ещё колеблюсь между ним и Qt.
>> No.42703 Reply
>>42702
Visual Studio я не пользовался довольно давно. С одного из первых курсов. Да и то там его потом сменили на Builder. А вот с Qt сейчас работаю. Но там еще отчасти по причине кроссплатформенности. Если у тебя подобных проблем нету, выбирай то, что лучше знаешь и с чем удобнее работать. А дальше гуглить простые hello_world примеры на разных интересующих тебя компонентах. Серьезно, литература в виде книжек - это здорово, но на примерах, которые можно запустить прям сразу и потыкать, научиться гораздо проще и быстрее. Удачи тебе.
>> No.42704 Reply
>>42703
Спасибо, анон.
>> No.42718 Reply
File: u22423_782_dsc00670.jpg
Jpg, 54.32 KB, 750×1000
Your censorship settings forbid this file.
r-18
Доброкодеры, помогите. У меня есть несколько массивов с сотнями тысяч строк, нужно решить задачи по их перемножению, сравнению друг с другом, что-то вроде vlookup в обе стороны. Но я не знаю как грамотно написать алгоритм. Где можно в доступной для любителя форме почитать про методы решения подобных задач? Попытался в Excelе написать - макрос виснет целый час и не всегда срабатывает до конца. Или может стоит попробовать на каком-то другом языке написать?
>> No.42723 Reply
Такая задача.
Есть список элементов, они время от времени обновляются и изменившиеся элементы перемещаются в начало списка.
Мне надо регулярно проверять список и забирать эти новые.
>> No.42724 Reply
>>42718
Разбей масиивы. Проще будет.
>> No.42725 Reply
>>42723
Сохранить первый элемент в переменную, сравнить переменую с первым элементом спустя
> время от времени
Если не равно: ждать дальше, обратно: брать в переменную.
>> No.42726 Reply
>>42725
Ты не понял задачу.
Например, есть список a b c d e f g
потом стало d c a b e f g
потом может стать a d c b e f g
и так далее.
А может после первого стать g a b c d e f.
Т.е. надо сравнивать полностью и найти, где последовательность от предыдущего состояния осталась такой же, всё что перед этим - обновилось.
По идее, надо сравнивать с конца. Хотя я что-то уже не уверен, что можно этим обойтись.
Скорее всего придется в лоб проверять по внутреннему состоянию этих элементов.
>> No.42728 Reply
>>42726
Да никто не поймёт твою задачу. То, что ты описываешь, не задача в принципе. Если бы ты написал:"На входе дан файл с N строками и каждая строка содержит список, полученный из предыдущего путём и т.д.", - или, "Пользователь жмёт на элемент на экране и он сдвигается в начало", - или, "Есть программа, к которой по апи обращается другая программа, выбирающая нужный элемент, который переставляется в начало", то было бы больше похоже на задачу.

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

А ещё я тебе открою тайну, что помимо массивов существуют сотни структур данных, позволяющих хранить и обрабатывать данные в разном порядке и добиваться быстрого выполнения определённых операций: хеши, деревья, стеки, очереди. Почему ты вообще решил, что тебе как-то нужно помнить этот список и что задача связана с расположением элементов в этом списке? Тебя их расположение не интересует в принципе. Ты просто суёшь выбранные элементы в отдельную очередь и "регулярно" извлекаешь из неё элементы.

Ты видишь, сколько ты вещей сделал неправильно? Задачи нет в принципе, "регулярность" ничем не определена, нацеленность на одно конкретное решение с массивом и его перестановками заведомо ненужная. Знаний в структурах данных слишком мало, их надо курить. Сконцентрируйся и формализуй задачу чётче. Пока формализуешь, она сама решится.
>> No.42729 Reply
>>42726
> Например, есть список a b c d e f g
А если обновился только a?
>> No.42730 Reply
>>42728
Потому что детали реализации наоборот усложнят всё.
Меня интересует, есть ли способ сравнить два списка значений, если они меняются по такому конкретному принципу.
Если тебе будет так проще, то пусть это будет массив хешей. Т.е., если в хеше меняется количество элементов, то он передвигается в начало массива. И я хочу максимально просто определить эти обновления, не дергая каждый для сравнений. Т.е. в идеале оно может свестись к сравнению плоских списков (с ссылками) с некоторыми костылями для случаев вроде >>42729. И вопрос в том, есть ли такой идеал.
>> No.42732 Reply
>>42728
Сначала термин.
Пусть есть строка S, суть массив [1..n] символов.
Подстрока в S называется финальной, если она есть массив [m..n], где m не больше n.
То есть финальная подстрока - это строка от какого-то символа и до конца строки.
Например, werty и ty - две различные финальные подстроки в строке qwerty.

Теперь задача.
Есть строки SOld и SNew.
Требуется найти в SOld наибольшую по длине подстроку, совпадающую с какой-либо финальной подстрокой в SNew.
>> No.42733 Reply
>>42732
Любая строка есть массив [1..n]. 1 всегда не больше n, если n положительное целое... Значит, любая строка финальна?
> То есть финальная подстрока - это строка от какого-то символа и до конца строки.
Ну ок, я понял, о чём речь. Это называется суффикс строки обычно. С первого символа и докуда-то - соответственно префикс строки. С какого-то по какой-то - просто подстрока. Теперь тебе станет легче с этими словами. Наверное.

В такой формулировке задача далеко не тривиальна. Я думаю, что метод динамического программирования должен помочь. Он заключается в сведении к той же задачи для входных данных меньшего размера. Предположим, что мы знаем ответ для префикса SOld без последнео символа. То есть, у нас есть максимальная по длине подстрока, являющаяся суффиксом SNew, но не для SOld, а для его на один символ укороченного префикса. Скажем, максимальная подстрока в qwert, а мы решаем для qwerty. Если ответ для qwerty не включает последний символ, то этот ответ для qwert. Если включает, то это какой-то суффикс qwerty. Значит, в цикле нарасчиваем максимальный суффикс SOld, являющийся суффиксом SNew. И находим максимальную подстроку из суффиксов. Сравниваем максимальный суффикс с уже известным ответом и возвращаем то, что из них больше. реализуется в виде рекурсивной функции. Чтобы рекурсия не замкнулась - начальное условие в строке длины 1 символ -, если этот символ последний в строке SNew, то строка из этого символа - и есть ответ. Если нет -, то ответ - пустая строка.
function maxSuffixFrom(SOld, SNew)
{
   if (length(SOld) == 1) {
      if (SOld[0] == SNew[length(SNew)-1]) {
         return SOld[0];
      } else {
         return '';
      }
   }

   maxCommonSuffix = getMaxCommonSuffix(SOld, SNew);
   shorterAnswer = maxSuffixFrom(substr(SOld, 0, length(SOld)-1), SNew);
   if (length(maxCommonSuffix) > length(shorterAnswer)) {
      return maxCommonSuffix;
   } else {
      return shorterAnswer;
   }
}

function getMaxCommonSuffix(SOld, SNew)
{
   count = 0;
   maxLength = min(length(SOld), length(SNew));
   while (count < maxLength && SOld[length(SOld) - count - 1] == SNew[length(SNew) - count - 1]) {
      count += 1;
   }
   return substr(SOld, length(SOld) - count, count);
}
Всего будет где-то ~N укорачиваний, где N - длина SOld. А каждое укорачивание сопровождается циклом на не более чем min(N, M) итераций, где M - длина SNew, так что квадратичное время, нормально для задачи на поиск подстрок. За линейное время такие задачи могут решаться только с помощью чего-то вроде суффиксоного дерева.
Ты уверен, что составил условие правильно?
>> No.42749 Reply
>>42733
> Значит, любая строка финальна?
Да, конечно. Точнее, каждая строка является своей финальной подстрокой.

А почему бы просто не перебрать все возможные финальные подстроки в SNew и не проверить, являются ли они подстроками в SOld? Если длина SNew - n символов, то в ней будет ровно n финальных подстрок, и потребуется не более n проверок на принадлежность подстроки строке. Решение далеко не оптимальное, но вопрошающему анону сгодится, я думаю.
>> No.42759 Reply
>>42749
> А почему бы просто не перебрать все возможные финальные подстроки в SNew и не проверить, являются ли они суффиксами в SOld?
Опечатка? Все возможные подстроки SNew - это порядка N^2 штук приблизительно. Проверить, является ли суффиксом - ещё умножить на N где-то. Выходит кубическая сложность вместо квадратной. Но для не очень больших строк ок. К тому же можно добиться и линейной сложности, если раскопать суффиксное дерево, но смысл будет только на очень больших строках, правда оно ест много оперативы вроде. Ну и substr и length в моём варианте неоптимальны и требовали бы тогда оптимизации. Правда перебирать подстроки не намного проще всё равно.
>> No.42760 Reply
>>42749
Стоп, так тебе надо было не подстроки SNew, а тоже суффиксы SNew? То есть, тупо общий суффикс? Ну блин, ну ты можешь точнее. getMaxCommonSuffix его как раз и ищет непосредственно, за линейное.
>> No.42773 Reply
Подскажите статейку, где подробно объясняют чем отличается та или иная парадигма программирования, с примерами. Главное чтобы максимум сухо и по делу было. Совсем уже голову сломал на этой теме, всё никак не доходит.
>> No.42774 Reply
File: VanRoyChapter.pdf
Pdf, 1.80 KB, 595×842 - Click the image to get file
VanRoyChapter.pdf
>> No.42775 Reply
>>42774
Перевод есть? Я своему ингришу слабо доверяю, да и скорость чтения низка.
>> No.42776 Reply
>>42775
Не знаю, скорее всего нет.
Хочешь читать годнотку - подтягивай. Алсо, технические тексты намного проще же.
>> No.42777 Reply
>>42773
Лучше конкертные вопросы спрашивай максимум сухо и по делу, а то тебе уже начали накидывать про Integer programming.
>> No.42778 Reply
File: mirei_cure.jpg
Jpg, 88.80 KB, 340×510 - Click the image to expand
edit Find source with google Find source with iqdb
mirei_cure.jpg
>>42773
Их только две: с глобальными переменными (процiДурное, объектное и т.п.) и без.
>> No.42781 Reply
File: поезд-пассажирный.jpg
Jpg, 25.05 KB, 525×328 - Click the image to expand
edit Find source with google Find source with iqdb
поезд-пассажирный.jpg
>> No.42788 Reply
>>42778
А как на счёт синглтона или сервислокатора? У меня всегда было ощущение, что это те же самые глобальные переменные.
>> No.42789 Reply
>>42788
Как раз вот на это тот толстячок нам и намекнул.
c: анонам икры
>> No.42800 Reply
>>42789
Некоторые штуки всё же должны существовать в единственном экземпляре.
>> No.42801 Reply
>>42800
Ну так и передавал бы их от одной функции к другой, зойчем в глобальную область видимости выносить?
>> No.42802 Reply
>>42801
А если это нечто используется по всему приложению? Например i18n.
>> No.42803 Reply
>>42802
Это функции API без состояния, они собираются в пространства имён: sys::i18n::get_charset()
А если API будет иметь состояние, то не получится вызывать функции из нескольких потоков одновременно, что бы там ни говорили Свидетели Чуда Сотворения ООП.
>> No.42804 Reply
>>42803
> Свидетели Чуда Сотворения ООП
Мы то тут при чём? То, что в ООП должно быть состояние, вы придумали сами по-моему. Принципы инкапсуляции, наследования и полиморфизма ничего о состояниях не говорят. При чём даже в хаскеле со своими пользовательскими типами и классами типов функциональщики используют тоже самое. Убрали слово "класс" и теперь говорят, что у них нет ООП. Во-вторых, твой волшебное "это функции API" не заставило их быть глобальными переменными! Как и сраный префикс в их имени "sys::i18n::".
>> No.42805 Reply
>>42804
> не заставило их быть
не заставило их не быть. Пардон.
>> No.42806 Reply
>>42803
> А если API будет иметь состояние, то не получится вызывать функции из нескольких потоков одновременно
УМВР, ЧЯДНТ?
> Свидетели Чуда Сотворения ООП
Сектант Декларативных Извращений, ты ли это?
> Это функции API без состояния
Как это без состояния? А как же выбор текущего языка? Ну или вот например ВсеяЦентральныйАудиоМикшер. Глупо выглядит, если их несколько. Ну ладно, не так глупо, если это хардкорное музыкальное ПО с использованием нескольких звуковых карт одновременно. Ну и почему бы не сделать настройки приложения в одном единственном месте? Я весьма скромный и мне хватает не более одной точеки доступа к настройкам приложения. И я не могу придумать более двух мест для одновременного хранения инфы о настройках ну только если моё приложение занимается конфигурированием конфигураторов через перезапись одних конфигов в другие с параллельным тройным бекапом в черыре разных типа БД.
>> No.42838 Reply
Няши, расскажите мне как послать сигнал из одного класса в слот другого в PyQt. А то у меня выдает прекрасное, что у PyQt5.QtCore.pyqtSignal нет атрибута emit().
>> No.42846 Reply
Посоны, а в нетбинсе нынче проверка орфографии не работает чтоли?
>> No.42866 Reply
Нужен способ общения вебморды с демоном, а если в обе стороны, то вообще идеально.
Вроде сейчас в моде всякие zeromq и подобные штуки, это подойдет?
>> No.42874 Reply
>>42866
Менеджер очередей не для этой задачи, няша. Сейчас делают вебморду как полный client-side mvc, который обращается на какой-то порт. А демон смотрит через рест\стримининг апи в этот же порт.
>> No.42875 Reply
>>42874
> А демон смотрит через рест\стримининг апи в этот же порт
Это придется заворачивать в эвент луп, чтобы асинхронно принимать. Мне надо просто время от времени забирать поступающие сообщения откуда-то.
>> No.42876 Reply
>>42875
> Мне надо просто время от времени забирать поступающие сообщения откуда-то.
Redis лол.
>> No.43188 Reply
File: 1a09c0fc-2bfb-4581-9f0a-04dd475b077c.jpeg
Jpeg, 23.68 KB, 300×300 - Click the image to expand
edit Find source with google Find source with iqdb
1a09c0fc-2bfb-4581-9f0a-04dd475b077c.jpeg
Не нашел реквестотред, так что спрошу тут.
В общем-то аноны, посоветуйте что-нибудь достаточно популярное на тему нейросетей. Если на русском, то вообще замечательно.

Алсо если кто-то обмазывается, можешь посоветовать с чего начать погружение, что использовать и прочее.
>> No.43189 Reply
>>43188
Тебе для каких целей надо и что ты уже знаешь? Я конкретно сейчас обмазываюсь рекурсивными сетями для глубокого обучения в NLP, но крайне неспешно.
>> No.43190 Reply
>> No.43191 Reply
>>43189
Ровным счетом ничего. Для обработки музыкальных файлов, грубо говоря.
Мне бы вообще понять что это такое, как оно работает, и как работать с ним.
>>43190
Благодарю, надеюсь, это то, что нужно.
>> No.43192 Reply
Доброго времени суток, доброкодеры.
Подскажите, пожалуйста, литературы, чтобы занырнуть в кодинг с нуля. Что прочесть в качестве совсем теоретических основ, т.е. чтобы хорошим языком растолковывались фундаментальные понятия ("язык программирования", "библиотека", "фреймворк" и прочие страшные слова, которые встречаются везде, а не только в речи адептов конкретного языка), давалась внятная категоризация каких-то опять же базовых явлений ("языки бывают такие, такие и вот такие, различаются по признаку Х, этот признак Х - вот такая-то штука"), ну и так далее? И что делать, когда я это прочту? inb4 пиздуй учить вышмат и пока на пять не сдашь, можешь не возвращаться
>> No.43193 Reply
>>43192
Такие книги есть для CS-студентов, но они весьма хардкорны и смысла их читать нубу ноль.
Надо задрачивать прикладной язык, а это так, для теорподготовки.
>> No.43194 Reply
File: saber_by_vanessa_retake-d4c2rm4.jpg
Jpg, 79.91 KB, 420×670 - Click the image to expand
edit Find source with google Find source with iqdb
saber_by_vanessa_retake-d4c2rm4.jpg
>>43191
Эх, райтуш-райтуш. Нейронные сети, svm, hmm - это некоторые виды моделей для обширного класса ML задач. Имеет смысл посмотреть любой курс ML сначала, анон выше скинул пример яндекс-курса. Многие смотрят Andrew Ng на курсере, он попроще. Алсо, если будешь это кодить на скале, то смотри в сторону Apache Spark MLlib, нейронных сетей там еще нет, но либо к следующему релизу будут, либо можешь их сам писать.

>>43192
Sicp же: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science[...]ures/

Потом имеет смысл посмотреть Proglang и Compilers на курсере. В прогланг объясняется на примере ML, racket и ruby как реализовать основные концепции. Плюсы и джава представляют собой примеры неудачных яп, так что их имеет смысл учить после. Как известно, человек, знающий джаву, вряд ли быстро выучит хаскель. А вот хаскелист быстро выучит ваш язык и напишет для него интерпретатор на хаскеле к тому же. (хаскель - более продвинутая верия ML).
>> No.43195 Reply
>>43194
> Как известно, человек, знающий джаву, вряд ли быстро выучит хаскель.
Но только это не из-за самой джавы.
>> No.43196 Reply
>>43194
Анон, а в чём преимущество этих видео-лекций? Традиционные чёрные буквы на белом фоне хуже?
>> No.43205 Reply
>>43196
Имхо, видеолекции полезны только там, где видеоряд помогает лучше и быстрее усвоить материал - рисование, кулинария, электроника (в плане пайки), работа с интерфейсами различных софтин и т.п.

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

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

P.S. Но для нулевого уровня, как вводные лекции, видео вполне сойдёт.
>> No.43206 Reply
> Просто ролики клепаются быстрее и дешевле, чем хорошие статьи из чёрных букв и рисунков.
Хороший ролик требует усилий ничуть не меньше, чем статья. Но снять говно с первого дубля действительно проще.
>> No.43224 Reply
>>43194
> Плюсы и джава представляют собой примеры неудачных яп
> Плюсы
> неудачных яп
Я юзаю няшные в своей хтоничности кресты везде. Жизнь кончена. Пойду выпилюсь.
>> No.43225 Reply
>>43224
Ну так ведь все юзают только неудачные языки. Крутые языки только, чтобы размахивать ими как флагом.
>> No.43691 Reply
program name;
var
x,y:integer;
begin
writeln('Введите координаты точки (x,y): ');
readln(x,y);
if
(x=>2) or (x<=-2) and (y=>2)or (y<=-2)
then writeln('Точка с указанными координатами не лежит в данной области')
else writeln('Точка с указанными координатами лежит в данной области');
end.
>> No.43692 Reply
>>43691
почему выдаёт "Program1.pas(8) : Нельзя преобразовать тип KeyValuePair<integer,integer> к boolean" ?
>> No.43694 Reply
>>43692
=> -- оператор задания пары ключ-значение
можно создавать словарь var skokaNog := Dict('человек'=>2, 'бульбазавр'=>4, 'сороконожка'=>40); так что твой условный оператор выглядит как
if <x,2> or (x ≤ 2) and <y,2> or (y ≤ -2) ну и эти штуки в boolean не кастятся, ясное дело
>> No.43695 Reply
>>43694
Оператор, который тебе нужен это >=, а не =>. Ты поменял местами знаки. Запоминается по тому, как вслух говоришь:"Больше или равно".
>> No.43702 Reply
File: d0e9ffdf5a8fc147f...
Jpg, 25.79 KB, 459×623
edit Find source with google Find source with iqdb
d0e9ffdf5a8fc147fade5dfaed50a760.jpg
File: -.jpg
Jpg, 113.32 KB, 661×936
edit Find source with google Find source with iqdb
-.jpg

Тут, кажется, очень медленно, но попробую спросить в надежде на помощь, надеюсь, не промахнулся с тредом.
Суть такова. Есть один студент, и этот студент - я. Я хочу уметь в программирование на сильном уровне, ибо прогеры нужны, прогеры важны, да и просто интересно и вроде как даже получается.
За спиной у меня имеется школьный и университетский курсы программирования, которые, конечно, совершенно не глубокие. В универе учили писать на си/си++, по научной работе сейчас потихонечку разбираюсь в питоне.
В принципе, из всех учебных заданий я большинство писал достаточно легко, да еще и зарабатывал на пиво, помогая другим.
Моя проблема в том, что я совершенно не знаю, что мне сейчас делать и в какую сторону копать. Я даже не знаю, как оценить свой уровень по программированию. И, к сожалению, я даже плохо представляю, чем отличаются одни языки от других.
Помогите советом, что делать такому, как я.
В данный момент почитываю Dive Into Python 3
>> No.43706 Reply
>>43702
> ибо прогеры нужны, прогеры важны, да и просто интересно и вроде как даже получается
В 1993 году были простаивающие мощности, остававшиеся ещё со времен Союза. Когда импорт резко сократился, они оказались востребованы. Сейчас этого нет.
В 1999 году Россия не была отрезана от рынков внешнего финансирования, а в Еврозоне не было кризиса. Дефолт у большинства западных инвесторов на пару лет отбил желание сюда вкладываться, но рисковые ребята находились, а их успех быстро превратил ручеёк внешнего финансирования в полноводную реку, особенно когда цены на нефть вверх рванули.
В 2009 с доступностью дешёвых денег было уже не очень, но возможности привлечения финансирования на внешних рынках были. И была кубышка, из которой щедро оплачивались мега-проекты и рефинансировались крупнейший банки. И были относительно высокие цены на нефть.

Сейчас возможности привлечения денег на Западе нет и учитывая политику партии едва ли появится в ближайшее время. Китай лихорадит, так что потока бабла оттуда тоже ждать не приходится (да и никто толком на Азию пока не переориентировался — больше разговоров). Кубышка похудела и правительство не спешит тратить остатки. Саудовская Аравия заливает рынок нефтью, чтобы угробить американских любителей сланцев и прочих горизонтальных бурений, на подходе иранская нефть, так что высоких цен на нефть в ближайшие несколько лет ждать глупо.
Плюс кредиты очень дорогие — на развитие под такой процент бабки брать никто не будет, нормальный и законный бизнес такой доходности не даёт, чтобы стоимость кредита покрыть, так что берут деньги чтобы разрыва ликвидности не было, не более.
И дешевле кредиты не станут, т.к. как только ЦБ ставку понизит, рубль еще сильнее упадёт — у многих будет соблазн взять кредит, перевести его в доллары и сидеть на попе, пока курс очередной рекорд не поставит.
Пенсионная реформа считай загнулась, так что с этой стороны реальный сектор тоже денег не получит.
И на бодишопы как в начале нулевых надеяться глупо — в условиях взаимных санкций никто на Западе не будет завязывать новые серьёзные проекты на Россию.
Да и западные корпорации сейчас в обратном направлении движутся. Вывез из страны инженеров Гугл, например, да и не только он.
Кое-где «прогеры нужны, прогеры важны», да только вот оборонный бюджет всех не прокормит.

И только провинция живёт у нас радостно и счастливо, переключившись на групповой брак.
>> No.43707 Reply
File: 14113163517340.jpg
Jpg, 57.06 KB, 738×519 - Click the image to expand
edit Find source with google Find source with iqdb
14113163517340.jpg
>>43706
Первая моя реакция на твой пост - стронгли пикрелейтед.
Ну а кто по такой логике нужен?
Юристов и так много, будешь просто бумажки перекладывать. Экономистов тоже пруд пруди, без связей не устроишься. Менеджером только если в Эльдорадо идти. Инженерам работать негде, да и то за копейки. Ученым только за бугор, так как науки нет. А кому ты нужен там, за бугром? Где родился, там и пригодился.
Слесарям работать негде за нормальные деньги, только "на дому подрабатывать". Плотники не нужны. Сантехником непочетно, да и сопьешься, еще и без перспектив. Дворником не устроишься - все занято гастриками за копейки. Бухгалтером даже не пытайся - женская профессия. Оператор колл-центра - только в качестве подработки.
Попрошайки поделили все точки сбора мелочи. Наркотики толкать - опасно, возить - еще опаснее. В армию идти - там дедовщина и физпоготовка нужна. В МЧС тоже не получится - нужно сначала в армию. Врачи копейки получают, или же не лечат нифига. Фермеры еле живут, от урожая до урожая, да еще и государство поддерживает только на словах. Полы мыть - не возьмут, там одни тетки требуются. А в секретарши - девушки. Или пидоры. А я не пидор.
Пойду что ли стекломоем зальюсь. Жизнь - тлен.
>> No.43709 Reply
File: sb_cutted_04.jpg
Jpg, 17.78 KB, 395×574 - Click the image to expand
edit Find source with google Find source with iqdb
sb_cutted_04.jpg
>>43702
Какая-то расплывчатая цель, можно конкретней? И еще расскажи, что за область научная у тебя.

Условно говоря, есть industry и academia, и много интересных задач на пересечении. В тренде Machine Learning (Deep Learning и NLP). Из инженерных задач - все перекатываются на scalable systems с функциональным подходом, реактивными приложениями и кластерами. Языки, которые выжили, активно развиваются и почти не отличаются по возможностям. С++ обзавелся boost, на jvm есть scala, на питоне есть numpy, theano и т.д. Надеюсь, это тебя как-то подтолкнет более развернуто и точно сформулировать вопрос.
>> No.43710 Reply
File: may_1st.jpg
Jpg, 71.46 KB, 500×420 - Click the image to expand
edit Find source with google Find source with iqdb
may_1st.jpg
>>43709
Какая-то расплывчатая цель, можно конкретней? И еще расскажи, что за область научная у тебя.

Условно говоря, есть popilly и otkatty, и много интересных проектов на пересечении. В тренде Machine
Sawmilling (Deep-Otkatt и NL-Popil). Из инженерных задач — все перекатываются на перфокарты с функциональным подходом, коза.ебись(онегин) и кластерами метапарадигм. Языки, которые выжили, активно деградируют и почти не отличаются по возможностям. Американский менеджер сменился на МПХ копчённого
индуса, бабла хватает на койко-место в новоебенёво, корытце отрубей доширак, охуенный интернет
и новый ноутбук. А кодерок наш, программистишко задроченное, потирает волосатые ручки, скрежесчет гнилыми зубами, трясёт грязными патлами и говорит: «уууу бляяя, щаз наше время настанет, сцуки, все здохнете». Надеюсь, это тебя как-то подтолкнет более развернуто и точно сформулировать вопрос.
>> No.43711 Reply
File: -.jpg
Jpg, 468.29 KB, 1024×768
edit Find source with google Find source with iqdb
-.jpg
File: large.jpg
Jpg, 49.50 KB, 400×584
edit Find source with google Find source with iqdb
large.jpg

>>43709
Зарабатывать деньги программированием, грубо говоря, но не просто быть какой-нибудь макакой, а реально разбирающимся ценным специалистом. У меня есть, например, одногруппник, который программированием зарабатывает очень неплохие суммы и, сколько я ни слышал, он всегда мог ответить на какой-нибудь вопрос по программированию, который ему задавали. А еще он рассказывал, как сам писал читы под dayz. Оче ему завидую, хотел бы шарит так же круто, как он.
По поводу научной области, там ничего интересного. Моделирование рентгеновских оптических систем, для чего написан специальный пакет под питон. Соответственно, мне нужно разобраться в этом пакете и нужно разобраться в питоне. Ну и питон, насколько я знаю, достаточно распространенный язык, поэтому просто почитать о нем для общего развития, как никак, тоже полезно.
>> No.43712 Reply
>>43711
Ну про деньги - это не ко мне. Насколько я знаю сырняш, доход у нашего брата 70k-120k, у удаленщиков около 2к$. Мне в принципе хватает на поесть и отложить на пенсию. Но чтобы там тян, тачка и собачка, или для чего там нужны деньги - уже нет. Да и вообще у кодеров burn out cycles. Сначала тебе надо быстро разобраться в новом стеке, потом закодить это вчера, потом охуеть от багов в продакшене, потом надабавлять нелогичных фич... К 30 годам никто не выживет. Так что иди или сразу проджект-менеджером или в data Science, где ценится мозг. На правах скромного мнения, конечно.
>> No.43713 Reply
File: 2791381.jpg
Jpg, 26.25 KB, 403×493 - Click the image to expand
edit Find source with google Find source with iqdb
2791381.jpg
>>43712
> проджект-менеджером
>> No.43715 Reply
File: large.jpg
Jpg, 49.50 KB, 400×584 - Click the image to expand
edit Find source with google Find source with iqdb
large.jpg
>>43712
Что за
> data Science
?
>> No.43716 Reply
Хочу сделать рогалик для самого себя, в школе учил информатику убирая листья со двора школы. Говорят, что C норм вроде на нем много рогаликов написано, но я не знаю с какой книжки\руководства начать. Буду очень благодарен за помощь.
>> No.43718 Reply
>>43712
> сразу проджект-менеджером
Кто ж его туда сразу возьмёт?
>> No.43720 Reply
>>43706
Ты в каком-то своём мире живёшь. Программист это одна из немногих возможностей для человека мужского пола из стран типа России зарабатывать достаточно много денег и уехать.
Если учитывать то что для программирования необязательно наличие высшего образования (не надо начинать спор - у меня нет диплома и я отлично работал без него) то это вообще единственная такая возможность.
Для большинства других работ нужно профильное образование, опыт и/или капитал и дефицит работников в них ниже.
>> No.43721 Reply
>>43716
Да, С считается самым трушным ЯП для рогалайков, но если у тебя уровень "немного в школе учил информатику", то я все же советовал посмотреть в сторону c#, java или python. Дело не в сложности языка С, который достаточно простой на самом деле, а в том, что скорость разработки будет выше, та и вообще сам процес поприятнее будет. Но ежели хочется хардкора, тогда, то можно и С. Но все же лучше взять ООП ЯП и желательно не С++, ибо отстрелишь себе все ноги.
Итого, на самом деле, это даже не особо важно: бери, что больше по душе, на всем будет хорошо, если запилишь достаточно контента, а не бросишь дело на стадии вечной пре-альфы, как это всегда бывает.
>> No.43722 Reply
File: Screenshot-03252014-03:28:05-AM.png
Png, 47.90 KB, 528×539 - Click the image to expand
edit Find source with google Find source with iqdb
Screenshot-03252014-03:28:05-AM.png
>>43716
Бери Javascript и html5 canvas, отличный язык с самым быстрым компилятором из динамических языков. На нём можно делать нормальные игры и показывать друзьям по ссылке (пикрелейтед - мой по-быстрому написанный пакмэн).
И вообще JS хорошо оплачивается.
Я сам любитель С, но он далеко не всегда нужен и писать прототипы игр гораздо быстрее на канвасе потому что нету проблем с указателями и есть отличные инструменты разработки встроенные в браузер.
>> No.43723 Reply
>>43721
А что со скоростями? С вроде низкоуровневый и быстрый, а джава с транслятором я только про java знаю медленнее работает. Я вот хочу рогалик с GURPS системой, а там реально много всяческих условностей и мелко-маленьких свойств, которые могут оказать воздействие на игру, а количество персонажей ИП и НИП, они же должны быть одинаковыми по свойствам может быть огромно. Появиться отряд космо-гоблинов из 100 юнитов и пиздарики, слайдшоу как в двар фортрес при строительстве водопадов.
>>43722
Эмм... Нет!
>> No.43724 Reply
>>43723
> появится
быстрофикс
>> No.43725 Reply
>>43723
Лол. Для твоих задач о таких вопросах можешь не задумываться. На любом ЯП обсчёт даже для ультимативно сложной ролевой системы будет очень быстр. Ты живешь не в век Amiga, NES и тому подобных. Да и делаешь ты не 3д-шутанчик на последнем движке Unreal. Так что серъёзно, фактор производительности можешь даже не расматривать при выборе.
Хотя я немного скептично отношусь к не-хеллоуворлдных рогаликов на JS, но это чисто моё имхо, как человека, который очень не любит JS
>> No.43728 Reply
>>43723
> Эмм... Нет!
Глупо слушать анонов-программистов при выборе инструментария. Если кому-то не нравится JS для игр и симуляций то я послушаю его аргументацию после того как он сможет реализовать хоть вот такое >>43727 на своём любимом самом лучшем языке.
> вот хочу рогалик с GURPS системой, а там реально много всяческих условностей и мелко-маленьких свойств, которые могут оказать воздействие на игру
Это смешно потому что современные процессоры делают 3х10^9 и более инструкций в секунду, этого хватает для больших физических симуляций а не то что там на дискретную симуляцию примитивного рогаликового мира.
Но конечно ты анон и твои известные эксперты с борд 100% знают лучше что питон и хаскиль лучшие языки для начинающего разработчика игр, куда мне до вас.
>>43725
> > человека, который очень не любит JS
Вряд-ли сможешь внятно аргументировать почему.
>> No.43729 Reply
>>43725
Ну вот дварф фортрес умудряется тормозить и лагать даже в
> не в век Amiga, NES и тому подобных.
>> No.43732 Reply
>>43729
Дварф фортресс это серьёзный симулятор с тысячами сущностей и кучей взаимодействий и алгоритмов, тебе всё равно не светит такой написать, 99% рогаликов гораздо более примитивны. Бери JS и не парься. Ну или слушай умных анонов и бери хаскель или что там у вас модно если хочешь бороться с языком а не разрабатывать игру.
>> No.43733 Reply
>>43728
> Вряд-ли сможешь внятно аргументировать почему.
Просто антипатия. Не нравится синтаксис, к примеру. Его сейчас уже немного доводят до ума и он уже выглядит далеко не так страшно, как в ранние этапы, но осадочек все ещё остался. Не стоит забывать, что его проектировали за 2 недели.
Алсо, его сейчас слишком много используют для задач, до которых сєндбоксы браузеров не доросли особо. Ты большой молодец, что написал физ. симуляцию на дж, слов нет. Но будь она написана компилированом ЯП, всё бы работало в разы быстрее, нэ?
Да и к тому же, я просто большой любитель строго-типизированных ЯП.
Я ведь не говорил, что сам JS плох. Говорил только, что я его не люблю.
>> No.43735 Reply
>>43732
Никогда не поздно начать.
>> No.43736 Reply
>>43733
> Просто антипатия. Не нравится синтаксис, к примеру.
Я перерос тот период когда я выбираю языки по синтаксису а не по набору фич и качеству реализаций/инструментов.
> Не стоит забывать, что его проектировали за 2 недели.
Да, просто Брендану Эйху обещали что дадут сделать scheme в браузере а маркетологи вынудили сделать что-то java-подобное. В результате получится лисп для мэйнстрима с синтаксисом си, но все определяющие фичи лиспа кроме синтаксиса остались нетронутыми. А с новыми компиляторами это стал ещё и самый быстрый лиспоподобный язык. Отличный выбор для exploratory programming, хотя конечно полно других неплохих языков.
> Алсо, его сейчас слишком много используют для задач, до которых сєндбоксы браузеров не доросли особо. Ты большой молодец, что написал физ. симуляцию на дж, слов нет. Но будь она написана компилированом ЯП, всё бы работало в разы быстрее, нэ?
Да, если бы я написал это на С или С++ и уделил специальное внимание того чтобы все горячие места сокмпилировались в SIMD то я смог бы наверное добиться прироста производительность раз в 8. На обычных вычислениях производительность JS на V8 отстаёт всего в 2-3 раза от С++. При этом я получаю высокоуровневый динамический язык с функциями высшего порядка, сборкой мусора, быстрыми списками и контейнерами, встроенным GUI и векторной/растровой графикой и отличными инструментами разработки включающими в себя интерактивный дебаггер и визуальный профайлер, ещё и находящимися в каждом браузере.
По этой причине я разрабатываю прототип на JS, а потом уже когда определюсь окончательно с физической моделью перенесу это чудо на С++, а лучше сразу на GPGPU.
> Да и к тому же, я просто большой любитель строго-типизированных ЯП.
Да, это многое и объясняет, это уже избитый спор так что тут мы вряд-ли скажем что-то новое.
>> No.43737 Reply
>>43732
Та что же ты в крайности бросаешься? Это же признак Тёмной стороны. Конечно, для начала лучше что-то простое брать. Типа того же Пайтона.
>> No.43739 Reply
>>43737
Самое простое это Python и JavaScript. Да, питон совсем немного попроще (С другой стороны для него нужен отдельный интерпретатор и консоль, тогда как для JS достаточно браузера), но я думаю в интересах начинающего доброкодера и рекомендую ему язык с которым он сможет быстро найти работу в России если захочет. Рынок труда таков что питон в России это элитный язык работы на котором мало, а на JS работы разного уровня сложности наоборот очень много.
С другой стороны все 5 мэйнстримных динамических языка программирования (Python, PHP, Ruby, Perl, JS) имеют 80% общих фич и изучив один из них можно за пару недели изучить и любой другой из списка.
>> No.43742 Reply
>>43728
> Это смешно потому что современные процессоры делают 3х10^9 и более инструкций в секунду, этого хватает для больших физических симуляций а не то что там на дискретную симуляцию примитивного рогаликового мира.
Процессоры быстрые, а память?
В динамических я/п очень много прыжков по оперативной памяти, см. Tony Albrecht — «Pitfalls of Object Oriented Programming».
>> No.43759 Reply
>>43742
Память это не плоская память а целая иерархия памяти, так что для процессов у которых паттерны доступа к памяти локализованы фактическая bandwidth гораздо больше чем несколько десятков гигабайт между типичным CPU и RAM.
> В динамических я/п очень много прыжков по оперативной памяти
В хороших реализациях (V8, SpiderMonkey, HotSpot VM) это всё уплощается и кэшируется, но конечно динамичность это не бесплатная фича. Но учитывая насколько динамичность ускоряет разработку это замедление более чем оправдано, а если понадобится максимальная производительность то всегда можно нанять айти-таджиков и переписать на С++.

Вообще тебе для твоих рогаликов это всё не нужно потому что никакого тяжёлого моделирования у тебя там не будет. А если будет то это уже симулятор а не рогалик, и это уже другой разговор. Мне, например, интересно делать симуляторы а не игры.
>> No.43765 Reply
Аноны, есть чего нибудь по C# на русском, но при этом хорошее? Я английский знаю "хорошо", но читать многостраничные труды, да ещё и по программированию все же трудновато для меня.
>> No.43767 Reply
File: 3.jpeg
Jpeg, 67.91 KB, 720×480 - Click the image to expand
edit Find source with google Find source with iqdb
3.jpeg
>>43765
Ничего, кроме основ языка. Так или иначе придётся изучать англоязычные источники.

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

Либо ты ленивый няша и не веришь в себя. Вот тебе пикрелейтед.

к: получаться
>> No.43769 Reply
>>43765
Вроде Рихтера перевели. Но лучше превозмочь и попробовать на инглише.
>> No.43770 Reply
>>43769
Доброчую превозмогание, это отличный способ прокачать английский. Мне особенно помогла такая техника: каждый раз, когда тебе попадается слово, для которого ты не можешь вспомнить перевод, следует открыть какой-нибудь технический словарь вроде лингво-онлайн или яндекс.словарей (не гугл-транслейт) и посмотреть, как оно переводится. Рано или поздно тебя заебёт постоянно лезть в словарь, и ты таки начнёшь запоминать значения незнакомых слов. Важно только, чтобы посмотреть перевод было не слишком легко (всплывающая подсказка с переводом не сработает), чтобы у тебя был какой-то стимул запоминать непонятные слова, но и не слишком сложно, чтобы ты не бросил; идеальным решением, наверное, будет просто копировать нужное слово и вставлять его в текстбокс онлайн-переводчика.
>> No.43771 Reply
Не знаю куда лучше с этим, сюда, или в /лор/, спрошу пока тут. Больно не бейте, если что, лучше обоссыте, нафаня я. В общем у меня проблема, точнее недопонимание с grunt, я захотел запилить тестовый сервак через grunt, что бы смотреть на свой веб-франкенштейнинг, но напоролся на камни. Я установил плагин grunt-contrib-connect, прописал все в Gruntfile.js как написано в базовом примере https://github.com/gruntjs/grunt-contrib-connect#basic-use изменив только base: 'www-root' на base: 'public' - папка в одной папке с Gruntile.js, где хранится index.html и прочие ужасы. Запускаю grunt connect, пишет что все в порядке, а открываю в браузере и вижу ...ничего, Firefox не может установить соединение с сервером localhost:9001. ЧЯДНТ? Гугл не помог.
>> No.43773 Reply
>>43771
A что показывает "ss -lnp | grep 9001"?
>> No.43774 Reply
>>43773
Эээ... что это? Я ж нафаня в этом деле. Ладно, в общем, конечно хотелось бы разобраться, но на данный момент вопрос больше не актуален, проблема сервака решена его непосредственным запилом точнее копипастмнгом в node.
>> No.43775 Reply
>>43774
Понту от этих штучек с быстрыми серверами мало(но не от самого гранта). Легче всего поднять локально обычный апач или ngix. Грант чаще всего для манипуляций с фронтендом используют.
>> No.43778 Reply
>>43777
Потому что оно написано а) на плюсах, б) на мелкомягких плюсах, в) с уёбищным стилем оформления кода, и г) косоруким студентом, который не знает разницы между операторами = и ==.
>> No.43779 Reply
File: 129982835083.jpg
Jpg, 282.44 KB, 531×750 - Click the image to expand
edit Find source with google Find source with iqdb
129982835083.jpg
>>43778
Да да, я понял уже, няш, спасибо. А никак по другому нельзя? Подскажи, как сделать это лучше?
>> No.43781 Reply
>>43779
Ну, во-первых, если использование C++ не является одним из требований ТЗ, не мучай себя и возьми C# - он гораздо проще и строже плюсов, и твоё присваивание вместо сравнения он бы даже не скомпилил.
Во-вторых, не стесняйся ставить отступы перед началом строки, разрывы строк после окончания строки кода и пробелы там, где они нужны.
Пример:
// Плохо (пишу по памяти, т.к. ты зачем-то удалил свой пост):
if (x>5&&x<=8) {y=4*x*x-5*x;} 

// Лучше, но всё равно так себе:
if (x > 5 && x <= 8) { y = 4*x*x - 5*x; } 

// Примечание: AFAIR, по правилам пробелы должны стоять перед и после любых операторов, в т.ч. и оператора умножения. 
// Поэтому выражение должно было выглядеть так: y = 4 * x * x - 5 * x. Однако ящитаю, 
// что в данном случае допустимо отступить от этого правила - так выражение легче читается. 

// Вот так совсем норм (фигурные скобки здесь - дело вкуса, можно убрать и их):
if (x > 5 && x <= 8) 
{ 
    y = 4*x*x - 5*x; 
} 
В-третьих, если ты пишешь взаимоисключающие условия (а в твоём случае они взаимоисключающие - x не может относиться одновременно к нескольким интервалам), используй else if вместо просто if.

В-четвёртых, когда приведёшь в порядок код, включи отображение варнингов в окошке Error List и пересобери проект. Обрати внимание - компилятор честно предупреждал тебя про использование оператора = вместо ==, но ты срать хотел на его предупреждения.

В-пятых, привыкай пользоваться отладчиком. Учись пользоваться точками останова и командами Step over/Step into (клавиши F10/F11). Отладчик покажет тебе, в какую ветку if ты зашёл и почему ты туда зашёл - это быстрее и продуктивнее, чем задавать вопрос анону и ждать ответа.
>> No.43782 Reply
File: Безымянный.jpg
Jpg, 71.09 KB, 457×565 - Click the image to expand
edit Find source with google Find source with iqdb
Безымянный.jpg
>>43781
У меня кукла пост сохранила.
>> No.43783 Reply
>>43782
И ещё несколько мелочей:
1. Говорят, плюсоводы не любят использовать директиву using namespace ...;, т.к. с ней становится непонятно, откуда и что ты используешь в своём коде. Вместо этого можно использовать std::cout и std::cin.
2. Перенос строки литералом '\n' не является кроссплатформенным. Если используешь плюсы, учись писать код сразу правильно - используй std::endl.
3. Зачем тебе нужны проверки на то, что x больше минимального значения типа int и меньше максимального? Если переменная имеет тип int, очевидно, что её значение никогда не выйдет за пределы допустимых значений этого типа, поэтому твои сравнения с минимумом и максимумом типа int будут всегда возвращать true. (На самом деле в твоём коде это не так, т.к. у тебя в условиях написано "строго меньше" и "строго больше". Поэтому в случае, если переменная x будет равна -2147483648 или 2147483647, ты не зайдёшь ни в одну из веток своих проверок - как результат, значение переменной y останется неинициализированным, и в ней будет лежать какой-то неопределённый мусор. Это ещё одна причина использовать нормальные языки - компилятор C#, AFAIR, увидит, что значение переменной y при определённых обстоятельствах может остаться неинициализированным, и не станет компилить такой код.)
>> No.43784 Reply
>>43783
> Перенос строки литералом '\n' не является кроссплатформенным.
В сосноли поддерживается.
Я вот тут в шиндовсе недавно нашел more.com, вот это внезапно было, лол.
мимо
>> No.43786 Reply
>>43783
> шарп шарп
Всё это современные крестовые компиляторы точно так же отлавливают, а какая-нибудь студия даже еще до компиляции красненьким подчеркнет. И шарпу похуй на неинициализированные переменные, там ноль или пустой указатель или еще какое дефолтное значение будет.
>> No.43787 Reply
>>43786
> Всё это современные крестовые компиляторы точно так же отлавливают
...и показывают предупреждения, на которые все по привычке срут. А потом студенты ходят по одним и тем же граблям.
> а какая-нибудь студия даже еще до компиляции красненьким подчеркнет
2015 - может быть, а предыдущим версиям для статического анализа плюсового кода требовались сторонние костыли вроде Visual Assist.
> И шарпу похуй на неинициализированные переменные, там ноль или пустой указатель или еще какое дефолтное значение будет.
Учи матчасть. Если переменная в куче (например, если это поле/свойство класса), компилятор сам инициализирует её дефолтным для типа значением (0, false или null). Если же переменная находится на стеке (т.е. если это локальная переменная, как в плюсовом исходнике), шарпокомпилятор потребует от программиста инициализировать её перед использованием.
>> No.43790 Reply
>>43787
> ...и показывают предупреждения, на которые все по привычке срут
Кто срёт на предупреждения? Студенты? Ты препод, что ли? Я думал, речь шла о производстве, а не обучении желторотых недоносков. К тому же подсветки проблем прямо в коде как правило довольно очевидны.
>> No.43791 Reply
>>43790
> Кто срёт на предупреждения? Студенты?
>>43779-кун насрал на предупреждения и поплатился за это. Достаточно показательно, ящитаю.
>> No.43792 Reply
>>43790
> желторотых недоносков
Почему многие крестолюбы такие злые? Замечаю, что это как правило те, кто не интересуются особо ни другимим языками программирования, ни computer science. Ноют про новичков, а сами в свой boost еле могут. А спросить про llvm - так вообще глаза круглые.

Мне кажется, таких надо наказывать в уголок и лишать тортиков, они устраивают дедовщину с нюфагами. А я-то офицер, родина мне ghc дала..
>> No.43793 Reply
>>43792
> Почему многие крестолюбы такие злые?
Не обращай на них внимания. Они просто не могут похвастаться ничем, кроме своего весьма посредственного знания крестов, вот и боятся, что т.н. "желторотые недоноски" в скором времени дорастут до их уровня и отберут у них работу. Поэтому они набрасываются на новичков и называют их всякими ругательными словами безо всяких конструктивных замечаний. Так они пытаются убедить новичков, что тем в карьере программиста ничего не светит, и тем самым спровадить потенциального конкурента и продолжить занимать на рынке своё очень шаткое положение джуниора-крестоёба.
>> No.43795 Reply
>>43792
Я не про новичков, а про студентов. Они всё равно могут, не читая предупреждения, закочить уник и уйти работать менеджером по родажам, чего на них равняться. И если даже предупреждения не читаешь, то и в остальном наверняка ведёшь себя так же. Настоящие новички делают вещи неправильно только по незнанию, а не потому что им насрать.
>> No.43799 Reply
>>43787
Если студент дебил, его никакой язык не спасет. Либо он начнет думать, либо так и будет игнорировать вообще все вокруг.
В шарпе, например, недостижимая ветка в условии - это всего лишь варнинг. Фуфуфу, плохой шарп.
>> No.43800 Reply
File: KCD9vVK.jpg
Jpg, 75.63 KB, 682×623 - Click the image to expand
edit Find source with google Find source with iqdb
KCD9vVK.jpg
Посоны, где бы найти книжки highload++ бесплатно без смс и регистрации? А то они невдолбически дорогие.
>> No.43802 Reply
File: println.png
Png, 10.22 KB, 556×193 - Click the image to expand
edit Find source with google Find source with iqdb
println.png
>>42650
Аноны, поясните ньюфагу, пожалуйста, почему конструкция вида:

public class Diff{
 System.out.println(1);
   }

Даёт ошибку:
Error:(32, 23) java: <identifier> expected
Error:(32, 24) java: illegal start of type
>> No.43803 Reply
>>43802
Потому что ты вхуячил строчку кода прямо в класс, а надо в метод. main, все дела.
>> No.43807 Reply
>> No.43848 Reply
>>43802
Советую почитать про ООП.

Если в двух словах: ты попытался использовать инструкцию не в методе, а в самом классе, что противоречит логике.
>> No.43879 Reply
>>42650
Привет, аноны!

Можете подсказать, как в Java получить количество дней текущего года (365-366) и месяца (28-31)?
Неужели стандартной функции не существует?
>> No.43880 Reply
>>43879
Одной функции не нашел. Есть много функций для этой цели: одна получается дату, другие вытаскивают месяц и год, третьи определяют високосность и число дней в данно месяце, если год високосный.
>> No.43965 Reply
Делаю транслитерацию и есть проблема с заменой больше одного символа.
Т.е., например Чукча будет CHukcha. Можно зафорсить Ch всегда, но тогда будет ChUKCHA.
Есть какое-то простое решение?
>> No.43966 Reply
>>43965
Проверять слово целиком, очевидно же.
>> No.43967 Reply
>>43879
Тебе нужен метод getActualMaximum() у GregorianCalendar. Настраиваешь этот календарь на какую-то дату нужного тебе года/месяца (например 1 января, если замеряем год или 1 число нужного месяца, если месяц). Ну и дёргаешь getActualMaximum(DAYOFMONTH) и getActualMaximum(DAYOFYEAR). Как-то так.
>> No.43968 Reply
>>43967
Код: http://ideone.com/UfxwLw

Если именно текущего надо, а не произвольного - можешь получить календарь на текущий момент через Calendar.getInstance() и у него дёрнуть getActualMaximum().
>> No.43970 Reply
>>43966
Зачем проверять слово целиком?
Делаем сначала isuppercase на оригинальной букве, если оно true, то для случая двойной замены делаем на следующей букве, если буквы нет или оно тоже true, то заменяем на две uppercase буквы, иначе на uppercase+lowercase. Сбои у такого алгоритма могут быть только на каком-нибудь варианте вроде "ЧуКЧа".
>> No.44096 Reply
File: 1339077105957.jpg
Jpg, 277.95 KB, 768×1024 - Click the image to expand
edit Find source with google Find source with iqdb
1339077105957.jpg
Сразу извиняюсь - я - тупой студент и не понимаю, чяднт.
Задача - Класс - матрица, где я ошибся в перегрузке операций?

http://pastebin.com/m5FFsSJh
>> No.44097 Reply
>>44096
> где я ошибся
В выборе крестов своим первым языков :3
> operator +, operator -
Ты временную переменную Need завёл с дефолтным конструктором (т.е. 5х5), потом к ней прибавил/вычел второй аргумент плюсика. Само собой получил и вернул непонятную херню. Когда ты описываешь оператор внутри класса, у тебя первый аргумент плюсика прилетает в this (т.е., к примеру, Matr от первого аргумента доступен просто как Matr или как this->Matr, если хочется явно). Так что тебе надо или сделать матрице конструктор копирования и положить в Need копию this Matrix Need(*this), либо передать Need'у в конструктор количество строк и столбцов и складывать в духе Need.Matr[i][j] = Matr[i][j] + a.Matr[i][j].
> operator *
В общем-то та же фигня, что и в прошлом примере. Ну и умножают матрицы не так. Посмотри в свои конспекты по алгебре (или где там умножение матриц изучают впервые? Забыл уже за столько лет...).
> del, umn
Подобные штуки тоже можно сделать через операторы примерно так: Matrix operator * (int C) { ... Need.Matr[i][j] = Matr[i][j] * C; ... }
>> No.44099 Reply
>>44096
P.S. Ну и A+B внизу это что вообще такое? Тебе же надо этот результат куда-то положить (к примеру, Matrix C = A + B) и вывести?

Вот только Matrix C = A + B не будет работать без конструктора копирования... Вернее будет, но совсем неправильно.
>> No.44100 Reply
File: 1339104490728.jpg
Jpg, 48.93 KB, 800×746 - Click the image to expand
edit Find source with google Find source with iqdb
1339104490728.jpg
>>44097
> В выборе крестов
Это я уже понял. Только вот меня никто не спрашивал :3
>>44097
> Need завёл с дефолтным конструктором
Я вроде уже разобрался. Во первых я под неё память не выделил, во вторых - не обнулил. А еще и деструктор мне в конце её удалял и у меня ошибка доступа к памяти.
> умножают матрицы не так.
О как. Ну, буду разбираться, спасибо :3 Держи няшечку.
>> No.44102 Reply
>>44100
> под неё память не выделил
Выделил. Имхо, дело было так... У Need дефолтный конструктор отработал. Потом return вызвал конструктор копирования (сгенерённый компилером и унеправильный для данной ситуации, который тупо копирует все поля). В итоге получилось 2 объекта с указателем на один и тот же блок памяти и двойное delete, которое и крашнуло прогу.

В общем и целом - если ты делаешь какой-то нетривиальный конструктор, который выделяет память или открывает какие-то ресурсы (файлы и т.п.), то тебе надо сделать не только деструктор, но и оператор копирования и оператор присваивания. Либо спрятать их в приват, чтобы никто их не вызвал, даже случайно (получится так называемый noncopyable класс, который нельзя передавать по значению). Иначе придёт пиздец.
>> No.44107 Reply
>>44102
Я просто выпилил конструктор и все заработало. Но легче не стало. Перегруженные операторы по уму должны у наследника тоже работать, или их как-то нужно явно указывать?
>> No.44123 Reply
Я уже совсем обезумел от безделия, потому реквестирую что-нибудь несложное написать на питоне или жабе, какой-нибудь парсер или автоматизацию чего-нибудь или вроде того, чтобы школьник вроде меня мог осилить. Есть задачи у кого какие?
>> No.44125 Reply
>>44123
SICP
>> No.44126 Reply
>>44125

Я больше хотет чего-нибудь настоящего написать, чтобы работало и радость людям приносило. А что кстати анон думает по поводу сикпа на питоне, хорошо идет? Пробовал оригинальный, со схемой, дошел до 3 главы и бросил ленивый я , но вообще понравилось, хочу повторить, но думаю что питон получше будет и посовременнее, нет?
>> No.44139 Reply
>>44100
ТОХОФОРСЕРОВ не спрашивали.
>> No.44204 Reply
File: 54_ucFEA7yA.jpg
Jpg, 49.09 KB, 425×604 - Click the image to expand
edit Find source with google Find source with iqdb
54_ucFEA7yA.jpg
Хочу стать веб-дизигнером. С чего начать? Какие книжки посоветуете? Тред не читал@сразу написал
>> No.44205 Reply
>>44204
Почему? С верстки, если художество освоил. Любые.
>> No.44206 Reply
>>44204
https://developers.google.com/web/fundamentals/ — фундаментальные советы.
https://www.google.com/design/spec/ — хорошие советы по дизайну для мобильников, почти все из которых справедливы и для десктопов.
https://developer.mozilla.org/en-US/ — документация по технологиям от мозиллы.
https://whatwg.org/ — стандарты, спецификации, как оно должно быть в идеале.
http://caniuse.com/ — то, как оно в реальности.

Этого тебе хватить должно. Дальше берешь браузер и экспериментируешь.
>> No.44207 Reply
>>44204
Здесь тебе в основном будут давать только книги по вёрстке, хотя основная масса дизайнеров не верстает, но я считаю, что дизайнеру нужны книги по дизайну, адаптивности и UX. Примеров не могу дать. В основном этой работой занимаются люди, которые просто знают фотошоп, но это не очень-то здорово. Некоторые работают верстальщиками и дизайнерами по совместительству.
>> No.44208 Reply
File: kid.jpg
Jpg, 354.77 KB, 1280×960 - Click the image to expand
edit Find source with google Find source with iqdb
kid.jpg
>>44206
>>44205
>>44207
Спасибо за ответы, аноны! Пойду изучать.
>> No.44210 Reply
File: 1382162907260.gif
Gif, 344.56 KB, 264×519 - Click the image to expand
edit Find source with google Find source with iqdb
1382162907260.gif
"Помощь начинающим" из путеводителя давно в лимите, а создавать новый тред под, прозреваю, платину, совсем не хочется. Тогда "простой реквест".
Допустим, простой мимокрокодил, не имеющий отношения к кодингу, раздобыл год спокойной жизни без необходимости бежать на работу по утрам и быть овощем по вечерам.
Допустим, что мимокрок хочет потратить ценный ресурс этого времени на кодинг.
Собственно вопрос: хочется иметь работу, связанную с кодингом на удалёнке живу в страшных ебенях, переезд в милионник быстро загонит в минус, позволяющую зарабатывать 15-20к в среднем на месяц.
-насколько реален отпущенный срок на самоподнятие скиллов до уровня "готов к оплачиваемой работе" с абсолютного нуля?
-какие скиллы наиболее востребованны на рынке программирования?

Проблем с дисциплиной, мотивацией и усидчивостью нет. Уровень знаний на данный момент - "что такое язык программирования"?
>> No.44211 Reply
>>44210
> Проблем с дисциплиной, мотивацией и усидчивостью нет.
Реально выйти на пхп-кодера, верстальщика или веб-дизайнера. Но поначалу без портфолио может быть. И за год чтобы уложиться, это надо прям вот вместо работы 8 часов в день что-то читать, а то и больше. На верстальщика проще всего, либо дезигнера, если можешь в фотошоп.
>> No.44272 Reply
>>44210
Реально, если договориться с какой нибудь фирме о последующем трудоустройстве. Они соответственно обучат тебя своему узкоспециализированному кодингу. А там уже сможешь расширяться.
>> No.44273 Reply
>>44272
Да никому нахер не нужно никого учить. Эти большое вложение денег без гарантий. Качаешь книги и ебошишь. Тем более, что "проблем с дисциплиной, мотивацией и усидчивостью нет".
>> No.44297 Reply
File: m77_03.jpg
Jpg, 107.48 KB, 800×527 - Click the image to expand
edit Find source with google Find source with iqdb
m77_03.jpg
>>42650
Подскажите, что нужно для того чтобы сделать базу данных ms sql server на локальном диске, доступной с других компьютеров, например, через какую-нибудь прогу? То есть, я через свой установленный sql server создаю базу, делаю в ней нужные таблички, кидаю файл базы на локальный диск. И все готово? Можно подключаться с других компов? Или это не так работает?
>> No.44301 Reply
>>44297
В настройках SQL сервака надо будет добавить пользователей и разрешить доступ извне (как - читай ман, я уже толком не помню). Возможно, придётся фаервол поднастроить, чтобы не мешал.
>> No.44304 Reply
>>44273
> Да никому нахер не нужно никого учить. Эти большое вложение денег без гарантий.
Расскажи это компании в моем городе(даже не миллионнике), которая набирала старшеклассников и учила их алгоритмам, архитектуре компьютера и C#.
>> No.44306 Reply
>>44304
Это точно было именно на свои деньги? Грантов или оплаты родителей там нигде не проскакивало?
>> No.44307 Reply
>>44306
Это либо гранты, либо руководство компании было поехавшее, ну вроде того же Маска. У нас в городе (тоже далеко не милионнике) тоже была фирма, которая постоянно организовывала разные образовательные IT-мероприятия и спонсировала внеклассные занятия в кружках программирования. Но там были те ещё идеалисты, которые быстро слились, когда дела фирмы пошли под откос. Сейчас фирма жива, но видимо там сменилось руководство, потому что никого они не учат, а строго зарабатывают бабло и всегда выставляют вакансии с жёсткими условиями "шоб сразу готовенькое".
>> No.44349 Reply
File: оорррнлдролвнпловпрлголлплаолаолаол.PNG
Png, 733.61 KB, 790×910 - Click the image to expand
edit Find source with google Find source with iqdb
оорррнлдролвнпловпрлголлплаолаолаол.PNG
Привет, погромисты. Ходил сегодня на собеседование, где девочка рассказала мне о тестовом задании, где нужны будут базовые знания html. Получил сейчас пикрелейтед. Как и та девочка, я понятия не имею как это сделать. Собственно реквест-вопрос - можно ли по быстрому написать это на каком то языке, изучив его с нуля примерно за 2 дня? На каком это проще сделать? Само решение не надо ну пока что, а то неинтересно, да и смысл, но подсказки приветствуются.
>> No.44350 Reply
>>44349
А где тут хтмл? Думаю возможно, если с базовыми понятиями программирования знаком, если не знаком - не знаю. По простоте изучения вроде все рекомендуют питон, ну и раз тут у тебя надо ооп демонстрировать он тоже подойдет (хотя в нем нет как таковых модификаторов доступа).
>> No.44352 Reply
>>44349
HTML тут нету в задании. Хотя при выводе на экран ты мог бы использовать его. Задание на ООП и на общие навыки программирования.

Вообще, мне очень нравится, как ты мыслишь. Вот посмотри, ты только что проигнорировал слово "ООП" абсолютно полностью, как если бы оно там было не написано. Я так понимаю, ты считаешь, что автор этого задания - дурак, который ничего не смыслит в программировании, ибо задание легко решить без ООП, так получается? Язык за два дня можно было бы выучить, если бы ты уже хотя бы один знал. ООП ты не выучишь за два дня, и даже за три, даже зная триста языков, если ты при этом не знаешь ООП. ООП - это, как верно замечено в задании, парадигма. От языка она не завит, вернее, может и зависит, но не напрямую. Это значит, что когда ты изучишь средства языка, позволяющие программировать на нём в стиле ООП, ты всё равно не сможешь использовать ООП. Ты сможешь только попытаться сымитировать его. Для ООП придётся искать отдельную книгу/курс/етц. Бывают книги, которые учат и языку, и ООП, и просто программировать одновременно. Но большинство учебников по языку учат только языку и полагают, что читатель уже умеет программировать и уже знает ООП.

Преимущества ООП и большинства других методологий подобного сорта раскрываются только в больших проектах(а на работе у кодеров все проекты большие, как правило). Эту маленькую задачку ты и без ООП прекрасно решишь, но так как задание ясно поставлено - продемонстрировать ООП, то тебя всё равно отсеют, даже если твоя программа будет работать идеально правильно.
>> No.44353 Reply
>>44352
Мне кажется понять и начать применять парадигму A - задача проще, чем изучить и начать писать относительно нормальный код на языке B.
>> No.44354 Reply
>>44353
Большинство нормальных программистов подразумевают под относительно нормальным кодом, что он таки будет следовать каким-то парадигмам или принципам в некоторой мере. Так что всё равно будет с чем-то таким. Но в книгах же часто бывает так, что просто вывалят все синтаксические конструкции языка и иди гуляй, делай с ними теперь, что хочешь.
>> No.44355 Reply
>>44349
Подсказка номер один — задание на внимательность. Ключевые слова — сетка для игры Судоку.
А вот уже из условий игры следует, что методы, возвращающие текущие заполненные значения в столбцах и строках, тебе однозначно понадобятся.
А уже из этих методов легко выводится таблица для второго задания.
>> No.44358 Reply
File: 1329719291_podborka_102.jpg
Jpg, 52.58 KB, 560×600 - Click the image to expand
edit Find source with google Find source with iqdb
1329719291_podborka_102.jpg
>>44355
О! Точно! Как же я сразу не додумался! Ведь это же Судоку! Это совершенно меняет дело!
>> No.44359 Reply
>>44352
> Преимущества ООП и большинства других методологий подобного сорта раскрываются только в больших проектах
Хуита. Даже в мелких программах можно поиметь немало профита от инкапсуляции и полиморфизма. Да, я знаю, что это возможно и без ООП, но зачем делать троллейбус из буханки?
>> No.44360 Reply
>>44359
Ну я просто к тому, что если вдруг будет казаться, что ООП не нужно, то стоит сначала написать что-то больше пары десятков строк, прежде чем рассуждать. Новички всегда так думают.
>> No.44362 Reply
>>44350
> А где тут хтмл?
Его надо сгенерировать, очевидно же.
>> No.44389 Reply
>>44352
> HTML тут нету в задании.
В браузер ты что выводить будешь?
>> No.44390 Reply
>>44389
Да хоть и одни числа <br>. Ну можно таблицу, да. Такой-то html.
>> No.44394 Reply
>>44360
Ньюфаг: не может использовать ООП
Нормалфаг: может использовать ООП
Олдфаг: может не использовать ООП
>> No.45089 Reply
>>42650
Начинаю разбираться в HTML/CSS.
Ботаю спецификации, обучающие сайты и т.д. Пока не могу врубиться в две вещи:

1. Как сделать средствами CSS два блока так, чтобы они интерактивно компоновались: на широком экране стояли рядом, а на узком становились в столбик.
2. Хочу сделать для своего сайта интерактивный фон средствами JavaScript, наподобие вот этой вот демки https://www.youtube.com/watch?v=36BPql6Nl_U - откуда лучше начинать копать?

Старые браузеры идут лесом, требовательные фреймворки тоже.
>> No.45090 Reply
>>45089
> 1
display: inline-block либо float: left
> 2
Интерактивный или просто анимированный? В первом случае - canvas, во втором - video.
>> No.45091 Reply
>>45089
Гугли responsive CSS.
>> No.45092 Reply
>>45089
> 1. Как сделать средствами CSS два блока так, чтобы они интерактивно компоновались: на широком экране стояли рядом, а на узком становились в столбик.
Я знаю, что новички не любят много новых либ и технологий, но я рекомендовал бы ознакомится с бутстрапом, а точнее его возможностями грида. Он упрощает многие вещи. Именно сам грид:
http://getbootstrap.com/css/#grid
Глава Grid system. Широкие возможности для интерактивной компановки. Только не забывай правильно расставлять row и col-: нельзя пропускать row, нельзя ничего втыкать между ними row и col-, нельзя переопределять их.
Ну а так, тебе надо учить как работают разные display и как работают float: left/clear: both.
> 2.
Ты собрался их на канвасе отрисовывать на ходу, что ли? Железо пользователя не жалко? Ну на канвасе можно, да.
>> No.45093 Reply
>>45090
> display: inline-block либо float: left
Ок, почекаю.
> Интерактивный или просто анимированный? В первом случае - canvas, во втором - video.
Загуглю тег <video>. Интересно, а есть какие-нибудь способы максимального ужатия видюшки, чтобы не занимала тысячемиллион мегабайт?

Canvas требователен к ресурсам, но привлекает тем, что пользователь загружает JS, а дальше все рисуется у него на машине (и беда ему, если машина слабее моей).

>>45091
Гуглю.

>>45092
> Ты собрался их на канвасе отрисовывать на ходу, что ли? Железо пользователя не жалко? Ну на канвасе можно, да.
Ну, я делаю чисто хомячную страницу для набора базового опыта.
Не думаю, что у нее будет много посетителей со слабым железом.

А Bootstrap почитаю же, спасибо большое, анон.
>> No.45094 Reply
>>45093
> Интересно, а есть какие-нибудь способы максимального ужатия видюшки, чтобы не занимала тысячемиллион мегабайт
webm отличный формат, занимающий минимум места, но и его надо правильно обрабатывать. По вопросам сжатия уже лучше к знатокам ffmpeg обращаться.
> Canvas требователен к ресурсам
Не особо и требователен. Ты же не собираешься браузерную версию крузиса там отрисовывать с интерактивностью. Если просто добавление примитивной анимации без сложных расчетов и векторных фигур, то канвас значительно выигрышнее, чем видео будет. Только я не проверял, и мое мнение диванное, но я уже больше года балуюсь игрушками на канвасе, и даже очень громоздкие проекты с кучей расчетов загружают цп совсем незначительно.
И да, если ты начинающий и хочешь набить опыт, то не слушай тех, кто втирает всякие фреймворки, для начала, конечно же, нужно научиться самому, особо если твой уровень знания css настолько хуевый, что даже не знаешь про свойство display у html элементов.
>> No.45095 Reply
>>45089
display: inline-block;
float: left;
>> No.45096 Reply
>>45094
Да никто не говорит, что бутстрап заменяет знание, как работает display. Плохо только, если на работе на реальных проектах ты так и будешь продолжать учиться.
>> No.45097 Reply
>>45089
> . Как сделать средствами CSS два блока так, чтобы они интерактивно компоновались: на широком экране стояли рядом, а на узком становились в столбик.
смотри в сторону media query, свойства display, max-width
>> No.45106 Reply
javap.exe
Для удобства пользования, забил весть путь к исполняемому файлу в алиас вида
> DOSKEY javap="C:\Program Files\Java\jdk1.8.0_25\bin\javap.exe"
Но когда я пытаюсь его вызвать в cmd, то он напрочь отказывается работать с параметрами, те вызов
> javap -c -classpath HelloWorld.class HelloWorld
Обрабатывается, как будто я просто в консоли написал
> javap
И он мне выкатывает стандартную для такого вызова справку о работе с программой. Кто сталкивался с работой алиасов в Windows 7, в чем может быть причина ?
Я в курсе, что в PATH можно добивать всю директорию "C:\Program Files\Java\jdk1.8.0_25\bin". Но пока так делать не хочу.
Пробовал делать .symlink-ки в директории ProgramData\Oracle\Java\javapath, но тогда он не видит нужные ему дллки, тк пытается их искать относительно текущей директории.
Спаси меня анон, мимо-новичок раскуривающий Scala, имеющий небольшой опыт работы с Java
>> No.45139 Reply
>>45106
Сам спросил, сам ответил, в конце макроса надо было дать указания, что последуют параметры ($*):
> DOSKEY javap="C:\Program Files\Java\jdk1.8.0_25\bin\javap.exe" $*
>> No.45150 Reply
>>42650
Кто-нить хочет в SQL/data mining/etc потренироваться? База на 48 млн. турецких аборигенов (паспортный стол), 1,5 Гб в архиве. Качайте на здоровье.
%%http://185.100.87.84/%%
>> No.45169 Reply
В gtk есть idleadd, в tk afteridle, а как в кути такое делать?
>> No.45170 Reply
>>45169
Таймер на 0, наверное.
>> No.45171 Reply
>>45170
Блин, мне надо метод виджета вызывать из другого треда, таймер можно только в своем стартовать. Есть что-то простое? В интернетах везде громоздючие queue, сабклассы, объявление/подключение к сигналам.
>> No.45172 Reply
>>45171
> метод виджета вызывать из другого треда
Тогда через сигнал-слоты.
>> No.45173 Reply
>>45172
Грр, не хотел эту муть рисовать в программе на пять строк.
>> No.45175 Reply
>>45173
Тогда ты немножко ошибся в выборе фреймворка.
>> No.45176 Reply
>>45175
Это да, но мне хотелось немного кути попробовать, да и нужны несколько финтов которые тикей не умеет. Все же пришлось засабклассить QObject.
>> No.45180 Reply
File: Screencast-2016-04-11-19:09:49.webm
Video 1266x550 x 16.96 s; 718 kB - Click the image to play video
Screencast-2016-04-11-19:09:49.webm
>>45176
Результат.
>> No.45181 Reply
>>45180
Ох уж мне эти линуксы. Понавешают функциональностей так, что ни пером описать, а потом при каждом апдейте всё летит к хуям. Ёбаная игрушка.
Извините, у меня опять бомбит.
>> No.45183 Reply
>>45176
> кути
Кьют, блджад.

>>45181
При чем здесь линукс?
>> No.45184 Reply
>>45183
Не, не звучит.
>> No.45185 Reply
>> No.45186 Reply
>>45185
Да, все правильно.
> unofficially as /kjuːˈtiː/ "Q-T"
>> No.45202 Reply
File: 1435577670997.png
Png, 96.11 KB, 400×400 - Click the image to expand
edit Find source with google Find source with iqdb
1435577670997.png
Реквестирую идею несложного приложения, которое можно написать одному за неделю без сторонних библиотек.
Язык: Си.
Среда: Блокнот без подсветки и gcc.
Это должно быть что-то несложное, полезное, интересное и не требовать графики и лишних библиотек.
Сам я быдлостудент, учат нас сярпу, впф и прочей фигне.
>> No.45203 Reply
>>45202
> Блокнот без подсветки и gcc.
Мазохист херов. Хоть бы какую-нибудь бесплатную IDE взял или редактор с подсветкой.

А требованиями на Си и отсутствие внешних библиотек ты порезал почти всё, что может быть несложным, полезным и интересным...

Мои предложения:
- олдскульная игрушка с консольным интерфейсом
- сервер или бот для какого-нибудь несложного сетевого протокола (тот же IRC, к примеру)
>> No.45204 Reply
Сделай свою библиотеку для работы с популярным форматом каким-то, пикчи или там теги мп3. Т.е. есть готовый продуманный формат, который надо самому реализовать.
Ну или свой формат, например, key-value хранилище.
>> No.45205 Reply
>>45202
Пиши парсер вакабы.
>> No.45206 Reply
>>45205
Си - самый подходящий язык для этого.
>> No.45222 Reply
>>45202
Тяжело оценить что для тебя будет несложным приложением на одну неделю. Писать неделю ты будешь 24\7?

Например, генератор двухмерных лабиринтов с ascii визуализацией.
Бонус поинты:
- Прокрутка и масштабирование картинки.
- Параметризуемая пользователем генрация.
- Трехмерные лабиринты.
- Визуализация кратчайшего пути прохождения лабиринта.
- Сохранение и чтение готового лабиринта в\из файла в бинарном или каком-то нормальном формате.
>> No.45238 Reply
File: ads.png
Png, 18.29 KB, 481×534
Your censorship settings forbid this file.
r-18g
Каким методом сортируется List в майкросовтовском .Net?
Я просто вчера решил таки запилить первую в жизни быструю сортировку и получилось, что List.Sort() в 5 раз быстрее(Замерял разницей между DataTime.Now начала и завершения выполнения сортировки).
Хотя раньше для лаб я всегда юзал сортировку пузырьком и быстрая работает таки быстрее.
>> No.45239 Reply
>>45238
https://msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs.110%29.
> If the partition size is fewer than 16 elements, it uses an insertion sort algorithm.
> If the number of partitions exceeds 2 * LogN, where N is the range of the input array, it uses a Heapsort algorithm.
> Otherwise, it uses a Quicksort algorithm.
http://www.sorting-algorithms.com/
https://www.youtube.com/watch?v=kPRA0W1kECg
> работает таки быстрее
Разные алгоритмы по разному себя показывают на разных наборах.
>> No.45240 Reply
>>45238
Оставим в стороне регистр именования методов и параметров этих методов, отбросим вопрос о разрыве строки между условием и однострочным содержимым следующего блока. У меня только один вопрос: зачем ты передаёшь в метод SORT список значений как ref List<int>? Зачем тебе в данном случае нужен модификатор ref?
>> No.45241 Reply
>>45238
Алсо, DateTime.Now - не шибко точный показатель времени. Для таких замеров лучше юзать Stopwatch (https://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch([...].aspx).
>> No.45242 Reply
>>45240
Ну, это, я типа, короче, привык, когда на крестах учился, что в функцию передается не сам объект, а его копия, потому забываю, что в сярпе почти все объекты - ссылочые. Вот. Наверное, тут можно и без ref было.
>> No.45243 Reply
>>45242
> Наверное, тут можно и без ref было.
Не "наверное", а "точно", т.к. List<T> - тоже ссылочный тип. Поэтому шарповая сигнатура метода вроде void Foo(List<T> bar), переведённая на язык плюсоёбов, уже будет выглядеть как что-то вроде void Foo(List<T>* bar). Добавив в сигнатуру слово ref (void Foo(ref List<T> bar)), ты, по сути, сделал так: void Foo(List<T>** bar), т.е. передал указатель на указатель. Таким образом, ты не только добавил в свой код немного накладных расходов на хранение и разыменование лишнего указателя, но, что гораздо хуже, ещё и запутал читающих твой код программистов, дав им иллюзию того, что метод Foo может изменять ссылку на список в своём теле, а вызывающий код может на это рассчитывать.
Вывод: никогда не используй слово ref без понимания, что оно в действительности значит и для чего оно используется. Лучше ещё раз перечитай какую-нибудь умную статью про reference types и value types, а также про маршалинг параметров методов и влияние на этот процесс слов ref и out.
>> No.45244 Reply
>>45243
Ну ок. Хотя я же пока только студентота и учусь.
Но ты безусловно прав, нужно больше читать и практиковать все эти дела.
>> No.45336 Reply
Есть такое выражение:
seq > ack && seq-ack <= max/2 || ack > seq && ack-seq > max/2
Можно ли его переписать с меньшим количеством операций? Все переменные uint32_t. seq и ack могут быть любыми <= max. Опциональные условия: max может принимать значения 0x1F, 0xFF, 0xFFFF.
>> No.45337 Reply
>>45336
Приравняй x=sec-ack, нарисуй на прямой отрезки удовлетворяющие условиям.
>> No.45363 Reply
Привет. Нужен пинок моей ленивой жопы в нужном направлении. Как сделать так что бы скрипт копировал названия файлов в указанной директории и переносил в текстовый файл. Как эти названия будут вставляться в конечный файл я себе в принципе представляю. Но вот как реализовать копирование текста из названий файлов, я не представляю.
>> No.45364 Reply
>>45363
> скрипт
Ну раз тип скрипта ты не указал, значит будем использовать мой любимый, потому что он самый лучший.

import os
with file("out.txt") as f:
for path, dirnames, filenames in os.walk('C:\porn'):
for filename in filenames:
f.write(os.path.join(path, filename))
f.write('\n')
>> No.45365 Reply
>>45364
Ну, блджад, какого черта доброчан пробелы проебал внутри блока.
>> No.45367 Reply
>>45364
Я совсем нуб, что значит тип скрипта? Будет маленькая программка на питоне для автоматизации некоторой рутины. В частности того же переноса названий в отдельный файл. Никаких GUI. Скопировал на рабочий стол, запустил, ввел в текстовой строке команду и все. Большое спасибо за ответ.
>> No.45368 Reply
>>45367
Некоторые считают, что Питон якобы не единственный скриптовый язык в мире, you know. А это общий тред, так что стоит указывать, что ты используешь.
>> No.45392 Reply
File: 1230150820999.jpg
Jpg, 41.84 KB, 500×344 - Click the image to expand
edit Find source with google Find source with iqdb
1230150820999.jpg
>>45363
ls /home/%USERNAME%/Video > список_видео.txt
>>45364
Наркоман.
>> No.45418 Reply
Как шипиться с OpenAL на линуксе? Требовать установить или таскать с собой? Как правильно организовать первое, если проект не в пакете, а просто бинарник с ресурсами?
>> No.45420 Reply
>> No.45421 Reply
>>45420
Спасибо, я умею линковаться. Вопрос про выбор способа, который будет привычнее/удобнее пользователям, а не про детали. Половина гугла утверждает, что надо носить с собой, другая половина что ни в коем случае нельзя.
>> No.45602 Reply
File: test.png
Png, 11.76 KB, 414×277 - Click the image to expand
edit Find source with google Find source with iqdb
test.png
Добрый день господа кодеры. У меня есть простая задача. В Excel файле есть две таблицы по 2 столбца на 2 листах. В первом столбце каждой таблицы - код. Во втором - цена. Необходимо на другом листе сохранить код строки, где цена первой таблицы меньше цены во второй. При этом количество строк неизвестно. Написать это нужно на vba (то есть сделать макрос), синтаксис которого я не знаю.

Как бы, алгоритм я понимаю - необходимо посчитать количество строк в первой таблице и сохранить его в переменную count. Создать переменную i=0 Затем выделить первый код, нажать стрелочку вправо, скопировать "цену" в переменную price1, нажать стрелкочку влево, скопировать "код" в переменную code1. Перейти на другой лист, поискать этот код, если он найден - закрыть поиск (нажать эскейп), нажать стрелочку вправо, сравнить цену в ячейке с сохраненной ценой в переменной price1. Если price1 меньше цены в ячейке - перейти на третий лист и скопировать туда код из переменной code1. Вернуться на первый лист, выбрать первую ячейку, увеличить i на один (і++), нажать стрелочку вниз i раз. Повторить, пока i<=count.
Собственно вопрос - как это сделать на vba?
Либо, если делать на С++ или С# - как получать доступ к ячейкам?
(В пике - пример данных)
>> No.45603 Reply
>>45602
Можно легко мутить через ole объекты, биндинги есть для всех популярных языков, по-моему.
А с этой вба дриснёй возиться себе дороже.
>> No.45604 Reply
>>45603
хммм... Завтра тогда попробую вот этим способом. Надеюсь он мне под 2003 эксель подойдет. Спасибо за совет.
>> No.45612 Reply
>>45602
> Либо, если делать на С++ или С# - как получать доступ к ячейкам?
https://github.com/ExcelDataReader/ExcelDataReader
https://sourceforge.net/projects/koogra/

Алсо, к экселю можно подключаться через ADO.NET, но там были какие-то выебоны с типами данных.

>>45603
> А с этой вба дриснёй возиться себе дороже.
Удваиваю.
>> No.45614 Reply
>>45602
>>45602
У меня глупый вопрос, аноны. Я нашел пример работы с этими ole объектами на с++. Есть вот такой код:

http://pastebin.com/EVWF14QS

При попытке компиляции выбивает ошибку о том, что "Office.h" не найден. Где мне его взять? (офис 2003, ms visual studio 2010)
>> No.45615 Reply
>>45612
> > https://github.com/ExcelDataReader/ExcelDataReader
> > https://sourceforge.net/projects/koogra/
Спасибо? конечно, но я, к сожалению, не умею подключать к проекту библиотеки. По сути я знаю только основы C++.
Если подскажешь, как - то огромное спасибо.
Гитхабовский код - сейчас установлю визуал с# и попробую, спасибо.
>> No.45618 Reply
>>45615
ExcelDataReader доступен в NuGet репозитории. Возьми какую-нибудь Visual Studio Express 20xx, найди там NuGet консоль и выполни "Install-Package ExcelDataReader". Вот тут с картинками: http://docs.nuget.org/consume/package-manager-console. Обычно, инсталлятор сам подключает правильную dll к твоему проекту.
>> No.45619 Reply
>>45602
>>45615
Склеил на коленке куски кода из МСДН, держи проектик (VS2015). https://www.dropbox.com/s/b8vxctetxch9sad/ExcelThingy.zip?dl=0
>> No.45630 Reply
>>45619
О, спасибо. Сейчас поставлю 2015 студию и опробую.
>> No.45631 Reply
>>45603
Нет. VBA для того и создан, документы обрабатывать. И его возможности межпроцессного взаимодействия поистине охуительны, доводилось на нем писать софт фотостудии для автоматизации рутины. На всё про всё ушло пару дней, а на том же шарпе месяц точно убил бы. Писал на этом же вба софтину для хелпдеска, тоже все просто и быстро.
Прикручивать к простой обработке документов сторонние движки и ЯП - вот корень изврата. vba очень прост для изучения, и если пилишь софт в M$-инфраструктуре, его знать надо.
В этом vba одна проблема - при ошибке в коде IDE дает messageBox(), причем тянется это из мохнатых версий VB. У - удобство. Ну и конечно же гениальное On Error Resume Next, нет, это точно злой гений от мира IT придумал.
>> No.45639 Reply
>>45619
Что-то странное происходит с кодом.
При обработке строки otherItems[secondCode] = double.Parse(secondPrice); выбивает эксепшн о том, что System.FormatException was unhandled. Message=Входная строка имела неверный формат.
Посмотрел на значение secondPrice во время ошибки. Оно равно 22.2
Если в режиме отладки исправить значение на 22,2 - все работает исправно. Сначала решил закоментить замену запятой на точку. Но ничего не произошло. Тогда начал смотреть на функцию ReadCellValue. Оказалось, что условие cell.DataType == CellValues.Number не выполняется. Открыл эксель, посмотрел на формат ячеек - их формат оказался "общий". Сменил его на "числовой", запустил программу и... условие cell.DataType == CellValues.Number все равно не выполняется, в функцию не заходит и в итоге значение возвращается через cell.CellValue.Text. Тоже самое и с остальными числами. И я, хоть убей, не пойму почему.
>> No.45640 Reply
>>45639
Решил пока что тем, что вместо return cell.CellValue.Text; в конце функции ReadCellValue заменил на return cell.CellValue.Text.Replace('.', ',');
Но это какой-то костыль. Хотя пока работает на тестовых данных. Проверю сейчас на реальных.
В общем, огромное тебе спасибо, анончик за код. Сотни нефти тебе и лучи добра.
>> No.45642 Reply
>>45639
Посмотри в дебаггере что хранится в cell.DataType. Поставь курсор на строку, где начинается тело ReadCellValue, нажми F9 или бякни мышью по левому бортику, где обычно пишутся номера строк. Должен появиться красный кружок-брейкпоинт. Потом запусти приложение с дебаггером - F5.

Когда приложение запустится, выполнение будет каждый раз прерываться на этой строке, ты можешь либо написать выражение в Watch панели, либо просто навести курсор мыши на cell.DataType, чтоб посмотреть его значение.

F10 заставит дебаггер шагнуть на одну строку дальше, F5 "отпустит" выполнение до следующего брейкпоинта.
>> No.45643 Reply
>>45631
> для автоматизации рутины
Существуют нормальные скриптовые оболочки, например bash или powershell.

> На всё про всё ушло пару дней, а на том же шарпе месяц точно убил бы
Видимо ты на ВБА пишешь лучше, чем на шарпе.

> vba очень прост для изучения, и если пилишь софт в M$-инфраструктуре, его знать надо.
Не надо. Работаю с .NET стеком уже восьмой год. Как не знал VBA так и не знаю, и не надо. Шарп - наше все. Сервисы, веб, десктоп, даже ебучий sharepoint - все либо шарпик, либо XML надстройки.
>> No.45721 Reply
>>45619
Это снова я. Я не работал раньше со словарями, поэтому не очень понимаю их синтаксис. Я немного ошибся с исходными условиями задания - там надо сравнивать не построчно коды, а каждый код из первой таблицы с каждым кодом из второй, и уже если коды совпадают - сравнивать цены, а потом уже их записывать.
Я понимаю, что это несколько нагло, но, анон, помоги с этим еще. Я пытался сделать так:
var cheaperItems = new Dictionary<string, double?>();
var CountOfCell1 = originalItems.Count;
var CountOfCell2 = otherItems.Count;
for (var iter=0;iter<=CountOfCell1; iter++)
{
for (var yter=0; yter<=CountOfCell2; yter++)
{
if (originalItems.ElementAt(iter).Key == otherItems.ElementAt(yter).Key && originalItems.ElementAt(iter).Value < otherItems.ElementAt(yter).Value)
cheaperItems.Add(originalItems.ElementAt(iter).Key, originalItems.ElementAt(iter).Value);
}
}

Но условие не срабатывает, поскольку, видимо не правильно сделал.
Сотни нефти и добра тебе в любом случае.
>> No.45722 Reply
>>45721
Собственно пример исходных данных.
http://rgho.st/6X2dHtHf4
>> No.45723 Reply
File: res.png
Png, 81.58 KB, 788×523 - Click the image to expand
edit Find source with google Find source with iqdb
res.png
>>45721
Результат так выглядит?
мимо
>> No.45724 Reply
>>45723
Да, должен так выглядеть.
>> No.45725 Reply
>>45724
Есть простой как три копейки питон скрипт на openpyxl с прибитыми гвоздями колонками. Сомневаюсь, что тебе такое подойдет, но если надо скажи.
>> No.45726 Reply
>>45725
Собственно мне нужно доделать уже ту программу на С#
Но скрипт тоже пригодится. Скинь если не жалко.
>> No.45727 Reply
>>45726
https://dl.dropbox.com/s/i2zkmk8wmb1sagk/dcexcelscript.zip
> python3 ./script.py /path/to/MyDoc.xlsx
Либари в архиве (все что не script.py).
>> No.45730 Reply
>>45721
Коды во второй колонке уникальные? Если да, то http://pastebin.com/30P0Psc2
>> No.45733 Reply
>>45730
*во второй паре колонок
>> No.45743 Reply
>>45727
Спасибо.
>>45730
Спасибо, завтра протестирую. Вообще во второй паре колонок коды тоже могут быть не уникальными с разными ценами, но думаю будет достаточно упорядочить по убыванию цены вторую пару колонок. Если я правильно понимаю - перебирание колонок идет по порядку же? Если да - то достаточно того, чтобы он сравнивал самую большую цену из колонки справа.
>> No.45744 Reply
File: 1.png
Png, 30.20 KB, 856×121
edit Find source with google Find source with iqdb
1.png
File: 2.png
Png, 144.75 KB, 1366×727
edit Find source with google Find source with iqdb
2.png

>>45730
Протестил, спасибо, работает. Правда есть одна маленькая проблемка - при открытии файла выясняется, что некоторые данные потеряны. Эксель их предлагает восстановить, тогда все хорошо. Если не восстанавливать - файл не открывается. Если его открыть через ГуглДиск - то на новом листе не будет столбца с ценами, из чего я делаю вывод, что какая-то проблема во вводе данных по ценам. Не подскажете, аноны, в чем дело?
>> No.45745 Reply
>>45744
Только сейчас подумал о том, чтобы закомментировать часть кода, которая записывает цену на новом листе. Если закомментировано - нормально все открывается. Следовательно проблема именно там. Вероятно проблема в строке priceCell.CellValue = new CellValue(item.Price + "");
Попробовал изменить ее на priceCell.CellValue = new CellValue(item.Price.ToString());
но все равно все та же проблема остается.
>> No.45746 Reply
>>45745
Окей, я нашел решение. Если заменить строку priceCell.DataType = CellValues.Number; на priceCell.DataType = CellValues.String; то все работает. Но я не понимат почему.
Алсо, по поводу этого бага >>45642
cell.DataType когда считывает ячейки с цифрами - принимает значение null. При єтом он никогда не становится равным CellValues.Number
Может это потому, что CellValues.Number может быть только в xml?
>> No.46199 Reply
Есть программа на прологе:

DOMAINS
имя = валентин; леонид; валерий; андрей; михаил
факультет = физический; исторический; биологический; географический
инструмент = саксофон; пианино; контрабас; ударные
студент = студент(имя, инструмент, факультет)

PREDICATES
nondeterm студент(имя, инструмент, факультет)

CLAUSES
студент(михаил, саксофон, _).
студент(_, пианино, физический).
студент(, ударные, ) :- студент(леонид, , ); студент(михаил, , ); студент(валентин, , ); студент(андрей, , ).
студент(, , географический) :- студент(михаил, , ); студент(валентин, , ); студент(валерий, , ); студент(андрей, , ).
студент(михаил, , ) :- студент(, , физический); студент(, , географический); студент(, , биологический).
студент(андрей, , ) :- студент(, , физический); студент(, , исторический); студент(, , географический).
студент(андрей, , ) :- студент(, саксофон, ); студент(, контрабас, ); студент(, ударные, ).
студент(валерий, , ) :- студент(, , географический); студент(, , биологический); студент(, , исторический).
студент(, ударные, ) :- студент(, , физический); студент(, , географический); студент(, , биологический).
студент(леонид, , ) :- студент(, саксофон, ); студент(, пианино, ); студент(, ударные, ).

GOAL
студент(валентин, Инструмент, Факультет).

Компилятор выдаёт, что переменные в первой, второй строке после CLAUSES и первая в четвёртой строке not bound.
Система Visual Prolog 5.
Что можно здесь сделать?
>> No.46962 Reply
Добрый день, анон. Прошу помощи в непростом для меня деле - программной реализации алгоритма шифрования blowfish. Возникают трудности с пониманием теории данного алгоритма, а конкретнее - как открытый текст взаимодействует с S-блоками, как ,собственно, сгенерировать эти S-блоки и что они должны содержать. Прошу максимально подробно разъяснить данный процесс или подкинуть литературы на эту тему, а то мануалы, которые я находил, были мне непонятны или в них данный процесс не объяснялся. Заранее благодарю за помощь.
>> No.46969 Reply
>>46962
Бамп. Ответь, анон, очень нужно.
>> No.46978 Reply
>>46969
И еще один. Неужели никто не знает, или всем как всегда?
>> No.46985 Reply
>>46978
Анон, мне не "как всегда" (и что это за грязные намёки), но я просто никогда не занимался шифрованием. Если ты расскажешь, что тебе непонятно в имеющихся у тебя мануалах, возможно, найдётся тот доброкодер, который сможет тебе помочь.
>> No.47168 Reply
File: 14247268961483.jpg
Jpg, 78.56 KB, 779×1280 - Click the image to expand
edit Find source with google Find source with iqdb
14247268961483.jpg
Я не знаю, на чем пишутся аддоны к фаерфокс, но если кто-то знает, напишите для меня аддон/скрипт, который будет автоматически выставлять скорость видео на 1.5.
>> No.47194 Reply
>>47168
Мне нравится идея. Только я предлагаю не 1.5, а 1.75. Или сразу 2 как компромиссный вариант.
>> No.47195 Reply
File: 14246172910681.jpg
Jpg, 416.57 KB, 550×829 - Click the image to expand
edit Find source with google Find source with iqdb
14246172910681.jpg
>>47194
Идеально было бы сделать, чтобы это было настраиваемо.
>> No.47209 Reply
>>47168
И с какими сайтами этот аддон/скрипт должен уметь работать? С флешем думаю вряд ли что-то выйдет толковое
>> No.47210 Reply
Есть костыль для регулировки тега video.
Флэш ты вряд ли зарегулируешь.
Уймитесь, велосипедисты.
>> No.47211 Reply
File: БыстраБлять.jpg
Jpg, 8.40 KB, 480×360 - Click the image to expand
edit Find source with google Find source with iqdb
БыстраБлять.jpg
Простых реквестов мне запилите!
>> No.47212 Reply
>>47209
На тытубе, конечно. Забыл указать.
>> No.47214 Reply
>>47209
>>47212
Твич и вконтактик.
>> No.49231 Reply
File: 3aa96945b314d008f98e8d9aef4500b6.jpg
Jpg, 345.00 KB, 830×830 - Click the image to expand
edit Find source with google Find source with iqdb
3aa96945b314d008f98e8d9aef4500b6.jpg
На всякий случай и тут спрошу.

Помогите баке. Решил пересесть с VS на хоркорный блокнотик и компилировать через g++. Так вот, для удобства организовал такую структуру папочек:
folder
-include
--someHeadersFolder
---someHeaders
---...
--...
-src
--someSources
--...
-build

Так вот, при компиляции вида:

> g++ src/*.cpp -I/include -o build/App.exe

Компилятор выдает ошибку типа нет такого файла или директории. Причем только с моими хедерами, а если это сторонние библиотеки - никаких проблем. Что я делаю не так?

В дополнение.
Почему-то если для моих заголовочных файлов в include использовать "" вместо <> и указать относительный путь, то все компилируется. Но блин, как-то не хочется в каждом файле писать так:
#include "../include/headersFolder/header.h"
хотелось бы чтобы было как-то так:
#include <headersFolder/header.h>
>> No.49239 Reply
>>49231
Там же надо переменную среды задавать:
SET INCLUDE=...
>> No.49292 Reply
>>49231
> -I/include

На моих линуксах такое явно бы не прошло. Я бы как минимум убрал / в начале.

Ещё я храню всё вместе, но это другая история: больше тысячи строк на Си меня не хватало.
>> No.49293 Reply
>>49231
> > g++ src/*.cpp -I/include -o build/App.exe
> /include
"/" лишний. Так ты от корня ФС include ищешь.
>> No.49294 Reply
>>49292
Обычно один файл-помойка сишного кода меньше тысячи строк и не бывает.
>> No.49295 Reply
>>49294
Я разгребаю кучку после 300-400 строк в разные файлы вне зависимости от языка, после 300 строк становится очень трудно читать.
По той же причине разбиваю функции больше одного экрана.

Когда писал на scheme, идеальная функция держала в себе 5-7 строчек, неидеальная - 15-20.
Возможно, именно поэтому я не могу по-хорошему ни в Си, ни в большие проекты.
Как вы вообще держите в голове огромные кодообъёмы?
>> No.49305 Reply
>>49295
Никак не держим. Ты примерно знаешь, что у тебя происходит, а с конкретикой разбираешься на месте. Для навигации есть Ctrl+F и Code Folding.
> Когда писал на scheme, идеальная функция держала в себе 5-7 строчек, неидеальная - 15-20
Это вот ересь. Все вот эти мартины с дядябобами кормят вас говном с ложечки. Надо помнить, что они энтерпрайзники, и стандарты хорошего кода у них энтерпрайзные.

Эти двадцать строчек на бумаге выглядят хорошо. Открываешь ты файл - а у тебя там вместо функции на двести строк одна на двадцать, которая полностью состоит из вызовов функций помельче. И всё вроде бы хорошо и красиво - у тебя есть куча мелких функций, которые "делают одно дело и делают его хорошо" - пока что-то в этой функции не ломается. А вот когда оно ломается, то оказывается, что взять и прочитать одну функцию на двести последовательных строчек - это проще, чем сделать то же самое, но когда эти двести строчек размазаны по всему файлу. Зато на первый взгляд, конечно, не страшно - все функции маленькие же, легко разобраться будет же.

В общем, надо меньше надрачивать на красоту кода и больше кода, собственно, писать. Удивительно, но это в итоге приводит к более лучшему коду, чем когда ты "думаешь над архитектурой", но это тема для другого раза.
>> No.49317 Reply
>>49305
Нет, я не знаю ни примерно, ни конкретно. А Code Folding вообще слишком страшная штука, чтобы её использовать, потому что всё время, как её используешь, противоестественным образом хочется посмотреть под спойлер я думаю, таких людей много.

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

Не пони.

Просто на Scheme оно так натурально и выглядит — больше 5-20 строк особо писать не хочется и смысла нет, хотя в исходниках можно было спокойно увидеть функции на 100 и больше строк. Но мне много не приходилось писать. Но макросы на 40 строк вполне себе были со всеми зависимостями внутри.

Трейсбэков на много вызовов у меня пока не было, в любом случае.

Что-то в функции поломаться не может, если пишешь чистую функцию. А уж когда сломается верхний ряд — это, ясное дело, придётся лезть внутрь, но не особо глубоко. И ты примерно понимаешь, что по отношению к верхнему рядо могло поломаться.
>> No.49319 Reply
>>49305
> Ты примерно знаешь, что у тебя происходит
А коллега, которого попросили править твой код, понятия не имеет. Да ты и сам через полгода не помнишь.
> Надо помнить, что они энтерпрайзники, и стандарты хорошего кода у них энтерпрайзные.
То есть тебя интересуют только маленькие проекты-однодневки, которые ты будешь писать один и никого к ним не подпустишь? Как лабы в универе?
> А вот когда оно ломается, то
То ты проверяешь результаты выполнения отдельных функций, не читая их. А потом уже переходишь к той, которая неверно работает. А прочтёшь ты 300 строк и с ходу не сможешь уложить всё в голове.
> В общем, надо меньше надрачивать на красоту кода и больше кода, собственно, писать. Удивительно, но это в итоге приводит к более лучшему коду, чем когда ты "думаешь над архитектурой", но это тема для другого раза.
Мой опыт говорит об обратном.
>> No.49320 Reply
>>49317
> Не пони.
Что ты не пони? Работа за деньги -- это для быдла. Ты должен сидеть дома, двачевать капчу и писать минипрограммы только ради своего удовольствия. Денег у мамы попроси лучше.
>> No.49321 Reply
>>49317
> я не знаю ни примерно, ни конкретно
Под "примерно" я имею в виду, что ты знаешь, что в список элемент тебе добавляет функция listinsert, поэтому когда тебе надо, ты делаешь ctrl+f listin[enter], а там на месте ориентируешься.
> больше 5-20 строк особо писать не хочется
А это, уважаемый, потому что Вы пишете на, простите, нечитаемом скобкопоносе - потому и не хочется. Я вот книжку сейчас читаю про схемку, и там есть эксерсайзы с тремя звёздочками (звёздочки - сложность, выше трёх я ещё ни разу за пять с половиной глав не видел), которые делаются в одну строчку на окамле. Схемщики - это вообще особая порода забавных зверушек, но я про них сейчас не хочу.
>>49319
Энтерпрайзный "красивый код" - это абсолютно стандартный код (отсюда и все эти паттерны, даже там, где они не нужны; отсюда же архитектурные астронавты и т.д.), который тебя надрачивают писать в колледже/университете (и твоему работодателю не нужно тратить время на обучения тебя). Это такой код, который только что нанятая макака сразу же начнёт расширять и дописывать, не тратя деньги на его понимание. Делается это всё затем, чтобы можно было вместо повышения зарплаты просто уволить старых макак, набрать новых (за полцены от старых) и не потерять прибыли в процессе. Была где-то метрика: энтерпрайзный программист пишет в год три тысячи пятьсот строк кода. Джонатан Блоу где-то писал, что типичная 2д инди-игра имеет примерно 90000 (нет, я не добавил лишний нолик) строк кода. Сделай математику и посчитай, когда ты с такими стандартами придёшь к успеху.
> коллега
Разберётся - не маленький. Собственно, вся разница тут лишь в том, что функции находятся в одном файле, а не в десяти. А я? Ну, мне вот понадобилось перед новым годом посмотреть, как я летом одну штуку написал - я открыл файл в 4.5к строк кода, нашёл, скопировал. На всё ушло минуты три-четыре. А вот был бы у меня проект разбит на файлы - я бы в них копался в поисках, где эта функция находится, в два раза дольше. Это, возможно, был сарказм. Или нет. Как мы знаем, в каждой шутке есть доля шутки.
> То ты проверяешь результаты выполнения отдельных функций, не читая их.
Вот только оно так не работает за пределами лаб, задачек из книг/курсов по программированию и, может быть, веба. Обычно в реальных программах логика сложная, и случается, что функции все вроде бы работают правильно, а вот результат выходит не тот. Я, правда мало писал реальных программ (в основном игры, поэтому моё восприятие может быть немного смещено в ту сторону), но в тех, которые писал, так и получалось. Возможно, в вебе можно просто сделать композицию из набора чистых функций - и пущай оно тормозит, - но там свой мирок, и я туда не хочу даже лезть.
> Мой опыт говорит об обратном.
Я мог бы тут написать свой опыт (и немного из подсмотренного от других программёров), но это получится немаленький такой пост в бложик, и я не уверен, что я хочу это сейчас делать. Так что давай просто согласимся, что ты неправ, и закончим на этом?
>> No.49323 Reply
>>49321
> сразу же начнёт расширять и дописывать, не тратя деньги на его понимание
Ну вот видишь! Ты всё понимаешь прекрасно! А если бы и не деньги, так слово "деньги" на слово "время" замени. Ну если ни деньги, ни время значения не имеют, то конечно практики красиво кода не нужны становятся, это ежу понятно должно быть.
> просто уволить старых макак, набрать новых (за полцены от старых) и не потерять прибыли в процессе
А если макака не будет уволена а сама свалит? Да или просто сдохнет. Или в отпуск/на больничный отправится. Почему это заменяемость кодеров не нужна?
Мне тебе ничего доказывать не надо, всё ты сам сказал нормально.

> Была где-то метрика: энтерпрайзный программист пишет в год три тысячи пятьсот строк код
Чет маловато, честно говоря не верится.
> что функции все вроде бы работают правильно, а вот результат выходит не тот
У меня в голове не укладывается, как это. Как-то ты их не так дробишь. Ну если они логически настолько связны, что они не разбиваются, то тогда и впрямь бы я их не стал разбивать. Разбивать надо так, чтоб они на самом деле были отделены, иначе нет смысла.
>> No.49324 Reply
>>49323
Дополнение: вот не понимаю я. Я поискал мельком в Гугле, как торвальдс пишет. Написано, что он тоже пишет короткие функции. Даже на Си. Да, там есть goto(правильно уместно и понятно использованные) и всякие нужные для Сишного кода странности. Но всё равно функции короткие! Что-то ты мне тут загоняешь.
>> No.49325 Reply
>>49321
> я имею в виду, что ты знаешь
Нет. Поиск я и так могу делать тогда, когда мне надо. Ты привёл только один пример понимания большого куска кода. Их чуть больше. Я не могу уложить в голову большую картину. Поиск по мере вопросов накоплению большой картины в голове не способствует. Кажется, вот это всё (описание базовых вещей) должно лежать комментарием наверху, но мне лень. Поделом мне.

> А это, уважаемый, потому что Вы пишете на, простите, нечитаемом скобкопоносе
Что же, уважаемый, вы сейчас читаете книжку про нечитаемый скобкопонос и пишете на нём. Добро пожаловать в схемеры, вам не отмыться.
> эксерсайзы с тремя звёздочками (звёздочки - сложность, выше трёх я ещё ни разу за пять с половиной глав не видел), которые делаются в одну строчку на окамле
Окамл и схема немного разные задачи выполняют. Где-то в предисловии вашей книжки (или в другом месте) есть рассказ про двух людей, делавших интерпретаторы лиспа на лиспе, которые займут меньше строчек, чем аналог для OCaml. Вы вот сейчас теми же словами говорите: мой язык лучше, потому что «вот это вот» на нём делается в одну строчку. Идите тогда на JS, там для всего нужно меньше строчек.
Да и, честно говоря, мне и на окамле особо не хочется писать больше чем на 20-40 строчек. Выше было то же самое про Си. Вы же нашли себе красную тряпку и полезли с ней бодаться. Вы молодец. Бодайтесь дальше.

Ещё хотелось бы спросить, как связан энтерпрайз и scheme, но как-то смысла особого нет. И кто такие мартины с дядябобами.
>> No.49331 Reply
>>49323
> так слово "деньги" на слово "время" замени
Тут оно немного не так. Речь не о том, что деньги не тратятся, речь о том, что деньги работодателя не тратятся. Это немного разные вещи. Деньги на это уже уплачены той самой макакой, потому что колледжи, которые этому учат, у них все платные. Плюс этот код надо ещё написать. Работодатель готов потратить немного данег вначале, но сэкономить in the long run. Ты? Ну, тут решай сам. Лично я предпочитаю выдать три тысячи строк осмысленного кода, а не две тысячи пятьсот бойлерплейта и пятьсот логики.
>>49324
Суть не в том, чтобы писать длинные функции. Суть в том, что если у тебя есть функция, которая делает пять вещей последовательно, то часто лучше написать эту функцию так, чтобы в ней делались эти пять вещей последовательно, а не разбивать её на пять мелких функций. Суть в том, чтобы не выносить код в функции, пока тебе это не нужно. Я сейчас даже пришёл к тому, что пока код три-четыре раза не скопипащу, то функцию из него не делаю. Потому что до того, как ты наделаешь копипастов, ты не можешь предусмотреть все возможные использования этой функции. Иногда получается, что вынести какой-то кусок кода в функцию можно, но это получится хайерордерная функция в шесть строк, принимающая ещё четыре функции, которые её кастомизируют. Если ты сделал этот код функцией изначально, то тебе при каждой правке надо будет её рефакторить, потом идти в места вызова и смотреть, чтобы там ничего не сломалось, а в конце всё всё равно закончится копипастой. Усилия потраченные вникуда.
По большому счёту, то что я тут пропагандирую - это всем известный древний YAGNI (если не вдаваться в подробности).
Про линукс не знаю, но если ты посмотришь на продуктивных программистов, которые ведут несколько проектов, имеют огромные гитхабы, работают на работе, а по выходным ещё и на людумдары игры пишут, то ты увидишь, что если пользоваться стандартами из книжек, то их код можно легко назвать говнокодом. Нотч - хороший пример. Даже уровень говнокодерства измеряется в милли-нотчах, а тем временем он пишет код, который решает задачи; он способен написать майнкрафт за неделю и какую-то хрень на псевдо3д движке за два дня. А адепты красивой архитектуры не способны. Вот и весь аргумент.
>>49325
> Я не могу уложить в голову большую картину
Погоди. Ты знаешь, что твоя программа должна делать? Ну, вот это и есть твоя большая картина.
> вы сейчас читаете книжку про нечитаемый скобкопонос и пишете на нём
А я на нём не пишу. А читаю потому, что кто-то когда-то решил, что использовать нечитаемый скобкопонос для обучения студентов - это хорошая идея. С тех пор и повелось, что почти все книжки про языки, функциональщину, конпеляторы и интерпретаторы используют скобки. Я бы хотел себе другую вселенную, но щито поделать.
> займут меньше строчек, чем аналог для OCaml
Только если парсинг считать. Да и то, я не уверен. А уж если говорить про читабельность окамла против схемовского жонглирования кадддрами и кадаврами...
И дело тут не в том, что в одну строчку, а в том, что эксерсайз с рейтингом "максимальная сложность" и в одну строчку. И это когда они должны были бы учить выбирать инструмент под задачу.
Алсо, мл - синтаксический сахарок с типами над лиспом, но я вам этого не говорил.
>> No.49720 Reply
>>49331
> пока код три-четыре раза не скопипащу, то функцию из него не делаю
индус детектид. Слава аллаху, такой говнокод сегодня можно пропустить через static analyzer, не копаясь в нем.
> Если ты сделал этот код функцией изначально, то тебе при каждой правке надо будет её рефакторить, потом идти в места вызова и смотреть, чтобы там ничего не сломалось
IDE с авторефакторингом? Не, не слыхали.
>> No.49737 Reply
File: 1529176346856.png
Png, 1.09 KB, 300×20 - Click the image to expand
edit Find source with google Find source with iqdb
1529176346856.png
>> No.49738 Reply
>>49737
Надо переделать алгоритм с С++ на С.
>> No.49742 Reply
>> No.49744 Reply
>> No.49751 Reply
>>49737
Meanwhile, твой стиль кода - говно.
За using namespace std; надо пиздить.
int n; нужно инициализировать, даже если следующей строкой ты его считываешь.
За имена переменных n и v нужно пиздить еще сильнее. Это только в циклах можно i, j, k.
Вместо char и int нужно использовать типы фиксированной длины из cstdint.
За auto вместо примитивных типов нужно что? Правильно, пиздить. auto вообще следует использовать по-минимуму, только для итераторов или сложных шаблонов.
И про кавычки не забывать.
>> No.49752 Reply
>>49751
> auto
И чем тебе auto не нравится? Использовал бы его всегда и везде, если бы писал на плюсах - чем больше работы я могу скинуть на компилятор, тем лучше.
>> No.49753 Reply
>>49751
> За using namespace std; надо пиздить.
Один дурачок не понял, теперь другие за ним повторяют.
https://github.com/lefticus/cppbestpractices/blob/master/03-Style.md#never-use-using-namespace-in-a-header-file
Ещё почитай Страуструповый C++ Programming Principles and Practice, начиная на странице 296 в главе 8.7.1 как раз про это. То же самое и в приложении А.15 на странице 1127.
> int n; нужно инициализировать, даже если следующей строкой ты его считываешь.
а) Это записываешь, а не считываешь.
б) Тебя же за это любая крестомакака говном польёт.
> Вместо char и int нужно использовать типы фиксированной длины из cstdint.
Лолнет. Типы фиксированной длины нужно использовать только если длина тебе важна. Здесь она не важна.
> За auto вместо примитивных типов нужно что?
Хвалить?
https://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/
>> No.49754 Reply
>>49752
> Использовал бы его всегда и везде, если бы писал на плюсах - чем больше работы я могу скинуть на компилятор, тем лучше.
Это говнокод. Нужна строгая типизация, вот это все - а с auto ты можешь скомпилить ошибочный код, не подозревая об этом. Это что-то вроде задания констант define'ами.
>>49753
> Ещё почитай Страуструповый C++ Programming Principles and Practice, начиная на странице 296 в главе 8.7.1 как раз про это. То же самое и в приложении А.15 на странице 1127.
Можно дрочить на мертвого страуса, а можно на Дейкстру с "goto нинужен". А можно вместо этого сообразовываться с реальностью - и заранее защитить код от подключения говнолиб с идентичными стандартным именами.
> а) Это записываешь, а не считываешь.
> б) Тебя же за это любая крестомакака говном польёт.
Ну вот макака и поливает. А сениоры знают, что потом какой-нибудь джун будет допиливать этот код, вставит еще строку между объявлением переменной и считыванием, и словит УБ.
> Лолнет. Типы фиксированной длины нужно использовать только если длина тебе важна. Здесь она не важна.
Макакам не важна, а сениорам нужна всегда. Потому что рекомпильнут твой говнокод более модным компилятором или на другой платформе - и выебут тебя скопом.
> Хвалить?
Нет, ебать. И статеечка говно.
А) В итераторах можно использовать auto, но исключительно из-за крайней убогости STL API. К слову, там говнокод, потому что надо использовать cbegin
B) Несет какую-то хуету. Макака узнала про слово explicit и удивляется.
C) Макака опять несет хуету. Похоже, макака еще не знает про разницу между конструктором и оператором = , а также тем, что компилятор не даст породить временную переменную в этом идиоматичном случае.
D) Оставлять сигнатуру функции на auto - это такой способ отстрелить себе все ноги вместе с яйцами, что просто пиздец. И заменять тип аргумента auto - еще больший пиздец криворукой макаки. Еще бы функции через define задать предложил, индус хуев бомбит от такого рукожопия. Уж если хочется метапрограммировать, бери шаблоны: уж сколько там проверок в компайл-тайм можно навертеть. Нет, бля, хочу индусить говно, не хочу size_t и шаблоны, нас в Бомбейском Заборостроительном на вечерних курсах крестов за 21 день этому не учили.
>> No.49755 Reply
>>49754
> Нужна строгая типизация
Во-первых, если нужна строгая типизация, то не пиши на крестах. Во-вторых, auto никакой типизации не отменяет, и без него ты напорешься на implicit conversion и отстрелишь себе ногу с гораздо большей вероятностью. О чём там Саттер выше и пишет.
> заранее защитить код от подключения говнолиб с идентичными стандартным именами.
Что? Я тебе вообще-то про то, что только дурачки обрезают фразу "никогда не используй using namespace в заголовочниках" до "никогда не используй using namespace". И ты тоже дурачок, потому что не думая за ними повторяешь.
> вставит еще строку между объявлением переменной и считыванием
Ну не пиши на крестах. Там и не такое можно сделать. Или не нанимай идиотов. Проблема или надумана или в тебе, потому что ты не обучил своего джуна объявлять переменные по месту использования.
Вот серьёзно, гайдланы про "никогда не инициализируй то, что будет сразу же перезаписано" разбросаны по всему интернету, поэтому мне хотелось бы получить от тебя ссылок туда, где с каким-нибудь обоснованием рекомендуется обратное.
> рекомпильнут твой говнокод более модным компилятором или на другой платформе
И что произойдёт? Ничего? Всё продолжит работать?
Оно сломается только если ты не использовал типы фиксированной длины там, где они были нужны, о чём я, собственно, и писал.
> статеечка говно
Ну да, откуда ж Саттеру-то знать, как так кресты эти работают. То ли дело какой-то случайный анонимный хрен с горы.
> Оставлять сигнатуру функции на auto - это такой способ отстрелить себе все ноги вместе с яйцами, что просто пиздец.
Хотелось бы пример. Не говоря уже о том, что в крестах ты физически не можешь написать тип для лямбды, поэтому ты обязан использовать auto (там про это, кстати, написано).

У тебя типичный синдром ньюфага. Это когда ты недавно что-то там выучил и спешишь со всеми поделиться новостью, а всё, что не соответствует твоему видению мира, которое ты почерпнул из одной-двух энтрилевельных книжек (и хорошо, если книжек), в тебе вызывает агрессию, потому что, ну как же так-то, ты же лучше знаешь, как оно там на самом деле, а тут какой-то "дурак" старается покрасоваться и "обсирается" в процессе.
>> No.49756 Reply
>>49755
> Во-первых, если нужна строгая типизация, то не пиши на крестах.
Ты еще скажи, что в крестах не строгая типизация. Не учитывая шаблоны, конечно.
> Во-вторых, auto никакой типизации не отменяет, и без него ты напорешься на implicit conversion и отстрелишь себе ногу с гораздо большей вероятностью.
Поэтому все конструкторы делают explicit, если implicit не нужен. С auto отстрелить ногу проще, потому что выведенный тип может оказаться не тем, который ожидал программист - надеюсь, ты не будешь с этим спорить?
> Что? Я тебе вообще-то про то, что только дурачки обрезают фразу "никогда не используй using namespace в заголовочниках" до "никогда не используй using namespace". И ты тоже дурачок, потому что не думая за ними повторяешь.
Я как раз думаю, и даже встречал дурачков-джунов, которые ломали код из-за этого using. Внезапно, в .cpp ты пишешь имплементацию, где можешь вызвать не ту функцию, которую ожидаешь - потому что дурачок и влепил using.
> Ну не пиши на крестах. Там и не такое можно сделать. Или не нанимай идиотов. Проблема или надумана или в тебе, потому что ты не обучил своего джуна объявлять переменные по месту использования.
Ну в общем когда выйдешь из вузика и начнешь работать на реальных проектах, поймешь. Правда же, зачем писать строгий код? Лучше хуяк-хуяк и в продакшн, а потом будешь объяснять клиентам, что твой босс нанял не тех джунов, лол.
> Вот серьёзно, гайдланы про "никогда не инициализируй то, что будет сразу же перезаписано" разбросаны по всему интернету, поэтому мне хотелось бы получить от тебя ссылок туда, где с каким-нибудь обоснованием рекомендуется обратное.
Ну если ты читаешь каких дрочащих на auto индусов, то ты еще и не такие гайдлайны найдешь.
Начни с C++ Gotchas Дьюхерста. Для тебя даже погуглил, это совет 48.
> И что произойдёт? Ничего? Всё продолжит работать?
Действительно, ничего ведь не произойдет, если твой int imdumb = 0xFFFFF скомпилируют на платформе с 16-битным int.
Скажи, ты индус?
> Ну да, откуда ж Саттеру-то знать, как так кресты эти работают. То ли дело какой-то случайный анонимный хрен с горы.
Ну кто же виноват, если этот Саттер с горы не знает азы серьезной разработки.
> Хотелось бы пример
Да хотя бы проебывание const и последующий вызов неконстантного метода аргумента в коде функции. Был бы не индус, словил бы компайл эррор.
> Не говоря уже о том, что в крестах ты физически не можешь написать тип для лямбды, поэтому ты обязан использовать auto
Бля, индус, иди на cppreference, открывай std:: function и смотри примеры, там и лямбда есть.
> У тебя типичный синдром ньюфага.
Как скажешь, лол. Пойду расскажу коллегам, как нынче макаки пишут с auto, неинициализированными переменными и прочими int.
>> No.49757 Reply
>>49756
> Ты еще скажи, что в крестах не строгая типизация.
Нет четкого определения строгой типизации. Однако есть определение статической типизации, и, да, плюсы статически типизированы. Однако использование auto никак ее не нарушает. Ты просто просишь у компилятора выбрать тип самому. И, если вдруг что-то пойдет не так, например ты будешь использовать переменную как int, а потом попытаешься ее использовать как объект (мы пока не обсуждаем тысячи способов неявных преобразований), то ты получишь ошибку компиляции.
>> No.49759 Reply
>>49756
> Ты еще скажи, что в крестах не строгая типизация
С narrowing implicit conversions повсюду? С возможностью проебать один сраный & и получить ситуацию, когда компилятор молча пихает объект туда, где ожидается референс? Такая-то строгость.
> выведенный тип может оказаться не тем, который ожидал программист
Ну да. Об этом Саттер и пишет. Вот вместо for ( int x = arraylength; ... делаешь ты for ( auto x = arraylength; ... и получаешь не тот тип, который ожидал.
> Внезапно, в .cpp ты пишешь имплементацию, где можешь вызвать не ту функцию, которую ожидаешь - потому что дурачок и влепил using.
Ну, окей, тут соглашусь. Мне, конечно тяжело представить ситуацию, в которой есть две функции с одинаковыми именами, которые принимают одинаковое количество аргументов с одинаковыми (или хотя бы совместимыми) типами и возвращают значение одного и того же типа, но что я вообще могу знать о жизни.
> Правда же, зачем писать строгий код?
И при этом ты пишешь на крестах. Ну, да, логично.
> ничего ведь не произойдет, если твой int imdumb = 0xFFFFF скомпилируют на платформе с 16-битным int
Ничего. Потому что во-первых, тут длина, очевидно важна, и во-вторых, оно не скомпилируется. Алсо, в третьих, если оно-таки скомпилируется, то это будет хорошим таким аргументом про строгую типизацию в крестах.
> Ну кто же виноват, если этот Саттер с горы не знает азы серьезной разработки.
Ну, да, Саттеры эти ваши со Страуструпами вообще ни в чём не шарят. Набрали дебилов в комитет по квотам. Вот твои мифические сеньёры, которых никто не видел - вот это да, вот это эксперты.
> открывай std:: function и смотри примеры, там и лямбда есть
Открываю: "Class template std::function is a general-purpose polymorphic function wrapper."
Если погуглить, то легко найти информацию, что если лямбду записать в переменную типа std::function, то случится боксинг. Теперь смотрим вот сюда https://stackoverflow.com/questions/7951377/what-is-the-type-of-lambda-when-deduced-with-auto-in-c11 и в принятом ответе видим, что "The type of a lambda expression is unspecified.". Крутим ниже, и видим цитату из стандарта "The type of the lambda-expression (which is also the type of the closure object) is a unique, unnamed non-union class type". Знаешь, что значит юник и аннеймд? Это значит, что у тебя нет никакой возможности выразить этот тип в коде.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]