Задать вопрос
  • Стоит ли изучать GoLang вместе с изучением алгоритмов?

    @abcd0x00
    qweqwa:
    Это целесообразно при одиночной работе. При работе в группе программистов этого нельзя делать.

    Фактически, за группу программистов решили, какие они отступы будут использовать. Но дело не в этом, почему нет опции "отключить преобразование пробелов"? Она должна быть наряду с другими возможностями подобного рода.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    Данил Антошкин: ты просто не знаешь, как вот такие юристы-экономисты примазываются к чужим достижениям. Суть сводится к тому, что работать будешь ты, а денежки собирать будет он. А потом он будет говорить "я тоже делал". Что ты делал?

    У нас тут не экономический форум. Разговор идёт о языках, как он оценит язык, если он ничего в этом не понимает? Я ему говорю "давай, приведи код, который работает, я его запущу у себя", а он говорит "да тут парень какой-то писал что-то, вот его код". Какой парень? Я тебе говорю! Давай код или ты просто нихрена не можешь. Всё, его нет, как ветром сдуло.
  • Можно ли в гите пропустить пару комитов при выставлении tagов?

    @abcd0x00
    Владимир: ты можешь набрать коммитов, а потом сделать слияние с обязательным коммитом слияния (опция --no-ff у merge). Тогда оно будет выглядеть как единое действие. Но это только для удобства восприятия, потому что коммиты считаются как бы отдельными островками, каждый из которых вносит свой вклад.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    Данил Антошкин: ты скажи спасибо, что тебе вообще тут что-то отвечают ещё. Если бы я делом занимался, ты бы оплачивал тут каждую букву.

    Сложилось мнение, что ты постоянно хочешь какого опустить или доказать, что он не соответствует тому уровню о котором заявляет

    Так они и вправду не соотвествуют. Человек может говорить, что он 20 лет программирует, а когда спрашиваешь "покажи программы свои", он тебе говорит "да ты просто не понимаешь, я по-другому программирую". А потом выясняется, что это очередной юрист-экономист, который не знает, где какая кнопка на клавиатуре.
  • Почему string - это char*?

    @abcd0x00
    Если изучаешь C, так ничему не научишься. C изучается обычно по книге Кернигана и Ритчи. Так и называется K&R2. И указатели там только в 5-ой главе начинаются.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    bamaz:
    во-вторых, вы не угадали - 20 лет в ИТ.

    Образование какое? Да я тебе задание сейчас дам и ты его не сделаешь, а задание для новичков. 20 лет - это очень не конкретно, это любой может сказать и это ничего не значит.

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

    Дурак здесь только один - это ты.
  • Как скопировать строки по маске в новый файл целиком?

    @abcd0x00
    majetree:
    Просто print можно не писать, так как он по умолчанию происходит.
    '$N ~ /^[0-9]{11}$/'
  • Можно ли в гите пропустить пару комитов при выставлении tagов?

    @abcd0x00
    Владимир:
    Я по ходу не сильно понял как он работает.

    Это точно. Покачай чужие проекты (известные) и посмотри, как там делают теги. Используй gitk для просмотра.

    Тег - это просто метка. Ты как бы метишь коммит, чтобы потом его можно было найти. К тегу можно ещё и текст прикрепить.

    Можно десяток комитов объеденить под одним тегом ?

    И коммиты расматриваешь неправильно. В идеале, коммит - это отдельное независимое изменение. То есть они должны быть настолько независимы друг от друга, чтобы их можно было свободно менять местами или раскладывать по разным веткам. Нет такого понятия "десяток коммитов", коммиты не должны знать друг о друге. Бывает, конечно, что один коммит что-то добавляет, а другой коммит это же меняет дальше. Но в идеале они должны тасоваться в любом порядке и иметь одинаковый эффект.
  • Стоит ли изучать GoLang вместе с изучением алгоритмов?

    @abcd0x00
    Gizmothron:
    Оба-на! Да тебе лишь поспорить? Я нахожу противоречие в твоих словах:

    Про Go:
    ...

    Про Python:
    ...

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

    Ты сам подумай. У тебя есть куча кода. Не 10 или 20 модулей. А действительно огромная куча кода. Туева хуча.
    Он нормально работает. Зачем ты его будешь переписывать?

    А ты не видел, как KDE переписывали? Его переписывали, не потому что оно было плохим, а потому что оно закупорилось, не имея доступа к новым технологиям. Эмуляторы - это всё равно хрень. Максимум, что ты можешь с эмулятором иметь, так это тот же функционал. Но когда надо будет связать там какое-нибудь древнее с каким-нибудь новым (типа MS-DOS с Wi-Fi), ты просто ничего с этим не сделаешь и будешь сидеть в своём эмуляторе. Что, ты будешь сидеть и разрабатывать что-то новое под MS-DOS?

    Никто не мешал оставить обратную совместимость. Например, использовали же в заголовке файла "encoding utf".

    В третьем питоне это можно не писать, если у тебя utf-8. Это нововведение третьего питона. А во втором питоне ты ДОЛЖЕН писать utf-8. Когда используется ascii там? Даже у англоговорящих не будет исходник только в ascii никогда, потому что есть куча символов уже, которые могут запросто попасть в комментарии.

    Так вот это нововведение в третьем питоне сделано для удобства людей. А ты предлагаешь такие вещи тащить вперёд. Какие вещи? Что кодировка по умолчанию должна быть ascii. С какого перепугу? И таких вещей во втором питоне - вагон и маленькая тележка. Зачем это тащить вперёд?

    Никто не мешал также для совместимости встроить там указание на версию Python.

    Версию питона ты можешь указывать в шебанге. Или что ты предлагаешь? напихать директив каких-то по всему исходнику? Ха-ха, так вот такую хрень в Go и сделали - это же вообще капец. Это ещё один минус Go, когда ты даже комментарии не можешь писать без оглядки, а то вдруг они там как-то сработают. Это вот очередная глупость или что, я даже не знаю. Или они пьяные были, или их там в Google заставили срочно что-то добавить в язык.

    Следовательно, вот и ответ на самый первый вопрос: даже теперь, когда человек вышел в космос, его наивысшие технические достижения напрямую зависят от РАЗМЕРА ЛОШАДИНОЙ ЗАДНИЦЫ ДВЕ ТЫСЯЧИ ЛЕТ НАЗАД!

    Ну, ушли от ascii в кодировках. А ты предлагаешь оставаться, потому что кто-то там программы какие-то написал.

    Язык не должен настолько сильно изменяться.

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

    Фортран не тот пример. Он, кстати, до сих пор применяется в научном мире, если ты не в курсе.

    Я в курсе, что у тебя ничего на фортране нет и не будет никогда.

    А это все. Строка уже готова к обработка.
    Например, можно пройтись циклом. Там тоже элементарно:

    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
    fmt.Println(scanner.Text())
    }

    Ты напишешь код или так и будешь тут кусочки бросать теоретические? Кусочки и я тебе могу накидать. Просто если ты код не предоставляешь, то не так уж всё, видимо, легко для тебя. Какой-то простой getline() поставил тебя в тупик.

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

    Да не использую я табы. Где-то я хочу три пробела поставить специально, потому что мне так надо. Ты настроишь? Ты не настроишь. Почему? А потому что настраиваются сразу все табы. А настроить половину исходника в два пробела, половину - в четыре, а изредка сделать по три в некоторых строках, ни в одной программе ты так не настроишь. Это ограничение - если настраиваешь, то все сразу.

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

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

    Если ты считаешь, что можно обойтись без Ansible, Vagrant/VirtualBox, Slack и SDK одних из крупнейших в мире облачных хостингов, то у меня закрадываются сомнения - а не беседую ли я со школьником.

    Я могу без всего этого обойтись. Ты не можешь, ты зависим. Ты даже код на Go быстро накидать, запустить и мне скинуть не можешь. Какие технологии тебе нужны, чтобы это сделать?
  • Стоит ли изучать GoLang вместе с изучением алгоритмов?

    @abcd0x00
    Gizmothron:
    1. go fmt форматирует текст табами, а не пробелами.

    Серьёзно? А я и не заметил. Я и говорю, что мне нужно, чтобы он пробелами мог отформатировать, потому что я использую пробелы. С пробелами код в любом редакторе с любыми настройкам будет выглядеть одинаково. Понимаешь, go fmt форматирует не только пробелы и мне что-то из форматирования подходит, но опять же я его не могу применить, потому что он мои пробелы заменит. То есть там даже нельзя выбрать, что он должен форматировать из всего множества, а что не должен.

    2. readline() в Go делается
    примерно так:
    reader := bufio.NewReader(os.Stdin)
    или так
    scanner := bufio.NewScanner(os.Stdin)

    Не надо мне примерные, сформируй готовый исходник. Мы просто оценим, что тебе пришлось делать, чтобы просто прочитать строку из потока.

    Если я снесу Python27, то у меня перестанут работать: Git, Ansible, Slack, 2 штуки SDK облачных хостингов, YouCompleteMe, Terminator, Paramiko, будут проблемы с Virtual Box, OpenCV и Cairo.

    Какое отношение Git имеет к питону? Остальное, что ты назвал, - это то, без чего вполне можно обойтись. Либо они перепишутся, либо останутся с кучей легаси кода, который будет их тянуть в прошлое.

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

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

    Нельзя делать настолько несовместимой новую версию. Фактически это новый язык.

    Они бросились писать на втором питоне, тогда как вторая версия - это слишком сырая версия. Надо понимать, что это ненадёжно в плане развития. Они думали, что третья версия будет совместима со второй (как везде бывает), но питон - это язык постоянных экспериментов (что и делает его гибким), там легко меняют ядро языка. Там вот было две функции - range() и xrange(), это был эксперимент, потому что было непонятно, какую лучше использовать. В результате выбрали второй вариант (посмотрели по использованию в разработке) и оставили только его. А ты предлагаешь "нет, надо было тянуть это за собой ещё 20 лет вперёд".
  • Стоит ли изучать GoLang вместе с изучением алгоритмов?

    @abcd0x00
    Gizmothron:
    Хотелось бы не пересказ чужих слов.

    Сходи в тот топик, там есть некоторые моменты.

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

    Вот ты не понимаешь, что всем всё равно? Они всё равно будут разрабатывать следующую версию питона, хочешь ты или нет. Кто там что разработал - всем всё равно. Новая версия в сто раз лучше старой, ты предлагаешь из-за каких-то там программ (которые и сам не знаешь) оставить всё в том виде, который был 20 лет назад.

    Почему она не совместима? Да потому что всё переделали, много всякой фигни удалили, очистив питон. Если не удалить, то надо всю эту лажу поддерживать и тратить на это время. Зачем? Он не был ещё разработан, это была всего лишь вторая версия языка. Кто-то там что-то написал на второй версии, которая была ещё сырой.

    Уже поздняк метаться.

    Ну, сдохнут эти программы, значит.

    Ты не понимаешь, что многие вещи из второго питона удалены ВООБЩЕ, их больше никогда не будет. А ты ему предлагаешь сидеть там и что-то читать про них, ведь они во втором питоне есть. Зачем ему, например, в регулярных выражениях читать про флажок re.ASCII и re.UNICODE, если первый практически никогда не используется (в 99 случаях), а второй вообще не нужен, потому что он только для второго питона актуален. Он всё равно рано или поздно будет на третьем и выше питоне писать, зачем ему эти флажки устаревшие учить?

    Уже сейчас добавили интерполяцию строк
    f'abcd {name}'
    во втором питоне даже зачатков к этому не было. И ты ему говоришь: "Не надо про интерполяцию читать, не надо ею пользоваться. Пользуйся лучше каким-нибудь древним инструментом, который и десятой части этих функций не реализует." С какой стати?
  • Стоит ли изучать GoLang вместе с изучением алгоритмов?

    @abcd0x00
    Gizmothron:
    А при чем здесь мода?

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

    Совет изучать Python 3.x - глупость.
    Эта версия до сих пор мало распространена.

    Вообще-то, эта версия - продолежние второй версии, а после третьей будет и четвёртая уже скоро. Да, они не совместимы, но они несовместимы только потому, что вторая версия довольно плоха и её пришлось очень обильно переделывать.
  • Как выполнять запрос каждые n секунд?

    @abcd0x00
    Каждые 3 секунды не часто?

    Каждую секунду на такие сайты заходит несколько тысяч пользователей.
  • Как выполнять запрос каждые n секунд?

    @abcd0x00
    /1 можно и не добавлять, так как * * * * * работает с минимально возможным интервалом.
  • Как правильно обращаться к элементам списка?

    @abcd0x00
    Скобки у while тоже не нужны. Это же питон.
  • Какую литру по многопоточному программированию на Си посоветуете?

    @abcd0x00
    Егор Марчук:
    А вообще K&R лучше всего.

    В K&R2 нет про многопоточность, потому что это внешняя тема, не относящаяся к языку.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Лови готовый. Grep на стероидах, написанный на Go.

    Какой-то там ужас даже в плане Go. Ты заметил, что там нет ни одного интерфейса, а ошибки он выводит через fmt.Println() вызывая вручную метод Error()?

    Вот это тот случай, когда главное чтобы работало, а в код никто не должен смотреть. И самое главное - зачем он лезет этой программой в сеть, если для этого есть netcat, которая может в том числе и по udp принимать (чего нет у него)? Если тебе нужно грепать с сети, сцепи через канал grep с netcat, не надо в grep засовывать несвойственный для неё функционал.

    А для чтения он написал что-то наподобие getline(), которая должна уже быть в библиотеке. О том и речь: используя только стандартную библиотеку, прочитай строку из консоли. Это есть в C, это есть в C++, это есть в Python, это есть даже в Erlang (который вы тут назвали неразвитым). Это обычное средство.

    1> io:get_line([]).
    abc  def  ghi
    "abc  def  ghi\n"
    2>


    В Go же это надо писать.

    bamaz:
    Как-то пришло ко мне на работу 2 начинающих программиста.

    Один - полная копия вас.

    Очень много букв в том, что можно было бы выразить одним предложением. Это признак гуманитария. А к гуманитарию никто не мог прийти, потому что он сам никуда прийти не может.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Пример
    package main
    
    import "fmt"
    
    type A struct {
    	n int
    }
    
    type B struct {
    	A
    	s string
    }
    
    func (self A) F() string {
    	return "f"
    }
    
    func (self B) G() string {
    	return "g"
    }
    
    func main() {
    	var b B
    	
    	b.n = 1
    	b.s = "a"
      
    	fmt.Printf("Test %v %v %v %v\n", b.n, b.s, b.F(), b.G())
    }


    Вывод
    [guest@localhost go]$ go run inh.go 
    Test 1 a f g
    [guest@localhost go]$




    А теперь, внимание, вопрос: сделай так, чтобы переменная b инициализировалась, как обычная структура - через одно присваивание.

    У меня он пишет
    [guest@localhost go]$ go run inh.go 
    # command-line-arguments
    ./inh.go:25: cannot use 1 (type int) as type A in field value
    [guest@localhost go]$


    Казалось бы, почему нельзя использовать конструкцию
    b = B{1, "a"}
    А это обычное явление для Go - он просто кривой. И такая кривизна там повсюду, это не единственное место.

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

    Если свои классы не пишешь, то ты их писать и не умеешь. Тебе даже сложно приготовить среду для себя, ты ищешь, кто бы тебе принёс на блюдечке классы. Вот в этом всё твоё программирование. У тебя и программ своих нет. Тебе какую go fmt дадут, ту ты и будешь юзать, потому что свою написать не можешь.

    Даже не вникал. Давай, ты свои зачеты/экзамены сам будешь решать.

    Там нет ничего сложного, даже я на Go уже понял, как это сделать, но работать это всё равно будет через одно место, так как надо помнить, что можно сразу инициализировать, а что - нет.

    Мне так удобнее.

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

    @abcd0x00
    spotifi:

    Твой код
    type A struct {
      aaa int
    }
    
    type B struct {
      A
      bbb string
    }
    
    var z B
      
    z.aaa = 5
    z.bbb = "aaa"



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

    А потом с людей всё это измени на машины (ты же не должен для машин всё заново писать).

    Хорошие пояснения, почему в Go так, а не иначе по сравнению с другими языками

    Это я читал давно, рассуждения в плане "нужно отказаться от ООП, не так уж оно и хорошо". Они отказались от ООП потому, что на его разработку нужно много времени. Кстати, Rust не отказывался от ООП, исключений и так далее, потому что им не жалко на это времени. Лучше один раз хорошо написать, чтобы потом не доделывать.

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

    А ты видео не смотрел, где у Пайка спрашивают, как обрабатывать ошибки, если код становится чуть посложнее? Они там у него спросили, как бы всё проверить сразу, а не писать на каждую проверку if, и он им там предложил структуру создать, которая включает ошибки и накапливает результат (имеет побочный эффект). В общем, посмотри, там есть где посмеяться.

    Мне вот, программировавшему много лет на языках

    Когда программу собираешься писать? Вроде много лет пишешь, а программ нет.

    Я помню как прёт от программирование в начале изучения. Какое чувство, что можешь перевернуть мир.

    Ну, оно у тебя не задалось - ты пошёл на работу, которая съедает всё время, где творчество не нужно. Можно с важным видом ходить только и говорить, что программировал N лет.

    И те, кто придумали все эти линтеры и пр. - придумали их не с бухты барахты.

    Но ты-то не придумал линтер, ты пользуешься чужим линтером. Своих программ у тебя нет и не будет. Для этого нужен опыт, а для опыта нужно время. А ты его вбухиваешь в чужие дела. Поэтому ты никогда не будешь слитно писать. А уж говорить о своём браузере тем более не приходится, для этого не только опыт нужен, но и большое количество времени на саму разработку. А у тебя нет ни того, ни другого. Как ты думал, у тебя само собой появится что-нибудь?

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

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

    Ты не понял идею. Он и не должен настраиваться.

    Программа должна настраиваться по максимуму. Максимальная параметризация должна быть, чтобы можно было настроить всё и про всё. Тогда она становится достаточно гибкой для встраивания во всевозможные системы. Ну, давай, подай на go fmt по каналу исходник так, чтобы на выходе (в поток вывода) он оттранслировался таким образом, чтобы отступ был двухпробельный. Сначала табуляцию в два пробела, а потом два пробела в табуляцию. Ведь даже такое простое действие не сделаешь.

    С другой стороны, возьми awk - вот где мастерство. Первая буква - это Ахо (мастер грамматик), третья буква - Керниган (мастер ясности). Awk открыт во все стороны, всё открыто ко всему, поэтому где бы ты его не применял, он везде подходит - как универсальный ключ от всех замков.