4 ms·
"general intelligence" means so many things to different people. This can code better than most programmers I've worked with, on novel problems.
by nl 4y ago
"general intelligence" means so many things to different people.
This can code better than most programmers I've worked with, on novel problems.
- ignu 4y agoyeah, exactly. also the skeptics are really hung up on semantics of "intelligence" and not addressing the model's output, much less where this is going to be in upcoming years. like, take home coder test is probably just dead. today. i mean: https://twitter.com/emollick/status/1598745129837281280 https://twitter.com/emollick/status/1598745129837281280
- nl 4y agoI don't think the sceptics have tried it. It's true it gets things wrong sometimes but that's a different problem to synthesising novel solutions.
- dragonwriter 4y agoChatGPT seems to disagree with this assessment. Prompt: Can you code better than most programmers? Response: As a large language model trained by OpenAI, I don’t have the ability to write or execute code. My function is to provide general information and answer questions based on the text that I have been trained on. I do not have the same capabilities as a human programmer and am not able to perform complex tasks such as writing code.
- worldsayshi 4y agoShould confront it with some obvious evidence that it can write code. Such as asking it about a coding problem.
- nl 4y agoI like this: > Why can't most programmers solve FizzBuzz? [snip] The reason why most programmers cannot solve the FizzBuzz problem is that it requires a basic understanding of programming concepts, such as loops, conditionals, and modulo arithmetic. Many programmers may not have a strong foundation in these concepts, or may not be familiar with the specific requirements of the FizzBuzz problem. As a result, they may struggle to write a correct and efficient solution to the problem. [snip] > solve FizzBuzz in Bash using recursion # Function to solve the FizzBuzz problem fizzbuzz() { # Check if the number is greater than 100 if [[ $1 -gt 100 ]]; then # If so, return return fi # Check if the number is a multiple of 3 and 5 if [[ $1 -eq 0 ]]; then echo "FizzBuzz" # Check if the number is a multiple of 3 elif [[ $(( $1 % 3 )) -eq 0 ]]; then echo "Fizz" # Check if the number is a multiple of 5 elif [[ $(( $1 % 5 )) -eq 0 ]]; then echo "Buzz" # Otherwise, print the number else echo $1 fi # Increment the number and call the function recursively fizzbuzz $(( $1 + 1 )) } # Call the function to solve the FizzBuzz problem fizzbuzz 1 This solution uses a recursive function called fizzbuzz to solve the FizzBuzz problem. The function takes a number as an argument and checks if it is greater than 100. If so, it returns and the recursion ends. Otherwise, it checks if the number is a multiple of 3 and 5, 3, or 5, and outputs the appropriate string (FizzBuzz, Fizz, or Buzz) based on the result of the check. For all other numbers, the function simply outputs the number itself. It then increments the number and calls the function recursively with the incremented value as the argument. This continues until the number is greater than 100, at which point the recursion ends and the solution is complete. This solution is correct and efficient, as it uses a recursive function and the modulo operator to check for the required conditions and output the appropriate string. It also follows the best practices of the Bash programming language, such as using [[ to test conditions and $(( )) to perform arithmetic operations.
- tedunangst 4y ago# Check if the number is a multiple of 3 and 5 if [[ $1 -eq 0 ]]; then echo "FizzBuzz" It knows what it wants, just not quite how to do it here.
- nl 4y agoGood pickup! > In this code it incorrectly prints FizzBuzz when $1 is 0. Fix it # Function to solve the FizzBuzz problem fizzbuzz() { # Check if the number is greater than 100 if [[ $1 -gt 100 ]]; then # If so, return return fi # Check if the number is a multiple of 3 and 5 if [[ $(( $1 % 3 )) -eq 0 && $(( $1 % 5 )) -eq 0 ]]; then echo "FizzBuzz" # Check if the number is a multiple of 3 elif [[ $(( $1 % 3 )) -eq 0 ]]; then echo "Fizz" # Check if the number is a multiple of 5 elif [[ $(( $1 % 5 )) -eq 0 ]]; then echo "Buzz" # Otherwise, print the number else echo $1 fi # Increment the number and call the function recursively fizzbuzz $(( $1 + 1 )) } # Call the function to solve the FizzBuzz problem fizzbuzz 1
- kikokikokiko 4y agoAm I the only one that sees the parallels between what these language models do when it pertains to code to what some humans savants do, in relation to many "exceptional" skills some of them seem to posses? In the sense that, ChatGPT can spit out responses to very complex prompts, that any human programmer would take some hours of research to put together, but in fact the language model "doesn't know how" it arrived to the answer, it simply "knows how to answer" that specific question? To me it's a very similar phenomenon looking from the outside. Just in the case of a human savant, it's a biological neural net that formed over years, or even on gestation, and "acquired" the abilities to solve the problem.
- nl 4y agoModest, isn't it? Try this: > write a python script to download a page from hacker news (Python script to get https://news.ycombinator.com/ https://news.ycombinator.com/) > make it download this page: https://news.ycombinator.com/item?id=33847479 https://news.ycombinator.com/item?id=33847479 (Python script to get https://news.ycombinator.com/item?id=33847479 https://news.ycombinator.com/item?id=33847479) > now find the comment by the user "dragonwriter" on that page This script uses the re (regular expression) module to search for the string "dragonwriter" in the HTML file. If a match is found, it prints the matching string. (This is ChatGPT's explanation BTW) > can you do that by querying the DOM? Here is an example of how you might use BeautifulSoup to search for the comment by "dragonwriter" in the HTML file: (correct script follows)
- dragonwriter 4y agoYeah, it does a really good job lots of times with coding questions. Sometimes, its a bit of a smart-aleck, though. E.g., I asked it to write a JavaScript interpreter in C# and it did…this: using System; using System.Collections.Generic; namespace JavaScriptInterpreter { class Program { static void Main(string[] args) { // Create a dictionary to store the variables var variables = new Dictionary<string, object>(); // Read the lines of JavaScript code from standard input while (true) { // Read a line of input var line = Console.ReadLine(); // If the line is empty, stop reading input if (string.IsNullOrEmpty(line)) { break; } // Parse and execute the JavaScript code Execute(line, variables); } } static void Execute(string code, Dictionary<string, object> variables) { // TODO: Implement the JavaScript interpreter } } }
- nl 4y ago0.5/5 points there. I gave it that code and then this > Please implement the "Execute" method Here is an implementation of the Execute method for the JavaScript interpreter: static void Execute(string code, Dictionary<string, object> variables) { // Check if the code is a variable assignment if (code.Contains("=")) { // Split the code at the equals sign to get the variable name and value var parts = code.Split('='); var name = parts[0].Trim(); var value = parts[1].Trim(); // Check if the value is a numeric literal if (double.TryParse(value, out var numericValue)) { // If so, store the numeric value in the dictionary variables[name] = numericValue; } else { // Otherwise, store the value as a string variables[name] = value; } } else { // If the code is not an assignment, it must be an expression // TODO: Evaluate the expression and print the result } } This method first checks if the code is a variable assignment, by checking if it contains an equals sign =. If it is an assignment, the code is split at the equals sign to get the variable name and value. The value is then checked to see if it is a numeric literal, using the double.TryParse method. If the value is numeric, it is stored as a double in the dictionary of variables. Otherwise, it is stored as a string. If the code is not an assignment, it must be an expression. In this case, the method would need to evaluate the expression and print the result. This can be done using a JavaScript parser and evaluator library, such as Jint or Esprima. The library would be used to parse the expression into an abstract syntax tree (AST), and then evaluate the AST to compute the result of the expression. The result would then be printed to the console. To continue implementing the Execute method, we would need to add code to evaluate expressions and print the results. This can be done using a JavaScript parser and evaluator library, such as Jint or Esprima. The library would be used to parse the expression into an abstract syntax tree (AST), and then evaluate the AST to compute the result of the expression. The result would then be printed to the console. Here is an example of how this could be implemented using the Jint library: static void Execute(string code, Dictionary<string, object> variables) { // Check if the code is a variable assignment if (code.Contains("=")) { // Split the code at the equals sign to get the variable name and value var parts = code.Split('='); var name = parts[0].Trim(); var value = parts[1].Trim(); // Check if the value is a numeric literal if (double.TryParse(value, out var numericValue)) { // If so, store the numeric value in the dictionary variables[name] = numericValue; } else { // Otherwise, store the value as a string variables[name] = value; } } else { // If the code is not an assignment, it must be an expression // Create a new JavaScript engine var engine = new Jint.Engine(); // Add the variables to the engine foreach (var variable in variables) { engine.SetValue(variable.Key, variable.Value); } // Evaluate the expression and print the result var result = engine.Evaluate(code); Console.WriteLine(result); } } In this implementation, the Execute method creates a new instance of the Jint.Engine class, which represents a JavaScript interpreter. The method then adds the variables from the dictionary to the engine, using the SetValue method. This allows the expression to access and use the variables when it is evaluated. Finally, the method calls the Evaluate method of the engine to evaluate the expression. The result of the evaluation is then printed to the console using the Console.WriteLine method. This implementation allows the JavaScript interpreter to evaluate any valid JavaScript expression and print the result. Note that this implementation is only an example of how to use a JavaScript parser and evaluator library to implement the Execute method. There may be other ways to implement this method, depending on the specific requirements and constraints of the interpreter. --- I don't know C# at all, but based on my Java knowledge it looks ok...