90% того, чтобы было написано для веба в ближайшие 5 лет станет никому ненужным хламом, просто нагромождением какой-то логической массы. Это обойдет стороной, может, только некоторые хорошо поддерживаемые системы.
Так что, ниже сказали точно, самое долговечное — это временное.
Если Вам проект нужен даже временно или если просто нравится программировать, делайте, программируйте этот проект. Какой-то собственный рост все равно будет в качестве отдачи, даже если Вы не очень качественно программируете. В конце концов взгляните на программирование как на творчество. И да, ваш код в основном интересен только вам. Хорошему программисту ваш код не нужен, а новичок будет также проходить все этапы как и вы, и ваш код совершенно не интересен не программистам.
Если углубиться, то с точки зрения качественного низкоуровневого программирования или с точки зрения «академического программирования» вообще, по примерной оценки 70% программ на высокоуровневых языках — это все такая же масса недоделок, работающих кое-как с нарушением элементарных стандартов.
1) Автор недооценивает себя. Если вся история правда, то автор очень опытный человек.
2) Автор переоценивает уровень столичных компаний. Тут какая-то психологическая трудность.
Нам всегда кажется, что вот там вот люди опытнее, прогрессивнее, умнее, образованнее. Столица же. Заблуждение.
Вы слишком уж углубились.
Мы часто, когда говорим об ООП, употребляем слово «модель», что в принципе — извините за такую поэзию — есть застывший метод, и, кстати, (наоборот тоже — модель — метод в динамике). Т.е. в общем и целом мы в праве говорить и говорим, что ООП — это метод программирования.
И теперь конкретный пример: человек открывает учебник по ООП и видит функцию обёрнутую в класс, а ему говорят, что это метод. А почему метод?
Почему не функция класса? Зачем так сужать понятие метода?
Надо мне было добавить слово «конкретно» или «именно» в русском.
Тут, думаю, все равно, в каком языке.
Вы правы, проблема не новая, но есть общеупотребительные термины, собственно, — это даже не термины, а какие-то глубоко устоявшиеся понятия. Я не зря привел как пример именно «метод», так как это что-то более широкое в восприятии любого человека независимо от специальности.
Дело не в русском языке. Есть глобальные проблемы классификации, упорядочивания, описания научной информации, речь о терминологии. В программировании очень серьезные проблемы с этим. Налицо проблема многозначности терминологии, смешения понятий, подмены исходных значений. Очень много трансформированных лексем.
Это порождает некий хаос и недопонимание между людьми, работающими в разных областях.
Конкретно с ООП все вообще очень неопределенно: тот же метод — фактически функция.
Обозвать это методом мог только человек, который слабо понимает разницу между алгоритмом, методом и принципом.
Применительно к программированию, вероятно, вина переводчика. Метод надо было переводить совершенно по-другому, так как то, что в русском языке понимается под методом — совершенно не отражает то, что понимается под этим программистами ООП.
Лингвистика — молодая наука. В целом — это попытка создать промежуточную дисциплину между филологией и математикой (тут правда еще надо о психологии и психолингвистике вспомнить).
Некоторые результаты эта наука уже дала, правда, часть достижений позаимствовала из математики, часть из филологии, а часть вообще из информатики — компиляция. Результаты в основном касаются обработки текстов (и результаты, конечно неплохие, кто спорит), но дальше, вернее, в настоящее время, свою гуманитарную основу, которая, к слову сказать, всегда в ней была выражена слабо, растеряла практически окончательно… но некоторые высказывания относительно исследования речи режут, очень сильно режут слух.
«Второй способ изучения языка нужен для того, чтобы понять, как он устроен. Вторая цель для лингвистики является гораздо более важной и в основном лингвисты занимаются этой проблематикой».
Гнать «структуралистов» поганой метлой из филологии. Слава богу, что кто-то умный в министерстве образования СССР догадался сделать им отдельный факультет.
Решил немного поиграть с задачей из статьи.
x1x2 or x2x3 or x1x3, наверное, можно так представить по закону де Моргана:
not( not x1x2 not x2x3 not x1x3 )
А это выражение в свою очередь в качестве (точно не уверен, верно ли)
(x1x2 xor 1)(x2x3 xor 1)(x1x3 xor 1)xor 1
Дальше раскрыть скобки (тут нужно вспомнить про идемпотентность, о которой говорил Кирсанов в лекции).
(x1x2x3 xor x1x2 xor x2x3 xor 1)(x1x3 xor 1) xor 1
x1x2x3 xor x1x2x3 xor x1x2x3 xor x1x2 xor x1x2x3 xor x2x3 xor x1x3
4 позиции сокращаются, остается
x1x2 xor x2x3 xor x1x3, что равно полиному в статье.
Да, точно. Перечитал. Спасибо.
Про модельный пример не могу дать однозначного ответа. Нужен ли — зависит, вероятно, от того, на какую аудиторию рассчитан материал. Вообще — легче один разу увидеть, чем 100 раз услышать :).
Если алгоритм — не военная тайна, то можно дать какую-то модель :)
С описанием пока не очень понятно:
т.е. для n = 7 имеем 7 битов, сгенерированных случайно, допустим: 0101101,
делим. (массивы изначально пустые?! Это был риторический вопрос), получаем P0=[0,0,0], P1[1,1,1,1]
@ все элементы, которым сопоставлены нули заносятся в массив P0, остальные в массив P1@
Перемешиваем… и тут вопрос: что перемешиваем каждый массив в отдельности?
Но там и так все значения одинаковые. Или мы перемешиваем индексы?
Сказанное мной ниже в качестве предположения.
Классическая математика оперирует объектами или реально существующими, или абстрактными, т.е. занимается именно исчислением объектов, и тут на помощь приходит программирование, — операндов.
Не знаю правильно ли будет сказано — булева алгебра — скажу луше — абстрактная — смещает акцент от исчисления оперндов к исчислению операторов.
Далее, снова в качестве предположения, полином Жегалкина может сократить проведение теста над длинным формальным высказыванием на предмет его истинности. Делаю это утверждению из того, чтоб было сказано про единственность таблицы истинности для одной функции. А из этого делаю вывод, что можно использовать полином для составления «тестов истинности» логики программ.
Жаль, все-таки, что нет описания алгоритма в виде: шаг 1, шаг 2, с кратким описанием данных шагов.
Видимо, самое трудное в алгоритмах — это их описание.
Так что, ниже сказали точно, самое долговечное — это временное.
Если Вам проект нужен даже временно или если просто нравится программировать, делайте, программируйте этот проект. Какой-то собственный рост все равно будет в качестве отдачи, даже если Вы не очень качественно программируете. В конце концов взгляните на программирование как на творчество. И да, ваш код в основном интересен только вам. Хорошему программисту ваш код не нужен, а новичок будет также проходить все этапы как и вы, и ваш код совершенно не интересен не программистам.
Если углубиться, то с точки зрения качественного низкоуровневого программирования или с точки зрения «академического программирования» вообще, по примерной оценки 70% программ на высокоуровневых языках — это все такая же масса недоделок, работающих кое-как с нарушением элементарных стандартов.
Что будет если выстрелить в ЦОД из сильной электромагнитной пушки?
2) Автор переоценивает уровень столичных компаний. Тут какая-то психологическая трудность.
Нам всегда кажется, что вот там вот люди опытнее, прогрессивнее, умнее, образованнее. Столица же. Заблуждение.
P.S. Касательно PHP: не раскрыта тема священной коровы — ООП-секты =)
И оно кратко и полно отражает то, что происходит с переменной или экземпляром класса.
Мы часто, когда говорим об ООП, употребляем слово «модель», что в принципе — извините за такую поэзию — есть застывший метод, и, кстати, (наоборот тоже — модель — метод в динамике). Т.е. в общем и целом мы в праве говорить и говорим, что ООП — это метод программирования.
И теперь конкретный пример: человек открывает учебник по ООП и видит функцию обёрнутую в класс, а ему говорят, что это метод. А почему метод?
Почему не функция класса? Зачем так сужать понятие метода?
Тут, думаю, все равно, в каком языке.
Вы правы, проблема не новая, но есть общеупотребительные термины, собственно, — это даже не термины, а какие-то глубоко устоявшиеся понятия. Я не зря привел как пример именно «метод», так как это что-то более широкое в восприятии любого человека независимо от специальности.
Это порождает некий хаос и недопонимание между людьми, работающими в разных областях.
Конкретно с ООП все вообще очень неопределенно: тот же метод — фактически функция.
Обозвать это методом мог только человек, который слабо понимает разницу между алгоритмом, методом и принципом.
Применительно к программированию, вероятно, вина переводчика. Метод надо было переводить совершенно по-другому, так как то, что в русском языке понимается под методом — совершенно не отражает то, что понимается под этим программистами ООП.
Некоторые результаты эта наука уже дала, правда, часть достижений позаимствовала из математики, часть из филологии, а часть вообще из информатики — компиляция. Результаты в основном касаются обработки текстов (и результаты, конечно неплохие, кто спорит), но дальше, вернее, в настоящее время, свою гуманитарную основу, которая, к слову сказать, всегда в ней была выражена слабо, растеряла практически окончательно… но некоторые высказывания относительно исследования речи режут, очень сильно режут слух.
Гнать «структуралистов» поганой метлой из филологии. Слава богу, что кто-то умный в министерстве образования СССР догадался сделать им отдельный факультет.
x1x2 or x2x3 or x1x3, наверное, можно так представить по закону де Моргана:
not( not x1x2 not x2x3 not x1x3 )
А это выражение в свою очередь в качестве (точно не уверен, верно ли)
(x1x2 xor 1)(x2x3 xor 1)(x1x3 xor 1)xor 1
Дальше раскрыть скобки (тут нужно вспомнить про идемпотентность, о которой говорил Кирсанов в лекции).
(x1x2x3 xor x1x2 xor x2x3 xor 1)(x1x3 xor 1) xor 1
x1x2x3 xor x1x2x3 xor x1x2x3 xor x1x2 xor x1x2x3 xor x2x3 xor x1x3
4 позиции сокращаются, остается
x1x2 xor x2x3 xor x1x3, что равно полиному в статье.
Про модельный пример не могу дать однозначного ответа. Нужен ли — зависит, вероятно, от того, на какую аудиторию рассчитан материал. Вообще — легче один разу увидеть, чем 100 раз услышать :).
Если алгоритм — не военная тайна, то можно дать какую-то модель :)
т.е. для n = 7 имеем 7 битов, сгенерированных случайно, допустим: 0101101,
делим. (массивы изначально пустые?! Это был риторический вопрос), получаем P0=[0,0,0], P1[1,1,1,1]
@ все элементы, которым сопоставлены нули заносятся в массив P0, остальные в массив P1@
Перемешиваем… и тут вопрос: что перемешиваем каждый массив в отдельности?
Но там и так все значения одинаковые. Или мы перемешиваем индексы?
http://www.franz-hermann.com/pdf/statji/Permutation.pdf
Каждая перестановка получется прибавлением к 3-ке в степени 2, 3-ки или последовательности троек в разных степенях.
Классическая математика оперирует объектами или реально существующими, или абстрактными, т.е. занимается именно исчислением объектов, и тут на помощь приходит программирование, — операндов.
Не знаю правильно ли будет сказано — булева алгебра — скажу луше — абстрактная — смещает акцент от исчисления оперндов к исчислению операторов.
Далее, снова в качестве предположения, полином Жегалкина может сократить проведение теста над длинным формальным высказыванием на предмет его истинности. Делаю это утверждению из того, чтоб было сказано про единственность таблицы истинности для одной функции. А из этого делаю вывод, что можно использовать полином для составления «тестов истинности» логики программ.
Вот это видео еще в своем время пролило лучик света в мою гуманитарную голову:
https://www.youtube.com/watch?v=UWy4--GyO4c
Спасибо. Перечитаю еще потом.
Видимо, самое трудное в алгоритмах — это их описание.